使用下面的(部分)conf文件haproxy 1.6.1(macros伟的软件!)。 在AWS(现场实例)closures后端服务器并进行replace时,会发生此问题。 新实例启动并运行后,统计信息页面仍然显示运行状况检查失败。 tcpdump向zos-e-e01.mycompany.com显示成功的传出查询到172.16.0.23。 看来haproxy正在查询IP地址,得到正确的响应,但不更新正在运行的configuration。 重新加载haproxy解决了这个问题。
resolvers aws nameserver aws1 172.16.0.23:53 resolve_retries 3 timeout retry 1s hold valid 30s backend zos cookie ZOS insert indirect nocache option httpchk GET /robots.txt HTTP/1.1\r\nHost:\ zos.mycompany.com balance leastconn no log option tcp-smart-connect server zos-e-c01 zos-e-c01.mycompany.com:80 cookie balancer.zos-e-c01 check port 80 inter 2000 rise 2 fall 3 maxconn 60 check resolvers aws server zos-e-d01 zos-e-d01.mycompany.com:80 cookie balancer.zos-e-d01 check port 80 inter 2000 rise 2 fall 3 maxconn 60 check resolvers aws server zos-e-e01 zos-e-e01.mycompany.com:80 cookie balancer.zos-e-e01 check port 80 inter 2000 rise 2 fall 3 maxconn 60 check resolvers aws
HAProxy在1.6.1之后有很多asynchronousDNS修复,但是在版本1.6.5之前,这是本文的最新版本。
我无法在更改日志中find明确解释遇到的情况的单个修复程序,但是如果我没有记错,启动时的名称parsing是同步完成的,而在运行时则是asynchronous的,因此遵循两个不同的代码path更新的asynchronous代码的问题不会影响启动时的分辨率。
HAProxy 1.6在1.6.5之前仍然处于真正稳定的状态。 1.6系列有很多新function,通过阅读邮件列表,在开发和testing过程中遇到了许多在这个领域遇到的问题。 现在1.6发布了,没有新的function被添加 – 唯一的版本应该是bug修复和安全修复 – 所以build议升级到系列中的最新版本。