Я использую 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 и просто использовать серверы из операционной системы?