HaProxy 解析器是否有任何默认名称服务器?

HaProxy 解析器是否有任何默认名称服务器?

我使用 HaProxy 将流量转发到具有 DNS 名称而不是网络地址的后端服务器:

backend default-backend
    server external somedomain.com:80

问题是,在某些情况下,它可能无法解决。在这种情况下,HaProxy 说:

服务器 default-backend/external 即将关闭以进行维护(DNS NX 状态)。剩余 0 个活动服务器和 0 个备份服务器。0 个活动会话,0 个重新排队,0 个剩余在队列中。后端 default-backend 没有可用的服务器!

我希望 HaProxy 再次检查 DNS 解析,并在目标 DNS 名称再次可解析时开始转发流量。问题是我必须声明resolvers部分和至少一个nameserver可以解析此类地址的部分,如下所示:

resolvers rslvr
    nameserver dns0 8.8.8.8:53

如果我不想声明任何解析器怎么办?我只希望 HaProxy 以与启动时相同的方式检查 DNS 解析。可以吗?

nameserver如果我不使用解析器,后端就会停止工作,并且不会检查此域是否再次可用。当我在resolvers部分中没有任何解析器时,也会发生同样的事情。

有没有办法省略明确nameserver声明或者在启动时使用 HaProxy 使用的某些默认解析器?

答案1

haproxy 1.9 版为解析器部分引入了一个新参数,从而无需手动列出名称服务器。

parse-resolv-conf

他们的文档了解更多信息,但本质上这可以让你替换

resolvers mydns
  nameserver dns1 10.0.0.1:53
  nameserver dns2 10.0.0.2:53
  hold valid           10s

resolvers mydns
  parse-resolv-conf
  hold valid           10s

假设您的 resolv.conf(当您没有解析器部分时由 haproxy 读取)已配置 10.0.0.1:53 和 10.0.0.2:53。

相关内容