默认情况下,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>
大概是各种超时之类的设置吧。
Pingback引用通告: Haproxy中的后端服务器server的使用 | 精彩每一天