Hat*_*ber 6 mysql java haproxy mariadb
我在多主设置中设置了一个由 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
timeout client 5000
listen mysql-cluster
bind 0.0.0.0:3306
mode tcp
option tcpka
option mysql-check user haproxy_check
balance roundrobin
server mysql-1 192.168.10.241:3306 check inter 1000 rise 3 fall 1
server mysql-2 192.168.10.242:3306 check inter 1000 rise 3 fall 1
server mysql-3 192.168.10.243:3306 check inter 1000 rise 3 fall 1
listen stats
bind 192.168.10.211:8080
mode http
stats enable
stats uri /
stats realm Strictly\ Private
stats auth USER:PASSWORD
Run Code Online (Sandbox Code Playgroud)
Gre*_*egL 10
对于空闲的长时间运行的会话,例如mysql
在命令行上运行,您的timeout client
和timeout server
太短了。
对于访问数据库的 Web 服务器来说,它们可能很好,因为连接仅在需要时打开,并且每个页面加载都会创建一个新连接。
要允许连接保持打开状态 10 分钟,请更改
timeout server 5000
timeout client 5000
Run Code Online (Sandbox Code Playgroud)
到
timeout server 10m
timeout client 10m
Run Code Online (Sandbox Code Playgroud)
如果你愿意,你可以走得更高。我有 7 小时超时的 RDS 集群,它工作得很好。
文档有更多关于超时客户端、超时服务器和用于时间说明符的简写的详细信息。
归档时间: |
|
查看次数: |
6728 次 |
最近记录: |