服务器教程 · 2024年11月19日

Haproxy中DNS的解析配置

默认情况下,Haproxy中的server的配置行是支持 HostName 的,并在 haproxy 中启动后,解析hostName得到IP地址,并将IP地址缓存到 haproxy 整个生命期,但这种情况会出现一个问题,如果后端服务器的hostName的 IP 更改了,无法更新已缓存的 IP 。此时haproxy就无法访问该后端服务器了,本文解决的就是这个问题。在Haproxy增加 DNS的解析设置,并在每次健康检测的时候,解析HostName,并验证。这样一旦后端服务器 HostName 对应的IP 更改了,也能在健康检测的周期内,更新缓存中的IP地址。

 

一、resolvers 语句语法

resolvers mydns
    nameserver dns1 192.168.80.1:53
    nameserver dns2 192.168.80.1:53
    resolve_retries       3
    timeout retry         1s
    hold other           30s
    hold refused         30s
    hold nx              30s
    hold timeout         30s
    hold valid           10s

二、配置项解释

resolvers <resolvers id>

创建一个新的NS列表,id表示列表的标签(或叫名称、ID)。

nameserver <id> <ip>:<port>

id:NS的标识(或叫名称、ID)。
ip:不解释。
port:一般都是53。

resolve_retries <nb>

失败重试的次数,默认是3次。

timeout retry <time>

两次查询的超时设置,默认1s

hold <status> <period>

大概是各种超时之类的设置吧。