问题描述
我已在HAProxy后面的Docker Swarm中成功使用Spilo(带有Docker的HA PostgreSQL集群)。我使用了其中一位用户发布的HAProxy configuration之一。 HAProxy 2.1运行正常。我将HAProxy更新为2.2,然后突然不起作用了。在HAProxy 2.2的公告中,我发现Health Checks有所更改。
这是我之前工作的主机的后端部分:
backend backend_master
option httpchk OPTIONS /master
server dbnode1 spilo1:5432 maxconn 100 check port 8008 resolvers docker_resolver resolve-prefer ipv4
server dbnode2 spilo2:5432 maxconn 100 check port 8008 resolvers docker_resolver resolve-prefer ipv4
server dbnode3 spilo3:5432 maxconn 100 check port 8008 resolvers docker_resolver resolve-prefer ipv4
阅读HAProxy 2.2文档后,我不确定为什么当前配置不再起作用。
这是日志中的消息:
Server be-postgres-master/dbnode1 is DOWN,reason: Layer7 invalid response,info: "TCPCHK got an empty response at step 1",check duration: 5ms. 2 active and 0 backup servers left. 0 sessions active,0 requeued,0 remaining in queue.
Server be-postgres-master/dbnode2 is DOWN,check duration: 4ms. 1 active and 0 backup servers left. 0 sessions active,0 remaining in queue.
Server be-postgres-master/dbnode3 is DOWN,check duration: 4ms. 0 active and 0 backup servers left. 0 sessions active,0 remaining in queue.
[ALERT] 235/144508 (6) : backend 'be-postgres-master' has no server available!
我将HAProxy降级为2.1,并且可以再次使用,但是如何使其与2.2一起使用?
解决方法
不知道您是否仍在努力解决问题,但是将OPTIONS
部分中的请求方法从GET
更改为httpchk
可以帮助我。