Я пытаюсь сбалансировать загрузку ftp между 2 серверами. в настоящее время 2 сервера направлены на ftp.domain.com, второй сервер технически используется для обеспечения отказоустойчивости, но я хочу сбалансировать трафик между двумя серверами. Как я могу этого добиться? Я подумал о создании простого сценария, который перенаправлял бы пользователей с ftp.domain на 01.ftp.domain и 02.ftp.domain и т.д., но проблема в том, что приложения FTP не читают страницы, поэтому, если пользователь пытается войти в ftp.domain, он не перенаправит их никуда.
Чтобы сбалансировать нагрузку на серверы, вы должны учитывать как каналы команд, так и каналы данных. Для загрузки командного канала балансировки я предлагаю вам использовать 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).