haproxy 等待 dns 解析后端

haproxy 等待 dns 解析后端

我有 2 个 docker 容器同一网络-web并与后端一起proxy运行haproxy

backend web
    server web web:80 check

init-addr设置为,因此如果在启动时last,libc,none无法解析它也不会失败。web

如果我proxy先开始,haproxy报告could not resolve address 'web', disabling server

然后我启动web。它可以通过名称从访问proxy,并响应 ping 和 telnet。但后端haproxy仍然处于web宕机状态。

我希望按照默认间隔(根据文档每 2 秒一次)haproxy重试检查后端,并且作为弹性 - 每次检查时都尝试再次解析 dns。web

我该如何配置haproxy以等待 DNS 解析后端服务器名称然后自动启动该后端?

答案1

如上所述,您当前的配置使 HAProxy 只能在启动时解析主机名这里。由于无法web在启动时解析,因此相关服务器将被禁用。
为了使 HAProxy 在启动后进行 DNS 解析,您需要添加解析器部分
例子:

resolvers mydns
   nameserver dns1 10.0.0.1:53
   nameserver dns2 10.0.0.2:53

backend web
   server web web:80 check init-addr last,libc,none resolvers mydns

然后,每当web变得可解析时,您都会在日志中看到类似这样的内容:
Server web/web ('web') is UP/READY (resolves again).

相关内容