MaxScale 集群(主-主)设置
MaxScale cluster (master-master) setup
在 read-write-split
模式下的 Galera 集群前面部署 multiple MaxScale in a Master-Slave typology(使用 Keepalived 或类似工具从主服务器到从服务器的故障转移)时,一切正常。但是,如果以循环方式进行类似 Master-Master 的类型学,这可能吗?
例如:在 10.0.0.1 处有一个 MaxScale,在 10.0.0.2 处有一个 MaxScale,在它前面有 Haproxy,使用 roundrobin
或 leastconn
分布算法(甚至没有 Haproxy/load-balancer,其中应用程序只是随机连接到一个或另一个)这是 MaxScale 支持的 possible/well 吗?
通常您可以连接到任意数量的 MaxScale 实例,只要启用某些功能以保证所有 MaxScale 实例选择它们发送写入的同一服务器。
加莱拉星团
如果您使用的是 Galera 集群,则可以通过启用 root_node_as_master
参数以安全且无冲突的方式完成此操作。它使用 Galera 集群本身 select 它用于写入的节点。这允许您的应用程序连接到任一 MaxScale 实例。
即使没有这个参数,它也不会导致数据库本身出现任何问题,但由于 Galera 的工作方式,如果您写入多个,您会增加 运行 进入 a conflict when you COMMIT 事务的可能性节点。
异步复制集群
如果您将 MaxScale 与使用异步复制的集群一起使用,只要将 mariadbmon
监视器配置为使用 cooperative_monitoring_locks
,您仍然可以这样做。这会导致 MaxScale 实例通过数据库就它们看到的服务器以及它们选择写入的服务器进行通信。
cooperative_monitoring_locks
的另一个好处是您可以启用自动 cluster management parameters auto_failover
and auto_rejoin
而不必担心两个 MaxScales 试图同时更改复制配置:cooperative_monitoring_locks
使得确保只有一个 MaxScale 可以做到。
在 read-write-split
模式下的 Galera 集群前面部署 multiple MaxScale in a Master-Slave typology(使用 Keepalived 或类似工具从主服务器到从服务器的故障转移)时,一切正常。但是,如果以循环方式进行类似 Master-Master 的类型学,这可能吗?
例如:在 10.0.0.1 处有一个 MaxScale,在 10.0.0.2 处有一个 MaxScale,在它前面有 Haproxy,使用 roundrobin
或 leastconn
分布算法(甚至没有 Haproxy/load-balancer,其中应用程序只是随机连接到一个或另一个)这是 MaxScale 支持的 possible/well 吗?
通常您可以连接到任意数量的 MaxScale 实例,只要启用某些功能以保证所有 MaxScale 实例选择它们发送写入的同一服务器。
加莱拉星团
如果您使用的是 Galera 集群,则可以通过启用 root_node_as_master
参数以安全且无冲突的方式完成此操作。它使用 Galera 集群本身 select 它用于写入的节点。这允许您的应用程序连接到任一 MaxScale 实例。
即使没有这个参数,它也不会导致数据库本身出现任何问题,但由于 Galera 的工作方式,如果您写入多个,您会增加 运行 进入 a conflict when you COMMIT 事务的可能性节点。
异步复制集群
如果您将 MaxScale 与使用异步复制的集群一起使用,只要将 mariadbmon
监视器配置为使用 cooperative_monitoring_locks
,您仍然可以这样做。这会导致 MaxScale 实例通过数据库就它们看到的服务器以及它们选择写入的服务器进行通信。
cooperative_monitoring_locks
的另一个好处是您可以启用自动 cluster management parameters auto_failover
and auto_rejoin
而不必担心两个 MaxScales 试图同时更改复制配置:cooperative_monitoring_locks
使得确保只有一个 MaxScale 可以做到。