面试题答案
一键面试选举机制
- 基于Zen Discovery机制:Elasticsearch默认使用Zen Discovery机制来进行节点发现和Master选举。在集群启动时,节点之间通过广播(默认使用UDP,也可配置为单播)的方式来发现彼此。
- 候选节点资格:只有配置为
master eligible
(node.master: true
)的节点才有资格参与Master选举。在一个新集群启动时,所有符合master eligible
条件的节点都有可能成为Master节点。
判断条件
- 节点ID:每个节点都有一个唯一的节点ID。在选举过程中,节点ID作为重要的标识。
- 版本号:节点会记录集群状态的版本号。当一个节点认为自己可以成为Master时,它会将自己持有的集群状态版本号与其他节点进行比较。版本号越高,说明该节点的状态越新。
- 选举投票:
- 每个
master eligible
节点在启动时,会向集群中的其他节点发送选举请求。 - 收到选举请求的节点会根据一定规则进行投票。如果一个节点认为请求节点的条件更优(如节点ID、版本号等),就会投赞成票。
- 当一个节点获得超过半数
master eligible
节点的赞成票时,它就会被选举为Master节点。例如,若集群中有5个master eligible
节点,那么至少需要获得3票才能成为Master。
- 每个
- 稳定状态:一旦一个节点被选举为Master,它会负责管理集群状态,包括节点加入/离开集群、索引创建/删除等操作。其他节点会向Master节点同步状态信息,以保持整个集群状态的一致性。如果Master节点发生故障,集群会重新进行选举,以选出新的Master节点来维持集群的正常运行。