我在同一个网络中有 2 个 docker 容器-web并proxy在haproxy后端运行
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).
| 归档时间: |
|
| 查看次数: |
4594 次 |
| 最近记录: |