Primary Zone 的负载均衡与选举仅能保证第一优先级的 Zone 内均衡,不能保证第二优先级及之后的 Zone 的选举与均衡行为。当第一优先级的 Zone 宕机后,Leader 不会均匀分布于第二优先级的各个 Zone 之间。
详细说明
primary_zone 参数用于指定 Leader分布的优先级顺序,由分号分割不同的选举优先级,Leader 会在同一优先级的 Zone 上均匀分布。例如当设置 primary_zone='zone1;zone2,zone3' 时,意味着 zone1 作为第一优先级的 Zone,而 Zone2 和 Zone3 共同作为第二优先级的 Zone。当集群健康时,Leader 会聚集在 zone1 上。 当 Zone1 宕机时,直觉上 Leader 应该会均匀分布在 zone2、zone3 之间,然而实际上当前设计中仅保证第一优先级的 Zone 的 Leader 均衡规则,不保证第二及之后优先级的 Leader 均衡行为。当 zone1 宕机后,若检测 zone2、zone3 完全健康无异常,会将 Leader 聚合在当前最小的 IP 上。若租户的 unit_num=1。此时会观察到 Leader 会聚集在 zone2 或 zone3 上,而非均匀分布在两个 Zone 之间;若租户的 unit_num>=2,且 IP 最小、次小的两个节点分布在 zone2、zone3 上,才能观察到 Leader 分布在 zone2、zone3上。 该行为后续会逐步优化,未来版本会考虑支持第一优先级的 Zone 故障后第二优先级的 Primary Zone 均衡。
适用版本
OceanBase 数据库 V4.2.5 BP6(oceanbase-4.2.5.6-106000052025082216)及之前的版本。