Интересно, есть ли способ настроить бэкэнд по умолчанию в haproxy, чтобы он балансировал запросы между пулом бэкэнд-серверов (три в примере ниже), сохраняя бэкэнд по умолчанию в качестве аварийного переключения, только если три основных бэкэнда не работают.
Должно получиться примерно так:
server backend-0 10.10.10.0:3000 check
server backend-1 10.10.10.1:3100 check
server backend-2 10.10.10.2:3200 check
server backend-default 10.10.10.3:3300 check
Я пробовал установить weight 0
в backend-default, но это полностью удаляет сервер из алгоритма балансировки.
Вид - он называется «резервный»:
server backend-default 10.10.10.3:3300 check inter 5000 rise 1 fall 3 backup
Начиная с версии 1.1.17, можно указывать серверы резервного копирования. Эти серверы запрашиваются только тогда, когда другой сервер недоступен. Это может быть полезно только для обслуживания страницы обслуживания или определения одного активного и одного резервного сервера (редко используется в режиме TCP). Чтобы сделать сервер резервным, просто добавьте в его строку опцию «резервное копирование». Эти серверы также поддерживают файлы cookie, поэтому, если файл cookie указан для резервного сервера, клиенты, назначенные этому серверу, будут придерживаться его, даже когда другие вернутся. И наоборот, если такому серверу не назначен файл cookie, клиенты будут удалять свои файлы cookie (пустой файл cookie = удаление) и будут сбалансированы с другими серверами, когда они вернутся. Обратите внимание, что по умолчанию балансировка нагрузки между серверами резервного копирования отсутствует. Если имеется несколько серверов резервного копирования, второй будет использоваться только после смерти первого и так далее. Для принудительной балансировки нагрузки между серверами резервного копирования укажите параметр allbackups.