Haproxy Resolvers部分+ Amazon ELB

我目前在亚马逊ELB前使用Haproxy-1.6-dev2,并且遇到DNSparsing问题。 由于新的resolversfunction,我正在使用haproxy的dev版本,但是无法在不重新启动haproxy进程的情况下让Haproxy触发其服务器的内部IP地址列表更改。 亚马逊更新其ELB的IP地址,Haproxy继续使用旧的IP地址而不更新。 下面是一个简化的configuration文件。

 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中创build了一个临时Alogging,并且运行状况检查失败,因为Alogging指向一个无效的位置。
然后,我更新Alogging以指向有效的位置,并且运行状况检查继续失败。 haproxy的简单重启意味着健康检查开始通过。

我也ping了统计套接字得到更多的信息:

  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文档对“过时”可能意味着什么没有提供太多的帮助。

这似乎是1ms默认超时而不是1s默认超时的问题。 设置timeout retry 1s应该解决在Haproxy-1.6-dev2上遇到这个问题的其他人的问题。 我想这将在官方1.6版本中得到解决。

请以debugging模式运行HAProxy(全局部分为'debug'语句,运行haproxy deamon时运行'-d'),并在此输出stdout和stderr。

同时,请把这个盒子的DNSstream量的tcpdump发送给在HAProxy:[email protected]做DNS工作的开发者。

巴蒂斯特