50% 的请求失败至一个主机

50% 的请求失败至一个主机

我遇到了一个奇怪的错误并且没有办法解决它。

我设置了 3 台虚拟机:LVS、RS1 和 RS2。RS1 和 RS2 运行一个简单的 php 网站。RS2 是 RS1 的精确副本,仅更改了 IP 地址。所有机器都连接到本地网络 ( 1.1.1.0/24)。这是我的ipvsadm配置:

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "0" > /proc/sys/net/ipv4/conf/all/send_redirects
echo "0" > /proc/sys/net/ipv4/conf/default/send_redirects
echo "0" > /proc/sys/net/ipv4/conf/eth0/send_redirects

LVS_IP=192.168.1.180
RS1_IP=1.1.1.2
RS2_IP=1.1.1.3
ipvsadm -A -t $LVS_IP:www -s rr         
ipvsadm -a -t $RS1_IP:www -r $RS1_IP:www -m -w 1
ipvsadm -a -t $RS2_IP:www -r $RS2_IP:www -m -w 2

运行links 1.1.1.2links 1.1.1.3显示相同的积极结果 - 我的网页内容。

但是,运行links 192.168.1.180(LVS 的外部 IP)会给我正确的结果……但只是每隔一次(50% 的请求)。似乎当 LVS 将请求轮询到 RS2 时,就没有响应。(links显示“正在建立连接……”然后什么也没发生)。

我该如何尝试调试此类问题?

答案1

您可以在可信赖的 的帮助下进行调试tcpdump。首先在出现问题的 realserver 上捕获数据包,如果没有立即发现明显错误,则将其与正常工作的 realserver 上的等效捕获进行比较。在某些时候,它们看起来会有所不同,因为行为不同;什么不同会非常有力地指引你正确的方向。数据包无法到达 realserver?负载均衡器上的防火墙问题。数据包无法从 realserver 返回?可能是传出防火墙问题,或者 realserver 的 web 服务器与其他服务器无法很好地协作。

相关内容