在read-write-split模式下的Galera集群前面部署multiple MaxScale in a Master-Slave typology (使用Keepalived或类似功能从主服务器故障转移到从服务器)时,一切正常。但是,像Master-Master这样的循环方式的类型学呢,这可能吗?
例如:在10.0.0.1上有一个MaxScale,在10.0.0.2上有第二个,在它前面有一个带有roundrobin或leastconn分布算法的Haproxy (或者甚至没有Haproxy/负载均衡器,其中应用程序只是随机连接到一个或另一个),这可能/ MaxScale很好地支持吗?
发布于 2021-10-18 05:05:38
通常,只要启用了某些功能,您就可以连接到任意数量的MaxScale实例,以保证所有MaxScale实例都选择向其发送写操作的相同服务器。
Galera星系团
如果您正在使用Galera集群,则可以通过启用root_node_as_master参数以一种安全且无冲突的方式完成此操作。它使用Galera集群本身来选择用于写入的节点。这允许您的应用程序连接到任一MaxScale实例。
即使没有这个参数,它也不会对数据库本身造成任何问题,但由于Galera的工作方式,如果您写入多个节点,则会增加运行a conflict when you COMMIT事务的可能性。
异步复制群集
如果您将MaxScale与使用异步复制的集群一起使用,只要您将mariadbmon监视器配置为使用cooperative_monitoring_locks,您仍然可以这样做。这导致MaxScale实例通过数据库进行通信,了解它们看到了哪些服务器,以及它们选择了哪些服务器进行写入。
cooperative_monitoring_locks的另一个好处是,您可以启用自动的cluster management参数auto_failover和auto_rejoin,而不必担心两个MaxScales试图同时更改复制配置:cooperative_monitoring_locks确保只有一个MaxScale执行此操作。
https://stackoverflow.com/questions/69607653
复制相似问题