gpt4 book ai didi

iptables - 使用iptables nth模式统计模块的简单负载均衡

转载 作者:行者123 更新时间:2023-12-05 09:22:21 26 4
gpt4 key购买 nike

我正在尝试使用 iptables 进行负载平衡。我正在使用 virtualbox。所有虚拟机 (debian) 都在内部网络中并且 IP 是静态的。我想将 IP 地址为 10.0.0.2:80 的 Web 服务器 (apache2) 的请求路由到服务器的 IP 地址 10.0.0.3:80192.168.0.2:80 在另一个网络上。网络构造如下:
网关做IP转发,它有两个接口(interface):eth0用于网络10.0.0.0eth1用于网络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

最佳答案

首先,因为在您的情况下,传入连接应该分布在 2 个服务器上,所以人们会期望一个与建议的解决方案类似的解决方案,但是使用 --every 2,而不是 --每 3,工作。

然而,作为this answer建议,当 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

当然,在第二条规则中实际上不需要使用 statistic 模块,但我将它放在那里以供将来引用,以便阐明如果传入连接将分布在 3 个或更多服务器上,而不仅仅是 2 个。

关于iptables - 使用iptables nth模式统计模块的简单负载均衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27378389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com