面试题答案
一键面试ElasticSearch选举算法基本原理
- 基于Bully算法改进:ElasticSearch选举算法类似于Bully算法,在集群中每个节点都有机会成为主节点。节点通过ping其他节点来判断其存活状态。
- 节点角色与状态:集群中有主节点(Master-eligible)、数据节点(Data)等角色。主节点负责集群的元数据管理,如索引的创建、删除等操作。在选举过程中,Master-eligible节点竞争成为主节点。
- 选举依据:每个Master-eligible节点都有一个唯一的ID和版本号。选举时,节点会比较自身与其他节点的ID和版本号,版本号高的优先,如果版本号相同则ID大的优先成为主节点。
节点网络短暂中断场景下保证集群正常运行的方式
- 故障检测:当节点网络短暂中断时,其他节点在一定时间内(如默认的ping_timeout时间)无法ping通该节点,就会认为该节点发生故障。
- 重新选举:假设主节点发生网络短暂中断,其他Master-eligible节点检测到主节点失联后,会发起重新选举。例如,集群中有节点A、B、C三个Master-eligible节点,当前A是主节点,若A网络短暂中断,B和C发现无法ping通A后,B和C开始竞争选举。假设B的版本号高于C,那么B会成为新的主节点,继续管理集群的元数据,保证集群正常运行。
- 恢复处理:当网络恢复,原主节点A重新上线,发现集群已有新的主节点B,A会自动调整为从节点角色,加入集群,接受主节点B的管理,集群恢复到正常状态,继续提供服务。