我在多主设置中设置了一个由 3 个 MariaDB 服务器组成的集群,它运行良好。我为 HaProxy 添加了第 4 个服务器以进行负载平衡和循环,以便我们可以有一点冗余,这也可以正常工作,除了 1 个问题。
我登录到运行以下查询的 HaProxy 服务器上的 MySQL 客户端:
show variables like 'server_id';
Run Code Online (Sandbox Code Playgroud)
我正在获取结果,但是如果我等待 5 秒或更长时间并再次运行查询,我会收到以下错误:
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 52
Current database: *** NONE ***
Run Code Online (Sandbox Code Playgroud)
在那之后,我得到了不同 server_id 的结果,这表明负载平衡正在工作。这导致的问题是,当我尝试从 Spring/Java 应用程序连接时,我可以在短时间内运行查询并且连接断开。我想如果我可以在 HaProxy 服务器上解决它,那将解决我遇到的其他问题。
编辑:添加 HAPROXY.CFG
global
log 127.0.0.1 local0 notice
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
user haproxy
group haproxy
maxconn 4096
daemon
defaults
log global
retries 2
timeout connect 3000
timeout server 5000 …Run Code Online (Sandbox Code Playgroud)