HAProxy для использования DNS из операционной системы? - PullRequest
1 голос
/ 07 мая 2020

Я использую DNS-имена для моих внутренних серверов в моем hsproxy.cfg, например

backend s0
    server server0 server0.x.y.local:8080

backend s1
    server server1 server1.x.y.local:8080

Разрешение имен работает нормально после запуска. Но как только IP-адрес внутреннего сервера изменяется, запросы к haproxy занимают много времени (например, 25 секунд), а затем отвечают 503 (причина: S C). Он не обновляет и не повторно разрешает имена DNS. Но curl на этой машине работает нормально, поэтому операционная система правильно обновляет IP-адрес для этих записей DNS. Похоже, что haproxy кеширует IP-адрес при запуске и никогда не меняет его.

Я использую haproxy в качестве модуля внутри кластера kubernetes (не уверен, что это имеет значение).

Из того, что я читал в официальных документах, параметр lib c должен использовать разрешение операционных систем? Я попытался поставить init-addr libc, но это не помогло, haproxy по-прежнему отвечает долгим 503 навсегда, пока на машине dns разрешается отлично.

Я также видел, что при использовании возможны некоторые тонкие настройки запись resolver, в которой вы можете настроить refre sh times et c. Возможно ли это без серверов имен жесткого кода в haproxy.cfg и просто использовать серверы из операционной системы?

1 Ответ

4 голосов
/ 07 мая 2020

Кажется верным, что HAProxy кэширует разрешенный IP-адрес, если вы не укажете иное. 1004 *), но вы также правы, что для этого также требуется раздел resolvers. Начиная с HAProxy 1.9, вы можете использовать parse-resolv-conf для использования локального преобразователя:

resolvers mydns
  parse-resolv-conf
  hold valid 10s

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

Документация HAProxy может помочь вам в дальнейшей настройке: https://cbonte.github.io/haproxy-dconv/1.9/configuration.html#5 .3.2-parse-resolv-conf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...