【问题标题】:Can I tell what AWS loadbalancer my EC2 instance is associated with?我可以告诉我的 EC2 实例与哪个 AWS 负载均衡器相关联吗?
【发布时间】:2015-04-14 00:48:40
【问题描述】:

我要解决的问题是如何让我的代码在作为负载平衡 AWS 集群的一部分的 EC2 实例中运行,以了解有多少其他 EC2 实例使用同一个集群/负载平衡器。

我有以下代码,当给定负载均衡器的名称时,它可以告诉我有多少 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") ;
    }
}

它工作正常并打印出负载均衡器名称和与之关联的实例数。

但是我想看看我是否可以在不提供负载均衡器名称的情况下获取此信息。在我们的设置中,一个 EC2 实例只会与一个负载均衡器相关联,那么有没有办法从 EC2 实例返回到负载均衡器?

我想我可以沿着从所有区域获取所有负载均衡器的路线,遍历它们直到找到包含我的 EC2 实例的路径,但我认为可能有更简单的方法?

【问题讨论】:

    标签: amazon-web-services


    【解决方案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
    

    或者另一种有趣的方法是引导您的实例 AMI,以便当它们生成并加入 ELB 时,它们会在 SimpleDB 或 DynamoDB 表中注册自己。我们一直这样做是为了保留当前网站清单或安装的软件等。因此,您将拥有一个列表,然后您可以通过检查“运行”状态来对其进行修剪。

    编辑 - 2015 年 4 月 13 日

    @MayoMan 我必须在当前的一些工作中使用它——识别自动缩放组中连接到 ELB 的健康实例,然后对它们采取行动。我发现'jq' 是一个非常有用的命令行工具。您也可以直接对 ELB 进行这些调用,但这里描述的是 ASG:

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

    或者列出 InstanceId 本身:

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

    【讨论】:

    • 这实际上是我采取的路线,我的 EC2 实例知道它的区域,并从中获取该区域中的所有 ELB,然后过滤所有 EC2 实例,直到找到我的 ELB实例是其中的一部分。我只是想可能有一种不那么复杂的方式来做到这一点。无论如何感谢您的回复:)
    • @MayoMan 您是否找到了不那么复杂的方式?这是什么?
    猜你喜欢
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    相关资源
    最近更新 更多