HAProxy中的2个mySQL集群

HAProxy中的2个mySQL集群,mysql,mariadb,haproxy,galera,mysql-innodb-cluster,Mysql,Mariadb,Haproxy,Galera,Mysql Innodb Cluster,我们使用HAProxy 1.5将mysql代理到4个Galera节点。我们使用roundrobin,这有助于实现高可用性和负载平衡 请参见/etc/haproxy/haproxy.cfg global user haproxy group haproxy defaults mode http log global retries 2 timeout connect 3000ms timeout server 10h timeout

我们使用HAProxy 1.5将mysql代理到4个Galera节点。我们使用roundrobin,这有助于实现高可用性和负载平衡

请参见/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中是否可行吗?因此,roundrobin中的前4台服务器,如果它们不可用,则选择非群集单数据库服务器作为最后手段。

您可以尝试使用备份来帮助您配置故障切换

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台服务器全部停机,则通信量将路由到备份服务器

但是,作为配置的一部分,您也可以尝试使用多个备份服务器

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将第一台服务器作为备份,直到它停机为止;如果第一台备份服务器停机,作为故障切换,它将使用第二台服务器为流量提供服务

如果流量激增,并且需要多个备份来处理所有流量,您还可以使用AllBackup选项设置类似的选项,将流量路由到所有备份


还有更复杂的设置。

您可以尝试使用备份来帮助您配置故障切换

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台服务器全部停机,则通信量将路由到备份服务器

但是,作为配置的一部分,您也可以尝试使用多个备份服务器

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将第一台服务器作为备份,直到它停机为止;如果第一台备份服务器停机,作为故障切换,它将使用第二台服务器为流量提供服务

如果流量激增,并且需要多个备份来处理所有流量,您还可以使用AllBackup选项设置类似的选项,将流量路由到所有备份


还有更复杂的设置。

非常感谢BinaryMonster。将测试并让您知道:非常感谢BinaryMonster。将测试并让您知道: