我使用 HaProxy 将流量转发到具有 dns 名称而不是网络地址的后端服务器:
backend default-backend
server external somedomain.com:80
Run Code Online (Sandbox Code Playgroud)
问题是存在无法解决的情况。在这种情况下,HaProxy 说:
服务器默认后端/外部正在关闭以进行维护(DNS NX 状态)。0 个活动服务器和 0 个备用服务器。0 个会话处于活动状态,0 个重新排队,0 个剩余在队列中。后端默认后端没有可用的服务器!
我希望 HaProxy 再次检查 DNS 解析,并在目标 DNS 名称再次可解析时开始转发流量。问题是我必须声明resolvers
部分和至少一个nameserver
可以解决这样的地址的部分:
resolvers rslvr
nameserver dns0 8.8.8.8:53
Run Code Online (Sandbox Code Playgroud)
如果我不喜欢声明任何解析器怎么办?我只希望 HaProxy 像启动时一样检查 DNS 解析。是否可以?
如果我不使用解析器,后端就会停止工作,并且不会检查该域是否再次可用。同样的事情发生时,我没有任何nameserver
的resolvers
部分。
有什么方法可以nameserver
省略显式声明或者使用 HaProxy 在启动时使用的一些默认解析器?
小智 7
haproxy 1.9 版为解析器部分引入了一个新参数,无需手动列出名称服务器。
parse-resolv-conf
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅他们的文档,但基本上这允许您替换
resolvers mydns
nameserver dns1 10.0.0.1:53
nameserver dns2 10.0.0.2:53
hold valid 10s
Run Code Online (Sandbox Code Playgroud)
和
resolvers mydns
parse-resolv-conf
hold valid 10s
Run Code Online (Sandbox Code Playgroud)
假设您的 resolv.conf(当您没有解析器部分时由 haproxy 读取)配置了 10.0.0.1:53 和 10.0.0.2:53。
归档时间: |
|
查看次数: |
2850 次 |
最近记录: |