选举与脑裂
本章定位:Master 节点宕机后,ES 如何在数秒内选出新 Master?什么是脑裂?如何防止?这是分布式系统面试的高频题。
定义与作用
Master 选举:当集群 Master 宕机时,剩余的 Master-Eligible 节点通过投票选举新 Master。ES 7.x 使用 Zen2 发现机制(基于类 Raft 算法)。
脑裂(Split-Brain):网络分区导致集群中出现两个都认为自己是 Master 的节点,各自接受写入,导致数据分歧。
核心原理:Zen2 选举流程
完整示例:预防脑裂
# ES 7.x 自动配置 quorum = (3/2)+1 = 2
discovery.seed_hosts: ["node-1","node-2","node-3"]
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
ES 8.x 进一步引入基于 Raft 的选举协议,避免 Zen2 在某些极端场景下的脑裂可能。
小结
预防脑裂三要素:Master-Eligible 节点奇数(3 或 5)、网络稳定(低延迟)、ES 7+/8+ 版本。如果出现脑裂,ES 8+ 的 Raft 协议可自动恢复。