![强制 HAProxy 查找后端服务器的 DNS](https://linux22.com/image/655656/%E5%BC%BA%E5%88%B6%20HAProxy%20%E6%9F%A5%E6%89%BE%E5%90%8E%E7%AB%AF%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%20DNS.png)
我有 haproxy 1.5.8,它将一些请求(基于路径)代理到我们无法控制的第三方。
由于后端服务器的IP在启动时就解析一次,所以IP一旦改变就会中断。
有没有解决方法?在 nginx 中,可以声明一个内部变量并将其缓存 X 秒。我没有找到针对 HAProxy 的类似解决方案。
答案1
随着 HAProxy 1.6 的最近发布,您的问题得到了解决。您现在可以定义解析器并将其关联到您的后端。然后,IP 解析将在运行时完成。
resolvers dns
nameserver public-0 xx.xx.xx.xx:53
hold valid 1s
frontend http
bind *:8000
default_backend site-backend
backend site-backend
balance leastconn
server site sub.example.com:80 resolvers dns check inter 1000
答案2
不幸的是,这似乎仍然是工作正在进行中。
您是否考虑过使用单独的 nginx 代理?这样您就可以将该后端的请求转发到 nginx 实例,然后该实例进行 DNS 解析并转发请求?这不是一个好主意,但在流量较低的环境中可能会有效。