我目前在amazon前面使用Haproxy-1.6dev2,我遇到了DNS解析问题。由于新的resolvers特性,我正在使用have的开发版本,但在不重新启动have进程的情况下,无法让have触发服务器内部ip地址列表的更改。Amazon更新其ELB的IP,Haproxy继续使用旧IP地址而不进行更新。下面是一个简化的配置文件。
global
log 127.0.0.1 local0
stats socket /var/run/haproxy.sock
defaults
log global
mode http
option httpchk GET /
option log-health-checks
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
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我在AWS Route53中创建一个临时A记录,由于A记录指向无效位置,所以健康检查失败。
然后,我更新A记录以指向一个有效的位置,并且健康检查继续失败。简单地重新启动haproxy意味着健康检查开始通过。
我还点击了stats套接字以获得更多信息:
nameserver public-0:
sent: 153
valid: 0
update: 0
cname: 0
cname_error: 0
any_err: 0
nx: 0
timeout: 0
refused: 0
other: 0
invalid: 0
too_big: 0
outdated: 51关于“过时”可能意味着什么,haproxy文档并没有提供太多帮助。
发布于 2015-07-11 07:02:14
请在调试模式下运行HAProxy (全局部分中的“debug”语句或运行haproxy deamon时的'-d‘),并在此报告stdout和stderr的输出。
同时,请对该框的DNS流量进行tcpdump,并将其发送给在HAProxy: bedis9@gmail.com中执行DNS工作的开发人员。
巴普蒂斯特
发布于 2015-07-14 15:57:45
这似乎是一个1ms的默认超时问题,而不是1s的默认超时。设置timeout retry 1s应该可以解决任何在Haproxy-1.6dev2上有此问题的其他人的问题。我想这将在官方1.6版中得到解决。
https://serverfault.com/questions/704482
复制相似问题