首页 > 解决方案 > MaxScale 集群(主-主)设置

问题描述

当在模式中的 Galera Cluster 前以 Master-Slave 类型部署多个 MaxScale(使用 Keepalived 或类似方法从 master 故障转移到 slave)时read-write-split,一切正常。但是,以循环方式进行类似大师-大师的类型学呢,这可能吗?

例如:在 10.0.0.1 有一个 MaxScale,在 10.0.0.2 有一个第二个,Haproxy 在它前面,有一个roundrobinleastconn分布算法(或者甚至没有 Haproxy/负载均衡器,应用程序只是随机连接到一个或另一个)就是这样MaxScale 可能/很好地支持?

标签: load-balancinghaproxyround-robinmaxscalekeepalived

解决方案


通常,您可以连接到任意数量的 MaxScale 实例,只要启用某些功能以保证所有 MaxScale 实例选择它们发送写入的同一服务器。

加莱拉集群

如果您使用的是 Galera 集群,则可以通过启用该root_node_as_master参数以安全且无冲突的方式完成此操作。它使用 Galera 集群本身来选择它用于写入的节点。这允许您的应用程序连接到任一 MaxScale 实例。

即使没有此参数,它也不会对数据库本身造成任何问题,但由于 Galera 的工作方式,如果您写入多个节点,则会增加在提交事务时遇到冲突的可能性。

异步复制集群

如果将 MaxScale 与使用异步复制的集群一起使用,只要将mariadbmon监视器配置为使用cooperative_monitoring_locks. 这会导致 MaxScale 实例通过数据库就他们看到哪些服务器以及他们选择哪些服务器进行写入进行通信。

另一个好处cooperative_monitoring_locks是您可以启用自动集群管理参数auto_failoverauto_rejoin而不必担心两个 MaxScales 会尝试同时更改复制配置:cooperative_monitoring_locks确保只有一个 MaxScale 可以这样做。


推荐阅读