haproxy 的 mysql 客户端在尝试连接时挂起

haproxy 的 mysql 客户端在尝试连接时挂起

我正在尝试使用此处概述的方法为 mySQL 从属集群设置 haproxy LB在 github 的工程博客中。我已让 xinetd 检查正常运行,但当我尝试通过 mysql 客户端通过 haproxy 端点登录到后端主机时,客户端会无限期挂起。Curls 似乎正在到达后端主机,但我在响应中看到“数据包无序”:

[me@jump01 ~]$curl haproxy01.domain:3306/check-lag
5.6.32-78.1-log�m-}1w)`*O0��!�B:>da85>w`[)mysql_native_password!��#08S01Got packets out of order

以下是此代理的相关 haproxy.cfg 的要点。不确定我在这里遗漏了什么,导致 mysql 客户端无法进入后端。

答案1

您的测试返回了 mysql,这表明它正在到达目标服务器。但是,数据包乱序可能表明连续的数据包正在到达不同的后端服务器。MySQL 连接需要有状态,因此需要通过负载平衡器保持粘性。我会将配置更改为,balance source除非后端发生故障,否则将保持来自一个源 IP 的所有数据包都发送到同一个后端,而不是balance roundrobin交替将它们发送到所有后端。

答案2

原来问题是后端需要设置为 tcp 模式。我在尝试 telnet 并手动执行 GET 时发现了这个问题。

相关内容