HAproxy — это серверное программное обеспечение для обеспечения высокой доступности и балансировки нагрузки для TCP- и HTTP-приложений посредством распределения входящих запросов на несколько обслуживающих серверов.
На начальной странице IIS переходим в пункт “Поддержка брандмауэра FTP” и выставляем диапазон портов для пассивных подключений, указываем IP адрес нашего сервера с HAproxy – Нажимаем “применить”:
и добавляем в конфигурацию строчки:
После чего перезапускаем службу HAproxy:
Для настройки отказоустойчивого FTP имеем настроенный сервер на Linux с установленной ролью HAproxy и два настроенных Windows Server с ролью IIS.
Публикация FTP на двух серверах
Добавляем FTP сайт на двух серверах с ролью IIS к одному и тому же физическому пути. Например: имеем два Windows Server 2019 с ролью IIS и файловый сервер с общим доступом к папке:- IP адреса: IIS1 – 10.15.59.13 и IIS2 – 10.15.59.14

Рисунок 1 – Добавление FTP сайта.

Рисунок 2 – Поддержка брандмауэра FTP.
Настройка конфигурации HAproxy
На Linux сервере с ролью HAproxy открываем конфигурацию любым удобным редактором:nano /etc/HAproxy/HAproxy.cfg
frontend ftp_frontend bind *:21 mode tcp option tcplog default_backend ftp_backend backend ftp_backend mode tcp balance roundrobin # или другой балансировочный алгоритм option tcplog server ftp1 10.15.59.13:21 check server ftp2 10.15.59.14:21 check backup frontend ftp_data_frontend bind *:50000-55000 # Порты для пассивного режима FTP mode tcp option tcplog default_backend ftp_data_backend backend ftp_data_backend mode tcp balance roundrobin option tcplog server ftp1_data 10.15.59.13 check port 21 server ftp2_data 10.15.59.14 check port 21 backup
systemctl restart haproxy.service
Теперь когда сервер IIS1 перестанет работать или перестанет быть доступным по порту 21, то автоматически будет осуществляется FTP-подключение на второй сервер IIS2