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

Проверка работоспособности HAProxy и изменение состояния сервера

Я пролистал множество документов и поисков в 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 и плавный перезапуск. Немного раздражает настройка, но, похоже, работает.