2 个 FTP 服务器之间的负载平衡

2 个 FTP 服务器之间的负载平衡

我正在尝试在 2 台服务器之间平衡 ftp 负载。目前有 2 台服务器指向 ftp.domain.com,第二台服务器在技术上用于容错,但我想平衡 2 台服务器之间的流量。我该如何实现?我想制作一个简单的脚本,将用户从 ftp.domain 重定向到 01.ftp.domain 和 02.ftp.domain 等,但问题是 FTP 应用程序不读取页面,因此如果用户尝试登录 ftp.domain,它不会将他们重定向到任何地方。

答案1

要平衡服务器负载,您应该同时考虑命令和数据通道。要平衡命令通道负载,我建议您使用 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,而连接随后会重定向到 192.168.1.0/24 网络。您还应该在 中定义 NAT 转发iptables。有关执行此操作的说明,您可以在此处查看已接受的答案 (如何使用 iptables 进行端口转发?)。

要执行数据通道的负载平衡,您应该以 root 身份在终端中运行以下命令

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

这些设置适用于所谓的主动数据通道。有关被动数据通道情况下的设置和更详细的说明,请参阅本文 (https://gist.github.com/erkie/922996a2ec4125d79c7f8772cda328ce)。

相关内容