у меня есть haproxy.cfg
который динамически обновляется при добавлении новых серверов, однако в то время, когда добавляется новый сервер, сервер все еще может появиться. (Серверы изначально не работают). Благодаря этому я получаю некоторые 50x
ошибки при вводе новых серверов.
Я мало контролирую это время, но у меня есть некоторый контроль над параметрами, которые устанавливаются на сервере и бэкэнде.
Есть ли способ установить параметры на сервере или бэкэнде, чтобы новый сервер не принимал трафик, пока он не станет исправным?
Это пример моих текущих бэкендов:
backend my_backend
balance roundrobin
mode http
option httpchk GET /actuator/health
timeout check 5s
server 10_48_111_20_31623 10.48.111.20:31623 check inter 10s fall 4
server 10_48_111_55_31430 10.48.111.55:31430 check inter 10s fall 4
server 10_48_111_55_31479 10.48.111.55:31479 check inter 10s fall 4
Лучший способ добиться этого - через сокет администратора haproxy. При перезагрузке новой конфигурации вы можете отправить команду haproxy, чтобы пометить сервер как автономный. Видеть http://cbonte.github.io/haproxy-dconv/1.7/management.html#9.3 для получения дополнительной информации об использовании сокета администратора.
Я думаю, что возможное решение - проверить конкретную страницу / строку, которая размещается только тогда, когда сервер завершает подготовку и полностью работает. Например;
backend webservers
option httpchk GET /keepalive.html HTTP/1.1\r\nHost:\ www.checkvhost.com
http-check expect string Checkstring
server web1 web1:80 check cookie web1
Есть как минимум два варианта: