我设置了一个高度可用(HA)的MariaDB Galera群集,该群集使我可以读写该群集中的任何节点。
我将HAProxy负载平衡器放在群集节点的前面,该节点不断执行运行状况检查。 HAProxy将消息路由到由mysql-check
确定的健康节点。
这是/etc/haproxy/haproxy.cfg
中的Galera Cluster节:
listen galera-cluster
balance source
bind *:3306
mode tcp
option tcpka
option mysql-check user haproxy_check
balance roundrobin
server galera01.woolford.io 10.0.1.31:3306 check
server galera02.woolford.io 10.0.1.32:3306 check
server galera03.woolford.io 10.0.1.33:3306 check
请注意tcpka
选项(TCP保持活动状态)。
例如,来自我客户端的连接频繁断开
mysql> select * from kafka_offset;
ERROR 2013 (HY000): Lost connection to MySQL server during query
如果我直接连接到节点而不是通过负载均衡器,则根本不会发生这种情况。
HAProxy是设置HA MariaDB的明智方法吗?如果没有,怎么办?