使用Docker将HAProxy 2.2与HA PostgreSQL集群配置在一起Zalando Spilo

问题描述

我已在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可以帮助我。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...