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

Есть ли какой-либо сервер имен по умолчанию для преобразователей HaProxy?

Я использую HaProxy для перенаправления трафика на внутренний сервер, у которого есть DNS-имя вместо сетевого адреса:

backend default-backend
    server external somedomain.com:80

Проблема в том, что возникает ситуация, когда она может стать неразрешимой. В этом случае HaProxy говорит:

Сервер default-backend / external отключается для обслуживания (статус DNS NX). Осталось 0 активных и 0 резервных серверов. 0 активных сессий, 0 повторно поставлено в очередь, 0 осталось в очереди. backend default-backend не имеет доступного сервера!

Я хотел бы, чтобы HaProxy снова проверил разрешение DNS и начал перенаправлять трафик всякий раз, когда целевое DNS-имя снова разрешается. Проблема в том, что я должен объявить resolvers раздел и хотя бы один nameserver который может разрешить такой адрес следующим образом:

resolvers rslvr
    nameserver dns0 8.8.8.8:53

Что делать, если я не хочу объявлять резолверы? Я просто хочу, чтобы HaProxy проверил разрешение DNS так же, как при запуске. Является ли это возможным?

Если я не использую резолвер, серверная часть просто перестает работать и не проверяет, доступен ли этот домен снова. То же самое происходит, когда у меня нет nameserver в resolvers раздел.

Есть ли способ опустить явное nameserver объявление или, может быть, использовать какой-нибудь резолвер по умолчанию, используемый HaProxy при запуске?

haproxy версии 1.9 представил новый параметр для раздела резолверов, который устраняет необходимость вручную перечислять серверы имен.

parse-resolv-conf

Видеть их документы для получения дополнительной информации, но по сути это позволяет вам заменить

resolvers mydns
  nameserver dns1 10.0.0.1:53
  nameserver dns2 10.0.0.2:53
  hold valid           10s

с участием

resolvers mydns
  parse-resolv-conf
  hold valid           10s

предполагая, что в вашем resolv.conf (который читается haproxy, когда у вас нет раздела резолверов) настроены 10.0.0.1:53 и 10.0.0.2:53.