为什么我看到ELB健康检查加倍?

Mik*_*gan 4 amazon-web-services amazon-elb

我的ELB具有以下配置:

  • 可用区:ap-southeast-1a和ap-southeast-1b
  • 跨区域负载平衡:已启用
  • 连接设置:空闲超时:300秒

健康检查详细信息:

  • Ping目标HTTPS:443 /登录
  • 超时15秒
  • 间隔20秒
  • 不健康阈值5
  • 健康阈值3

侦听器详细信息:

端口443上的TCP,转发到实例端口443,nginx在其中侦听并执行ssl终止。

我在nginx日志中不断看到双重健康检查呼叫。反过来,同一时刻,至少是同一秒。

为什么?

Mic*_*bot 7

在多个可用区中通信量很大的地方启动的ELB 实际上将始终为每个提供该ELB的可用区具有至少一个活动的ELB节点,无论该可用区中是否存在任何实例或运行状况良好。

如果检查传入的运行状况检查请求的源IP地址,则应该看到它们有所不同。特别是在启用跨区域负载平衡的情况下,您应该在每个 ELB节点的每个间隔处看到一个运行状况检查,因为每个ELB节点都会向每个实例发送运行状况检查。

刚才从我的日志中获取的示例:

Jul  1 19:22:25 localhost 172.17.0.251:4076 ELB-HealthChecker/1.0 "GET / HTTP/1.1" 
Jul  1 19:22:25 localhost 172.17.10.98:42667 ELB-HealthChecker/1.0 "GET / HTTP/1.1" 
Run Code Online (Sandbox Code Playgroud)

请注意,这172.17.*.*是在我的VPC中,并且这两个IP地址在我的两个“公共”子网中的范围内...但是它们是什么?这些是ELB节点的内部专用IP地址。

请注意,ELB“节点”是我可能刚刚或不是刚刚组成的一个术语,但是它描述了EC2不可见地配置为充当弹性负载平衡器的虚拟机。(显然,ELB已部署在由ELB基础架构控制的EC2实例上,并且这些绝对在您的AWS控制台中不可见)。

您无需为这些机器单独付款,因此通常不必担心有多少台机器。它们会随着通信量负载自动进行缩放-轶事观察表明,节点的实例类可能是动态的,节点的数量也是如此。理论上,每个节点最多可以支持与后端服务器的64K连接,尽管在达到这样的数字之前可能还会出现其他容量限制。

您可以通过使用dig实用程序针对ELB主机名,随时了解ELB群集中有多少个节点,如控制台所示。

$ dig xxxxxxxx-yyyyyyyy.us-west-2.elb.amazonaws.com

; <<>> DiG 9.8.1-P1 <<>> xxxxxxxx-yyyyyyyy.us-west-2.elb.amazonaws.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38905
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 13, ADDITIONAL: 9

;; QUESTION SECTION:
;xxxxxxxx-yyyyyyyy.us-west-2.elb.amazonaws.com. IN A

;; ANSWER SECTION:
xxxxxxxx-yyyyyyyy.us-west-2.elb.amazonaws.com. 59 IN A 54.149.x.x
xxxxxxxx-yyyyyyyy.us-west-2.elb.amazonaws.com. 59 IN A 54.201.x.x
Run Code Online (Sandbox Code Playgroud)

两个A记录的答案大概意味着两个节点。虽然AWS可以使用地址转换和其他网络黑客来伪装单个地址后面的多台计算机,或者伪装多个地址后面的一台计算机,但观察结果表明,您为响应DNS查询而收到的答案数量为您提供了当前的节点数量为您的ELB部署。