我正在尝试iptables用于负载平衡.我正在和我一起工作virtualbox.所有VM(debian)都在内部网络中,IP是静态的.我想将来自我的Web服务器(apache2)的请求与IP地址路由10.0.0.2:80到服务器的IP地址10.0.0.3:80和192.168.0.2:80另一个网络.网络构造如下:
网关进行IP转发,它有两个接口:eth0用于网络10.0.0.0和eth1网络192.168.0.0.然后有一个带IP地址的负载均衡器10.0.0.2.我试图设置这些规则,但它们不起作用:
iptables -t nat -A PREROUTING -p tcp --dport 80 -m state --state NEW -m statistic --mode nth --every 3 --packet 0 -j DNAT --to-destination 10.0.0.3:80
iptables -t nat -A PREROUTING -p tcp --dport 80 -m state --state NEW -m statistic --mode nth --every 3 --packet 1 -j DNAT --to-destination 192.168.0.2:80
Run Code Online (Sandbox Code Playgroud)
首先,因为在您的情况下,传入连接应该分布在两个服务器上,人们可能会期望与建议的解决方案类似的解决方案,但是--every 2,而不是--every 3工作.
但是,正如这个答案所暗示的那样,当nth模式成为statistic模块的一部分时(过去它是一个单独的模块),数据包计数器从全局一个修改为多个单独的模块,每个规则一个.
因此,以下应该有效:
iptables -t nat -A PREROUTING -p tcp --dport 80 -m state --state NEW -m statistic --mode nth --every 2 --packet 0 -j DNAT --to-destination 10.0.0.3:80
iptables -t nat -A PREROUTING -p tcp --dport 80 -m state --state NEW -m statistic --mode nth --every 1 --packet 0 -j DNAT --to-destination 192.168.0.2:80
Run Code Online (Sandbox Code Playgroud)
当然statistic,在第二条规则中没有实际需要使用该模块,但我已将其放在那里以供将来参考,以阐明如果传入连接分布在3个或更多服务器上,应如何构建规则而不仅仅是2.
| 归档时间: |
|
| 查看次数: |
7089 次 |
| 最近记录: |