Назад | Перейти на главную страницу

Как пометить Haproxy server изначально отключенным

у меня есть 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

Есть как минимум два варианта:

  1. Отложите добавление сервера, пока он не заработает полностью. Если это недоступно, вы можете попробовать вариант 2.
  2. Добавьте сервер в качестве резервного сервера. Таким образом, с ним не будут связываться (если все остальные серверы не отключены). Если вы уверены, что сервер запущен и работает, вы можете удалить флаг резервного копирования и перезагрузить конфигурацию.