1. 脑裂问题

  • Split-Brain,分布式系统的经典网络问题,当出现网络问题,一个节点和其他节点无法连接
    • Node2 和 Node3 会重新选举 Master;
    • Node1 自己还是作为 Master,组成一个集群,同时更新 Cluster State;
    • 导致 2 个 Master,维护不同的 Cluster State。当网络恢复时,无法选择正确恢复

image.png

2. 如何避免脑裂问题

  • 限定一个选举条件,设置 quorum (法定数量),只有在 Master eligible 节点大于 quorum 时,才能进行选举

    • Quorum = (master 节点总数 / 2 )+1;
    • 当3个 master eligible 时,设置 discovery.zen.minimum_master_nodes 为 2,即可避免脑裂
  • 从 7.0 开始,无需这个配置

    • 移除 minimum_master_nodes 参数,让 ES 自己选择可以形成仲裁的节点;
    • 典型的主节点选举现在只需要很短的时间就可以完成。集群的伸缩变得更安全、更容易,并且可能造成丢失数据的系统配置选项更少了;
    • 节点更清楚的记录它们的状态有助于诊断为什么它们不能加入集群或为什么无法选举出主节点;

3. 配置节点类型

一个节点默认情况下是一个 Master eligible,data and ingest node;
image.png