我使用 HAProxy 1.5-dev21 来平衡一些只读 Postgresql 9.2 服务器上的 PostgreSQL 连接负载。
HAProxy 1.5 版实现了pgsql-check 选项,类似于mysql-check。
以下是针对此类池的典型 HAProxy 配置:
listen pgsql_pool 0.0.0.0:10001
mode tcp
option pgsql-check user postgres
balance roundrobin
server slave1 10.0.0.1:5432 check
server slave2 10.0.0.2:5432 check
这有效,我的意思是 HAProxy 检测到 slave1/slave2 已启动,并且我可以通过端口 10001 正常连接到 PG,但是由于 pgsql-check 选项,我每 2 秒就会在 postgresql 日志中看到这样的消息:
2014-01-29 17:37:33 CET [17170] postgres postgres (10.0.0.10(56706)) LOG: could not receive data from client: Connection reset by peer
2014-01-29 17:37:35 CET [17173] postgres postgres (10.0.0.10(56707)) LOG: could not receive data from client: Connection reset by peer
有没有办法来解决这个问题?
也许我遗漏了某个地方的某些配置选项?
答案1
我不确定这是否真的是个问题。HAProxy 文档说
这是一个基本但有用的测试,它不会在服务器上产生错误或中止连接。此检查与“mysql-check”相同。
哦,另一方面,mysql-check 的描述更详细一些:
检查包括发送两个 MySQL 数据包、一个客户端身份验证数据包和一个 QUIT 数据包,以正确关闭 MySQL 会话
您的日志显示了这一点,所以我认为没有什么可担心的,但您可能需要等待 pgsql 专家或尝试dba.stackexchange.com