我正在尝试使用IPTables在相同的LAN内设置负载平衡(如果可能的话)。 我的想法是仿效我们的主要负载均衡器,但是在虚拟环境中,所有的服务器都是虚拟机。
有一个网关服务器,转发虚拟服务器和真实世界的stream量,我想使用该网关来平衡虚拟局域网内的一些stream量。
我的设置是:
在ServerB上有两个服务实例,监听端口60003和60004。
我的目标是能够打开从ServerA到GatewayServer的连接:60002,并以循环方式在端口60003和60004上平衡到ServerB。
我已经能够通过GateWay服务器从ServerA打开到ServerB的连接,但是连接总是通过端口60003到达ServerB,而从另一个60004不会到达ServerB。
我有这样的网关设置:
-A POSTROUTING -i eth2 -s 10.xy0/24 -p tcp --dport 60002 -j DNAT --to-destination 10.xy18-10.xy18:60003-60004 -A POSTROUTING -o eth2 -j MASQUERADE
在ServerB上嗅探我看到来自GatewayServer的数据包,但始终按照前面所述的方式将端口60003挂接。
任何想法?
您将需要检查作为内核运行的内核版本是否晚于2.6.11-rc1已经删除了您要使用的function。 要find你的内核版本使用uname例如
uname -r 2.6.32-71.el6.x86_64
从iptables手册页
在最高2.6.10的内核中,您可以添加多个“到”目标选项。 对于这些内核,如果通过地址范围或多个到目的地选项来指定多个目标地址,则在这些地址之间会发生一个简单的循环(一个接一个循环)负载均衡。 后来的内核(> = 2.6.11-rc1)不能再把NAT转换成多个范围。