MST

星途 面试题库

面试题:ElasticSearch MasterFaultDetection事件恢复中的选举机制

在ElasticSearch因MasterFaultDetection事件触发恢复时,新Master节点的选举机制是怎样的?请详细说明选举过程中的条件判断、影响因素以及可能出现的异常情况及处理方式。
21.7万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

选举机制概述

在Elasticsearch中,基于Zen Discovery机制进行Master节点选举。当MasterFaultDetection事件触发恢复时,候选Master节点(配置 node.master: true 的节点)之间通过交换ping请求和响应来发现彼此,并确定新的Master。

条件判断

  1. 节点ID:每个节点都有唯一的节点ID。在选举过程中,节点ID会作为一个标识。
  2. 节点权重:可以通过 node.master_weight 配置项设置节点的权重,权重高的节点在选举中有更大优势。默认为1。权重值范围是0 - 1000。
  3. 选举版本:每个参与选举的节点都有一个选举版本号。版本号高的节点优先成为Master。
  4. 集群状态版本:节点保存的集群状态版本号。版本号越高,表示该节点拥有的集群状态信息越新。

影响因素

  1. 网络稳定性:节点之间的网络连接质量直接影响选举过程。如果网络不稳定,可能导致ping请求和响应丢失,影响节点间信息交换。
  2. 节点数量:集群中的候选Master节点数量对选举有影响。法定人数(quorum)是选举的关键,法定人数计算公式为 (master_eligible_nodes / 2) + 1。只有超过法定人数的节点参与选举,选举才可能成功。
  3. 节点负载:节点的CPU、内存等资源负载情况会间接影响选举。高负载可能导致节点处理选举相关消息延迟。

异常情况及处理方式

  1. 脑裂问题
    • 情况描述:当网络分区发生时,集群可能被分割成多个部分,每个部分都可能选举出自己的Master节点,形成多个“大脑”,这就是脑裂问题。
    • 处理方式:通过设置合理的 discovery.zen.minimum_master_nodes 配置项(等同于法定人数)来避免脑裂。如果某个分区中的节点数量未达到法定人数,就无法选举出Master,从而防止脑裂。同时,Elasticsearch 7.0 及之后版本默认启用了 cluster.auto_failover 机制,用于检测和解决脑裂问题。
  2. 选举超时
    • 情况描述:如果在选举过程中,由于网络延迟或其他原因,节点在规定时间内没有收到足够的响应,就会发生选举超时。
    • 处理方式:节点会重新发起选举过程。可以通过 discovery.zen.ping_timeout 配置项调整ping请求的超时时间,默认是3秒。适当增加超时时间可以在网络不稳定时减少选举超时的概率。
  3. 节点故障
    • 情况描述:在选举过程中,如果候选Master节点发生故障,可能导致选举中断或结果异常。
    • 处理方式:其他存活的节点会检测到故障节点的离开(通过节点的ping机制),然后重新进行选举,将故障节点排除在选举之外。