haproxy 等待 dns 解析后端

Ale*_*xey 6 haproxy

我在同一个网络中有 2 个 docker 容器-webproxyhaproxy后端运行

backend web
    server web web:80 check
Run Code Online (Sandbox Code Playgroud)

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

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

然后我开始web。它可以通过名称从 访问proxy,在 ping 和 telnet 上响应。但haproxy仍然对待web后端。

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

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

小智 3

您当前的配置使 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
Run Code Online (Sandbox Code Playgroud)

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