我有4个其他服务器机器前面的2个负载均衡器,每秒处理约5-6000个请求。 我注意到,每隔几分钟,负载平衡器就会连接到其中一台服务器。 作为连接总数的百分比,这当然是一个非常低的故障率,但是,他们是在同一个数据中心,我不明白为什么我会得到连接超时(60秒,fwiw)。
我设法得到一个数据包捕获其中一台服务器机器时,它看起来像SYN-ACK数据包没有到达负载平衡器。
19:33:51.023518 IP 10.36.213.2.58011 > 10.36.213.36.8005: Flags [S], seq 1726133855, win 5840, options [mss 1460,sackOK,TS val 14377140 ecr 0,nop,wscale 7], length 0 19:33:51.023534 IP 10.36.213.36.8005 > 10.36.213.2.58011: Flags [S.], seq 806746037, ack 1726133856, win 5792, options [mss 1460,sackOK,TS val 15334821 ecr 14377140,nop,wscale 7], length 0 19:33:54.026705 IP 10.36.213.2.58011 > 10.36.213.36.8005: Flags [S], seq 1726133855, win 5840, options [mss 1460,sackOK,TS val 14377440 ecr 0,nop,wscale 7], length 0 19:33:54.026712 IP 10.36.213.36.8005 > 10.36.213.2.58011: Flags [S.], seq 806746037, ack 1726133856, win 5792, options [mss 1460,sackOK,TS val 15335121 ecr 14377140,nop,wscale 7], length 0 19:33:54.620425 IP 10.36.213.36.8005 > 10.36.213.2.58011: Flags [S.], seq 806746037, ack 1726133856, win 5792, options [mss 1460,sackOK,TS val 15335181 ecr 14377140,nop,wscale 7], length 0 19:34:00.026709 IP 10.36.213.2.58011 > 10.36.213.36.8005: Flags [S], seq 1726133855, win 5840, options [mss 1460,sackOK,TS val 14378040 ecr 0,nop,wscale 7], length 0 19:34:00.026726 IP 10.36.213.36.8005 > 10.36.213.2.58011: Flags [S.], seq 806746037, ack 1726133856, win 5792, options [mss 1460,sackOK,TS val 15335721 ecr 14377140,nop,wscale 7], length 0 19:34:00.620436 IP 10.36.213.36.8005 > 10.36.213.2.58011: Flags [S.], seq 806746037, ack 1726133856, win 5792, options [mss 1460,sackOK,TS val 15335781 ecr 14377140,nop,wscale 7], length 0 19:34:12.620430 IP 10.36.213.36.8005 > 10.36.213.2.58011: Flags [S.], seq 806746037, ack 1726133856, win 5792, options [mss 1460,sackOK,TS val 15336981 ecr 14377140,nop,wscale 7], length 0 19:34:36.820432 IP 10.36.213.36.8005 > 10.36.213.2.58011: Flags [S.], seq 806746037, ack 1726133856, win 5792, options [mss 1460,sackOK,TS val 15339401 ecr 14377140,nop,wscale 7], length 0 19:35:24.820433 IP 10.36.213.36.8005 > 10.36.213.2.58011: Flags [S.], seq 806746037, ack 1726133856, win 5792, options [mss 1460,sackOK,TS val 15344201 ecr 14377140,nop,wscale 7], length 0
在这个捕获中,10.36.213.2是负载平衡器,10.36.213.36是服务器机器。
我的猜测是,所有这些数据包随机丢弃的可能性很低,更可能以某种方式被拒绝。 所以,问题是:我怎么才能找出为什么这些数据包没有通过?
我看到一个类似的问题(当时是Windows),服务器正在对TCP数据包大小进行一些愚蠢的自动调整,Cisco Load Ballancers不支持更大的数据包大小,因此他们拒绝了这些问题。 我不知道如果* nix支持这种愚蠢的,但如果这样做可能是问题。