• 为什么es集群至少需要三个节点(转)


    elasticsearch集群

    graph LR;
        A(Master Node) --- B(Data Node);
        A --- C(Data Node);
        B --- C;

    Master: 在Elasticsearch中Master仅仅负责维护集群的状态

    1. 创建或删除索引
    2. 跟踪哪些节点是集群的一部分
    3. 决定将哪些碎片分配给哪个节点
    4. 等集群范围的操作

    上面的一些集群信息, 是由Master节点进行维护, 但是 Master也会把节点信息, 同步给其他节点, 但是只有master节点可以修改.

    点击查看Elasticsearch节点介绍

    为什么要至少三个节点

    首先查看 Elasticsearch 的配置文件, 如下:
    Zen Discovery 官方介绍

    # 传递初始主机列表,以便在启动新节点时执行发现
    discovery.zen.ping.unicast.hosts: ["192.168.xxx.xxx:9300", "192.168.xxx.xxx:9300"]
    # 选举Maste时需要的节点数 (total number of master-eligible nodes / 2 + 1) 防止“防止脑裂”
    discovery.zen.minimum_master_nodes: 2
    # 一个节点多久ping一次,默认1s
    discovery.zen.fd.ping_interval: 1s
    # 等待ping返回时间,默认30s
    discovery.zen.fd.ping_timeout: 30s
    # ping超时重试次数,默认3次
    discovery.zen.fd.ping_retries: 3
    
    discovery.zen.minimum_master_nodes: 2
    

    其中 minimum_master_nodes 配置是为了防止脑裂

    假设 Elasticsearch 有两个节点
    graph LR;
        A(Master Node) --- B(Data Node);
    graph LR;
        A(Master Node) -.X.- B(Data Node);
    1. discovery.zen.minimum_master_nodes: 1

      此时出现网络波动, 导致 A—B 之间短暂断开连接, 根据选举规则, B将自己选举为 Master, 当网络波动结束, 就会出现两个Master的情况.

          graph LR;
           A(Master Node 宕机) --- B(Data Node);
    2. discovery.zen.minimum_master_nodes: 2

      Master 出现故障, 则 B 将永远不可能将自己选择为 Master

    Elasticsearch 有三个节点

    三节点配置: discovery.zen.minimum_master_nodes: 2

    graph LR;
        A(Master Node) -.X.- B(Data Node);
        A -.X.- C(Data Node);
        B --- C;

    出现网络波动 A 节点 和 别的节点短暂断开连接

    graph LR;
        A(Master Node -> Data Node) -.X.- B(Data Node -> Master Node);
        A -.X.- C(Data Node);
        B --- C;

    A节点降级, B和C 进行选举, 此处模拟选举B为 Master Node

    graph LR;
        A(Data Node) --- B(Master Node);
        A --- C(Data Node);
        B --- C;

    网络恢复后的节点状况.

    总结

    以上可以看出, 通过配置 minimum_master_nodes 来防止出现脑裂
    同时在生产过程中, 为了尽量保持集群高可用, 至少需要三台机器搭建集群

    https://www.dazhuanlan.com/2019/12/19/5dfb0b8307037/

  • 相关阅读:
    NLP预训练模型+模型蒸馏与压缩
    treevalue——Master Nested Data Like Tensor
    vuecli项目根据线上环境分别打出测试包和生产包
    vue中移动端禁止页面滚动
    Iframe高度自适应
    Windows激活工具《KMS》
    使用宝塔面板部署商城项目到云服务器的案例
    电脑软件卸载神器
    react主动调用input file选择文件
    20192429马一 202120222 《汇编语言程序设计》前四章学习报告
  • 原文地址:https://www.cnblogs.com/xiaohanlin/p/14155964.html
Copyright © 2020-2023  润新知