2014-07-23 2 views
1

내가 해결하려고하는 문제는 얼마나 많은 다른 EC2 인스턴스가 동일한 클러스터 /로드 밸런서를 사용하고 있는지를 인식하는로드 밸런싱 AWS 클러스터의 일부인 EC2 인스턴스 내에서 코드를 실행하는 것입니다.내 EC2 인스턴스가 연결된 AWS로드 밸런서를 말할 수 있습니까?

LoadBalancer의 이름이 주어지면 그 Loadbalancer와 연관된 EC2 인스턴스의 수를 알 수있는 다음 코드가 있습니다.

DescribeLoadBalancersResult dlbr = loadBalancingClient.describeLoadBalancers(); 
List<LoadBalancerDescription> lbds = dlbr.getLoadBalancerDescriptions(); 
for(LoadBalancerDescription lbd : lbds) 
{ 
    if(lbd.getDNSName().equalsIgnoreCase("MyLoadBalancer")) 
    { 
     System.out.println(lbd.getDNSName() + " has " + lbd.getInstances().size() + " instances") ; 
    } 
} 

잘 작동하고로드 밸런서 이름과 인스턴스 수가 인쇄됩니다

그러나 Loadbalancer 이름을 제공하지 않아도이 정보를 얻을 수 있는지 알고 싶습니다. 우리의 설치에서 EC2 인스턴스는 오직 하나의 Loadbalancer와 연결될 것이므로 EC2 인스턴스에서 Loadbalancer로가는 길은 다시 돌아갈 방법이 있습니까?

나는 모든 지역에서 모든로드 밸런서를 가져 오는 경로를 따라갈 수 있으며, EC2 인스턴스가 포함 된 경로를 찾을 때까지 반복하지만 더 쉬운 방법이있을 것이라고 생각했다.

답변

1

흥미로운 도전 과제 - 코드를 직접 생각해 봐야 겠지만 내 첫 반응은 AWS CLI를 사용하여 Java/C#에서 호출하는 것입니다.

당신은이 호출 할 수 있습니다 :

aws elb describe-load-balancers 

을 그리고있는 모든 ELB를에 대한 정보의 모든 방식을 얻고, 수 단순히 --query 필터를 호출하는 인스턴스의 인스턴스 ID에 의해 어쨌든 - 인스턴스가 다른 ELB에 합류 한 다른 친구를 찾으려고합니다. 그냥 그 ID 얻기 위해 내부 인스턴스 메타 데이터를 호출

http://169.254.169.254/latest/meta-data/instance-id 

또는 그들이 양산하고 ELB에 가입 할 때 있도록 인스턴스 AMI를 부트 스트랩하는 것입니다가는 또 다른 재미있는 방법을, 그들이 SimpleDB에 자신을 등록하거나 DynamoDB 테이블 우리는 웹 사이트 또는 소프트웨어 설치 등의 현재 재고를 유지하는 방법으로 항상이 작업을 수행합니다. 이렇게하면 "실행 중"상태인지 확인하여 목록을 유지할 수 있습니다.

편집 - 자동 스케일링 그룹에 ELB에 부착 된 정상 인스턴스를 식별하고 그 다음에 따라 행동 - 2015년 4월 13일

@MayoMan은 나뿐만 아니라 일부 현재 작업이의 hadto 메이크업의 사용을 그들. 정말 유용한 명령 줄 도구 인 'jq'를 발견했습니다. 당신은 또한 ELB에 직접 이러한 통화를 할 수 있지만, 여기에는 ASG 설명하는 것 :

aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names <ASG Name> | jq -r .AutoScalingGroups[0].Instances[0-3].InstanceId 
+1

이 실제로 내가 촬영 한 경로입니다, 내 EC2 인스턴스 :

aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names <ASG Name> | jq -r .AutoScalingGroups[0].Instances[0].HealthStatus 

또는 InstanceIds 스스로 나열을 해당 지역을 인식하고 그 지역에서 모든 ELB를 얻은 다음 ELB가 내 인스턴스의 일부가 될 때까지 모든 EC2 인스턴스를 필터링합니다. 나는이 일을 덜 복잡하게하는 방법이있을 것이라고 생각했습니다. 어쨌든 Thanksfor 회신 :) – MayoMan

관련 문제