我正试图在2台服务器之间平衡ftp。 目前有2个服务器指向ftp.domain.com,第二个服务器在技术上用于容错,但我想平衡2个服务器之间的stream量。 我怎样才能做到这一点? 我想制作一个简单的脚本,将用户从ftp.domainredirect到01.ftp.domain和02.ftp.domain等,但问题是,FTP应用程序不读取页面,所以如果用户试图login到ftp.domain它不会将它们redirect到任何地方。
为了平衡你的服务器,你应该考虑命令和数据通道。 要加载平衡命令通道我build议你使用HAProxy。 如果你使用它,你应该在/etc/haproxy/haproxy.cfg指定如下内容:
listen ftp-lb00 bind IP:21 mode tcp option tcplog balance leastconn server ftp-serv00 192.168.1.1:21 check server ftp-serv01 192.168.1.2:21 check
这里的IP是一个公共的ip,然后连接被redirect到192.168.1.0/24networking。 你也应该在你的iptables定义NAT转发。 有关这样做的说明,您可以在这里查看接受的答案( 如何使用iptables进行端口转发? )。
要执行数据通道的负载平衡,您应该在terminal中以根用户身份运行这些命令
iptables -A POSTROUTING -s 192.168.1.1/32 -o eth1 -j SNAT --to-source IP iptables -A POSTROUTING -s 192.168.1.2/32 -o eth1 -j SNAT --to-source IP
这些设置对于所谓的活动数据通道是有效的。 有关被动数据通道情况下的设置和更详细的说明,请参阅本文( http://ben.timby.com/?page_id=210 )。