面试题答案
一键面试选举触发条件
- 节点启动:当一个新节点加入集群时,若该节点具有主节点资格(
node.master: true
),可能触发选举。 - 主节点失联:当前主节点由于网络故障、崩溃等原因与其他节点失去联系,集群需要重新选举主节点。
参与选举的节点类型
- 具有主节点资格的节点:在Elasticsearch配置文件中设置
node.master: true
的节点具备参与选举的资格。这些节点可以成为主节点,负责管理集群的元数据,如索引的创建、删除,节点的加入、离开等操作。
选举过程关键步骤
- 发现阶段:
- 节点启动后,通过UDP广播或单播(取决于配置)向集群中的其他节点发送发现请求,以发现其他节点并交换状态信息。
- 每个节点会维护一个已知节点列表,包含其他节点的地址、节点ID等信息。
- 投票阶段:
- 当满足选举触发条件时,具有主节点资格的节点开始互相发送投票请求。
- 每个具有投票权(即具有主节点资格)的节点会根据一定规则选择一个节点进行投票。规则通常基于节点ID(通常是UUID),节点ID较小的节点更有可能获得投票。但也会考虑其他因素,如节点的负载、网络延迟等,不过默认主要依据节点ID。
- 选举结果确认:
- 当一个具有主节点资格的节点获得超过半数具有投票权节点的投票时,它就被选举为主节点。
- 选举出主节点后,主节点会向集群中的所有节点发送通知,宣告自己成为主节点,其他节点收到通知后,更新自己的状态,确认新的主节点。