【发布时间】:2021-01-09 12:30:52
【问题描述】:
我们使用 HAProxy (1.5) 将 mysql 代理到 4 个 Galera 节点。我们使用循环法,适用于高可用性和负载平衡。
参见 /etc/haproxy/haproxy.cfg
global
user haproxy
group haproxy
defaults
mode http
log global
retries 2
timeout connect 3000ms
timeout server 10h
timeout client 10h
listen stats
bind *:8404
stats enable
stats hide-version
stats uri /stats
listen mysql-cluster
bind 127.0.0.1:3306
mode tcp
option mysql-check user haproxy_check
balance roundrobin
server dbcl_01_dc1 xx.xx.xx.xx:3306 check
server dbcl_03_dc6 1xx.xx.xx.xx:3306 check
server dbcl_04_do xx.xx.xx.xx:3306 check
server dbcl_05_dc4 xx.xx.xx.xx:3306 check
这很好用,但我们担心有一天集群会失败,如果上述 4 个 galera 节点都不可用,我们希望 haproxy 切换到另一个 mysql 服务器。我们只希望最后一台服务器用作末日场景,因为它的数据比生产集群晚一小时,更重要的是不同的数据集。我们的想法是我们从一小时后自动滚动到我们的非集群 mysql 数据并保持我们的客户正常运行。
有人知道 HAProxy 是否可以做到这一点?因此轮询中的前 4 台服务器,如果它们不可用,则选择非集群单数据库服务器作为最后的手段。
【问题讨论】:
标签: mysql mariadb haproxy galera mysql-innodb-cluster