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

Имена хостов в файле конфигурации HAProxy

В моем файле haproxy.cfg есть два внутренних сервера, использующих имена хостов:

server ops-ca-revealv2e-prod-1 ops-ca-revealv2e-prod-1:443 cookie ops-ca-revealv2e-prod-1 ssl weight 1 maxconn 512 check

server ops-ca-revealv2e-prod-2 ops-ca-revealv2e-prod-2:443 cookie ops-ca-revealv2e-prod-2 ssl weight 1 maxconn 512 check

Эти имена хостов являются частью Amazon OpsWorks и автоматически вставляются в / etc / hosts при каждом включении или отключении инстанса. Если я попытаюсь перезапустить HAProxy, когда один из экземпляров не работает, я получаю сообщение об ошибке:

[ALERT] 362/225440 (27202) : parsing [/opt/haproxy-ssl/haproxy.cfg:42] : 'server ops-ca-revealv2e-prod-2' : invalid address: 'ops-ca-revealv2e-prod-2' in 'ops-ca-revealv2e-prod-2:443'
[ALERT] 362/225440 (27202) : Error(s) found in configuration file : /opt/haproxy-ssl/haproxy.cfg
[ALERT] 362/225440 (27202) : Fatal errors found in configuration.

Есть ли способ сообщить HAProxy, чтобы он проверял правильность имени хоста? Если он действителен, используйте его, если нет, игнорируйте.

В haproxy> = 1.7 вы сможете использовать init-addr параметр, указав none, чтобы предотвратить разрешение DNS при запуске.

Из документы:

init-addr {last | libc | none | <ip>},[...]*

Укажите, в каком порядке следует разрешить адрес сервера при запуске, если он использует полное доменное имя. Предпринимаются попытки разрешить адрес, применяя по очереди каждый из методов, упомянутых в списке, разделенном запятыми. Используется первый успешный метод. Если до конца списка не найден рабочий метод, выдается ошибка. Метод «последний» предлагает выбрать адрес, который появляется в файле состояний (см. «Файл-состояния-сервера»). Метод «libc» использует внутренний преобразователь libc (gethostbyname () или getaddrinfo () в зависимости от операционной системы и параметров сборки). Метод «none» конкретно указывает, что сервер должен запускаться без действительного IP-адреса в неактивном состоянии. Может быть полезно игнорировать некоторые проблемы с DNS при запуске, ожидая исправления ситуации позже. Наконец, может быть предоставлен IP-адрес (IPv4 или IPv6).

Итак, ваша строка конфигурации может быть:

server s1 myhostname init-addr none

Нет, это невозможно изнутри haproxy.

Согласно инструкции, address в server строка конфигурации

[...] IPv4 или IPv6-адрес сервера. В качестве альтернативы поддерживается разрешаемое имя хоста [...]

другими словами, нельзя использовать неразрешимые имена хостов в конфигурации.

Идея:

Любая часть адресной строки может ссылаться на любое количество переменных среды, поставив перед их именем знак доллара ('$') и, при необходимости, заключив их в фигурные скобки ('{}'), аналогично тому, как это делается в оболочке Bourne.