为什么我的ELB有两个IP地址?怎么找到他们?

时间:2017-07-18 15:38:54

标签: amazon-web-services amazon-elb

我在 VPC上运行应用程序和经典内部负载均衡器。 它们中的每一个都与三个子网相关联,位于不同的可用区域,并且几乎每个子网都只指向一个实例(在我的情况下是 ECS 容器)。

但是在发出 nslookup 命令(nslookup internal-MYLB.us-east-1.elb.amazonaws.com

我可以看到输出:

Server:     10.xxx.xxx.37
Address:    10.xxx.xxx.37#53

Non-authoritative answer:
Name:   internal-MYLB.us-east-1.elb.amazonaws.com
Address: 10.xxx.xxx.187
Name:   internal-MYLB.us-east-1.elb.amazonaws.com
Address: 10.xxx.xxx.204

对于每个负载均衡器,它是经典或应用程序,两个IP地址与其域名相关联。

我只是想知道:

  1. 是否对应每个负载均衡器的两个负载均衡器节点? (也许我错过了,但我没有在他们的文档中找到这些信息)
  2. AWS 会系统地产生冗余吗?它是可配置的吗?
  3. 在UI中是否有某种方法可以查看这些IP地址(我在UI中找不到它们或使用aws elb describe-load-balancers
  4. 对于上下文,我们有一个远程合作伙伴,他只使用与负载均衡器关联的两个IP地址中的一个来解决问题,可能是由于某些重叠的子网范围导致的网络冲突,但我更喜欢确保我先看到的。

3 个答案:

答案 0 :(得分:4)

Elastic Load Balancer部分使用DNS在不同的可用区域之间分配负载。所以你的“单一”负载均衡器实际上就是它们中的一组。

AWS将在负载增加和减少时创建和销毁节点。因此,您不应直接使用ELB的IP地址。相反,您应该始终使用DNS CNAME来允许ELB分发流量。

UI中无法查看IP地址,实际上,您不应该关心它们。

如果遇到IP地址冲突,请确保您的VPC子网CIDR不与其他任何内容重叠,例如VPN。

答案 1 :(得分:3)

ELB是AWS提供的托管服务。在幕后,ELB由多个负载平衡器组成。当流量增加时,ELB会提出许多负载平衡器来处理流量。在另一个术语中,ELB autoscales。但问题是ELB本身不管理流量。它发生在DNS查找级别。 ELB的所有负载平衡器都在亚马逊的DNS服务上注册其IP地址。因此,对于不同的查询,亚马逊将返回不同的IP地址。这就是为什么ELB只有DNS名称而不是静态IP地址。

因此,当您执行 nslookup 时,它会显示ELB负载均衡器的IP地址。

答案 2 :(得分:1)

您无法控制这些节点的IP地址,因为节点可能会不时更改。但是,您可以控制IP地址类型。您可以阅读更多here

根据AWS Docs,(您可以阅读此文档以了解负载均衡器的工作原理)

  

为负载均衡器启用可用区时,Elastic Load Balancing会在可用区中创建负载均衡器节点。如果在可用区中注册实例但未启用可用区,则这些已注册的实例不会接收流量。