Maxscale、等级和优先级

Maxscale, ranks and priority

我正在使用带有 3 个 galera 服务器 (mariadb 10.4) 的 maxscale (6.2) readwritesplit 路由器。其中 2 个在 DC1 中,第 3 个在较远的 DC2 中。

使用 ranks 是我在这里看到的唯一选择,因为 priority 将被 galeramon 用于 select 主人。

我的目标是告诉maxscale尽量使用DC1,所以server1为主(priority=1,rank=primary),server2为slave(priority=2,rank=primary),使用DC2 server3 仅当 server1 或 server2 不可访问时(优先级=3,等级=次要)。

这是正确的行为吗?

[server1]
type=server
address=192.168.0.11
priority=1
rank=primary

[server2]
type=server
address=192.168.0.12
priority=2
rank=primary

[server3]
type=server
address=192.168.0.21
priority=3
rank=secondary

[split]
type=service
router=readwritesplit
servers=server1,server2,server3

[monitor]
type=monitor
module=galeramon
servers=server1,server2,server3
root_node_as_master=true
use_priority=true

是的,读写分离模块only uses connections that have the same rank。这意味着如果 server1server2 都失败,readwritesplit 服务将使用 server3 只要它是 up.

当其他两个服务器中的任何一个恢复时,galeramon 监视器会将 Master 标签从 server3 转移到其他节点之一。那时 readwritesplit 将丢弃与 server3 的连接,并在可能的情况下重新连接到具有更高级别的节点。