【问题标题】:2 mySQL clusters in HAProxyHAProxy 中的 2 个 mySQL 集群
【发布时间】: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


    【解决方案1】:

    您可以尝试使用backup 来帮助您配置故障转移

    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 xx.xx.xx.xx:3306 check
        server dbcl_04_dc2 xx.xx.xx.xx:3306 check
        server dbcl_05_dc4 xx.xx.xx.xx:3306 check
        // Solution
        server dbbk_01_dc1 xx.xx.xx.xx:3306 check backup
    

    在这种情况下,如果集群中的所有 4 台服务器都出现故障,流量将被路由到备用服务器。

    不过,您也可以尝试多个backup 服务器作为配置的一部分

    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 xx.xx.xx.xx:3306 check
        server dbcl_04_dc2 xx.xx.xx.xx:3306 check
        server dbcl_05_dc4 xx.xx.xx.xx:3306 check
        // Solution
        server dbbk_01_dc1 xx.xx.xx.xx:3306 check backup
        server dbbk_02_dc2 xx.xx.xx.xx:3306 check backup
    
    

    在上述解决方案中,HAProxy 会选择第一台服务器作为备份,直到它出现故障,并且作为故障转移,如果第一台备份服务器出现故障,它会使用第二台服务器来处理流量。

    如果流量激增并且您希望多个备份来处理所有流量,您也可以使用option allbackups 设置类似的东西,将流量路由到所有备份。

    official documentation 的设置要复杂得多。

    【讨论】:

    • 非常感谢 BinaryMonster。将测试并让您知道:)
    猜你喜欢
    • 2018-10-20
    • 2021-10-26
    • 1970-01-01
    • 2018-11-13
    • 2021-10-04
    • 2016-10-28
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多