Я пролистал множество документов и поисков в Google, но, похоже, не нашел ответа. Я использую HAProxy с несколькими серверами, запуск которых требует времени - начальные нагрузки на мою локальную виртуальную машину занимают около минуты или двух. Из журналов отладки видно, что HAProxy проверяет эти серверы, выдает сбой подключения уровня 4, а затем отмечает сервер как постоянно неработающий. Поиск в Google не указывает способ перезапуска проверок работоспособности.
Я предполагал, что они повторится после задержки, но я не вижу в своих журналах никаких уведомлений о том, что серверы проходят повторную проверку. Если я перезапущу HAProxy, он обнаружит, что серверы включены, но в идеале он пометит их как мертвые на несколько минут, обнаружит, что они резервные, а затем вернет их в ротацию. Я также пробовал отправить SIGHUP, но при этом выводится только отчет о результатах последней проверки. Руководство по настройке немного утомительно. Что мне не хватает?
Вот мой haproxy.cfg:
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
maxconn 1024
user proxy
group proxy
tune.ssl.default-dh-param 2048
ssl-default-bind-ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:!NULL:!aNULL:!RC4:!RC2:!MEDIUM:!LOW:!EXPORT:!DES:!MD5:!PSK:!3DES
debug
defaults
log global
mode http
option httplog
option dontlognull
option forwardfor
option http-server-close
option redispatch
retries 3
timeout connect 5s
timeout client 50s
timeout server 50s
frontend http-in
bind *:80
bind *:443 ssl crt /etc/ssl/private/perceptronapp.com.pem no-sslv3
redirect prefix https://www.perceptronapp.com code 301 if { hdr(host) -i perceptronapp.com }
redirect scheme https if !{ ssl_fc }
use_backend blog if { path_beg /blog }
use_backend app
backend app
balance leastconn
cookie JSESSIONID insert nocache
server s1 s1.perceptron.skydns.local:3000 check inter 3m cookie s1
server s2 s2.perceptron.skydns.local:3000 check inter 3m cookie s2
backend blog
server s1 s1.ghost.skydns.local:2368 check inter 3m
Догадаться. HAProxy выполняет свое разрешение DNS при запуске, что я подозревал, но мне было трудно подтвердить, поскольку все мои запросы просто вернули меня к руководству по настройке. Поскольку у меня есть запрашиваемая инфраструктура DNS и пространство имен (SkyDNS из контейнеров Docker), я надеялся использовать это для обнаружения служб и бэкэндов HAProxy. Похоже, что система распознавателя, подобная Nginx, может быть включена в дорожную карту HAProxy в соответствии с этот, но проверка и быстрое сканирование последних источников не показали, что это еще было.
С тех пор перешли на создание файла конфигурации на основе confd и плавный перезапуск. Немного раздражает настройка, но, похоже, работает.