我使用直接路由模式。如何使用虚拟服务 IP (VIP) 将负载均衡服务提供给导向器 (DIR)?
当我尝试从 DIR 连接到 VIP 时,Linux(3.2.0)看到 VIP 绑定到本地接口并使用 VIP 本身作为源地址。
TCP转储:
08:47:51.573100 IP VIP.34762 > VIP.ssh: Flags [S]
根据 tcpdump,数据包没有被转发。但是 Ipvsadm 确实看到了一个额外的非活动连接。即使它曾是转发,这并不重要,因为真实服务器(RS)无法发送回复,因为它不知道将其发送到哪里(RS 已将 VIP 绑定到 lo 接口)。
恕我直言,解决方案是强制 DIR 永远不创建以 VIP 为源地址的数据包。连接到 VIP 时,它应该使用 DIR IP 作为源地址。
但是,另一个问题可能是 IPVS 没有监听环回接口。
# ip route get VIP
local VIP dev lo src VIP
我可以使用 iptables 重写数据包,但是感觉很像黑客行为。
短暂性脑缺血。