Master 节点和 候选 Master节点有什么区别?

参考回答

在 Elasticsearch 中,Master 节点候选 Master 节点 是集群管理和协调的关键角色。它们在集群的选举、管理和维护方面有着重要的作用,但各自的功能和责任有所不同。

1. Master 节点(Master Node)

  • 职责:Master 节点是集群中负责集群状态管理和协调的核心节点。它的主要任务是管理集群的元数据,包括索引的创建和删除、集群的状态、分片的分配和重新分配等。
  • 功能
    • 负责 集群状态管理:Master 节点跟踪集群的元数据(如索引的状态、节点的状态等),并确保集群的一致性。
    • 分片分配:当文档被索引时,Master 节点负责确定如何分配分片到数据节点,并且如果某些节点故障或新节点加入,Master 节点会重新分配分片。
    • 集群健康检查:Master 节点会定期检查集群的健康状态,确保节点和分片正常运行。
    • 节点的加入和离开:当一个节点加入集群时,Master 节点会管理节点的加入过程并更新集群状态;当节点离开集群时,Master 节点会重新分配分片。
  • 选举过程:在集群启动时,会通过集群中的所有节点进行 主节点选举。只有获得多数节点支持的节点会被选为 Master 节点。

  • 注意:虽然 Master 节点负责管理集群元数据,但它不直接处理文档的存储和查询。这些任务由 数据节点(Data Nodes) 来完成。

    示例
    在一个集群中,有一个 Master 节点(节点A),它负责协调其他节点,维护集群的整体状态,并确保分片的健康分配。

2. 候选 Master 节点(Eligible Master Node)

  • 职责:候选 Master 节点是指那些可以成为 Master 节点的节点,候选节点有能力在需要时成为 Master 节点。
  • 功能

    • 参与主节点选举:当当前 Master 节点失效时,候选节点会通过投票选举出一个新的 Master 节点。如果当前 Master 节点不可用,集群会启动新的选举过程,候选 Master 节点会参与其中。
    • 具有主节点职责:候选节点具备执行主节点职能的能力,如管理集群状态、分配分片和节点的加入/离开等。
  • 集群配置:通常,集群中会有多个候选 Master 节点,以确保如果一个 Master 节点失效,集群仍然可以选举出新的 Master 节点,保证集群的高可用性。

  • 与数据节点的关系:候选 Master 节点也可以是数据节点,这意味着它既可以参与集群的管理,也可以存储数据并处理查询请求。

  • 最大化可靠性:通过设置多个候选 Master 节点,确保即使其中一个或几个节点失败,集群依然能够在剩余节点中选举出新的 Master 节点。

    示例
    集群中有 3 个节点,节点 A、B 和 C。假设节点 A 当前是 Master 节点,而节点 B 和 C 都是候选 Master 节点。如果节点 A 失败,节点 B 或 C 可以通过选举成为新的 Master 节点。

3. Master 节点与候选 Master 节点的区别

特性 Master 节点 候选 Master 节点
职责 负责管理集群状态,分配分片,维护元数据等 参与主节点选举,在主节点失效时可以成为新的主节点
功能 处理集群的元数据、分片分配、节点管理等 可以执行主节点的所有任务,但通常不担任主节点职能
选举角色 通过选举成为集群主节点,并执行管理任务 具备成为 Master 节点的能力,候选参与主节点选举
集群中数量 通常只有一个 Master 节点 集群中可以有多个候选 Master 节点
数据节点角色 不负责数据存储和查询 可以同时作为数据节点,存储数据和处理查询
故障恢复 如果 Master 节点失败,集群会进行主节点选举 在 Master 节点失败时,候选节点会被选举为新的 Master 节点
节点配置 配置 node.master: true 以担任主节点角色 配置 node.master: true 但不一定担任当前主节点角色

4. 如何配置 Master 节点与候选 Master 节点

  • 配置 Master 节点:在 elasticsearch.yml 配置文件中,设置 node.master: true 来指定节点可以作为 Master 节点。

    “`yaml
    node.master: true
    “`
    如果希望节点作为候选 Master 节点而不担任当前的 Master 节点,则需要确保配置 `discovery.zen.minimum_master_nodes` 参数来减少主节点选举中发生脑裂的可能性。

  • 配置候选 Master 节点:在 elasticsearch.yml 配置文件中,配置多个节点作为候选 Master 节点。这些节点可以是数据节点或专门的主节点。

    “`yaml
    node.master: true
    node.data: true
    “`

  • 确保集群高可用性:集群的 discovery.zen.minimum_master_nodes 配置用于防止脑裂。它确保当选举新 Master 节点时,只有多数节点同意选举的节点才会被选为主节点。

    示例:假设集群有 3 个节点,你可以设置:

    “`yaml
    discovery.zen.minimum_master_nodes: 2
    “`

总结

  • Master 节点 是负责管理集群状态、分片分配和节点管理的核心节点,集群中只能有一个主节点。
  • 候选 Master 节点 是可以成为 Master 节点的节点,通常集群中会有多个候选节点,确保在当前 Master 节点失效时,能够快速选举出新的 Master 节点。
  • 通过合理配置 node.masterdiscovery.zen.minimum_master_nodes 等参数,可以确保集群在多节点故障或网络分区情况下的高可用性和稳定性。

发表评论

后才能评论