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

Раздел резольверов Haproxy + Amazon ELB

В настоящее время я использую Haproxy-1.6-dev2 перед Amazon ELB, и у меня возникают проблемы с разрешением DNS. Я работаю с dev-версией haproxy из-за новой resolvers функция, но не удалось заставить Haproxy инициировать изменение его внутреннего списка IP-адресов для сервера без перезапуска процесса haproxy. Amazon обновляет IP-адреса своих ELB, а Haproxy продолжает использовать старые IP-адреса без обновления. Ниже приведен упрощенный файл конфигурации.

global
    log 127.0.0.1   local0
    stats socket /var/run/haproxy.sock

defaults
    log global
    mode http
    option httpchk GET /
    option log-health-checks
    option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000

resolvers dns
    nameserver public-0  xx.xx.xx.xx:53
    hold valid 1s

frontend http
    bind *:8000
    default_backend site-backend

backend site-backend
    balance leastconn
    server site sub.example.com:80 resolvers dns check inter 1000

Я создаю временную запись A в AWS Route53, и проверка работоспособности не выполняется, поскольку запись A указывает на недопустимое местоположение.
Затем я обновляю запись A, чтобы указать допустимое местоположение, и проверка работоспособности продолжает терпеть неудачу. Простой перезапуск haproxy означает, что проверки работоспособности начнут проходить.

Я также проверил сокет статистики, чтобы получить дополнительную информацию:

 nameserver public-0:
  sent: 153
  valid: 0
  update: 0
  cname: 0
  cname_error: 0
  any_err: 0
  nx: 0
  timeout: 0
  refused: 0
  other: 0
  invalid: 0
  too_big: 0
  outdated: 51

Документация по haproxy не очень помогает понять, что может означать «устаревший».

Кажется, это вопрос тайм-аута по умолчанию 1 мс вместо тайм-аута по умолчанию в 1 с. Настройка timeout retry 1s должен решить проблему для всех, у кого есть эта проблема на Haproxy-1.6-dev2. Думаю, это будет решено в официальном выпуске 1.6.

Пожалуйста, запустите HAProxy в режиме отладки (оператор debug в глобальной секции или -d при запуске haproxy deamon) и сообщите здесь вывод stdout и stderr.

А пока возьмите tcpdump DNS-трафика устройства и отправьте его разработчику, который работал с DNS в HAProxy: bedis9@gmail.com.

Батист