Elasticsearch8.1 -- 18. 集群中的节点发现

节点发现

节点发现机制, 是在 Elasticsearch 节点启动 或者 某个节点认为主节点发生故障 时,这个过程机制便会启动。

  • Elasticsearch 节点启动 时,节点基于 种子主机提供者 seed hosts providers 的配置进行节点发现。
  • 某个节点认为主节点发生故障 时, 节点基于 上一个集群已知的主资格节点集 master-eligible nodes that were in the last-known cluster 进行节点发现。

种子主机提供者 seed hosts providers

Elasticsearch 的种子主机提供者 seed hosts providers 有2种配置方式:settings-based 基于配置(默认) 和 file-based 基于文件

  • settings-based 基于配置(默认)
    discovery.seed_hosts:
       - 192.168.1.10:9300
       - 192.168.1.11 
       - seeds.mydomain.com 
    
    通过配置一个种子主机的静态列表, 用于节点启动时进行探测发现,从而连通集群。
  • file-based 基于文件
    discovery.seed_providers: file
    
    通过在 elasticsearch.yml 配置一个文件路径,文件位于 $ES_PATH_CONF/ 路径下。
    例如 $ES_PATH_CONF/unicast_hosts.txt
    10.10.10.5
    10.10.10.6:9305
    10.10.10.5:10005
    # an IPv6 address
    [2001:0db8:85a3:0000:0000:8a2e:0370:7334]:9301
    

PS: 如果同时配置了2种方式, 那么它们会同时作用为ES节点的种子列表。


节点发现过程
  • 主合格节点列表同步

    -.- 节点 connected and verify 连接并验证 种子列表中的每个节点, 判断是否为 master-eligible node 主合格节点
    -.- 如果是, 那么节点将会 与 远程节点共享它已知的所有master-eligible node 主合格节点

  • 普通节点循环嗅探

    -.- 普通节点(非 master-eligible node 主合格节点 ),会重复 主合格节点列表同步 过程, 直至 主节点被选举发现主节点

    -.- 等待间隔时间受 discovery.find_peers_interval 控制,默认为1s。

  • 主合格节点选举

    -.- 主合格节点master-eligible node,会重复 主合格节点列表同步 过程, 直至 主节点被选举 或者 有足够多的 master-eligible node 主合格节点来完成这轮主节点选举

    -.- 为什么要等待足够多的主合格节点来完成这轮主节点选举? 只有主合格节点master-eligible node才能参与选举,要想选举成功, 投票的主合格节点需要超过半数。

    -.- 等待间隔时间受 discovery.find_peers_interval 控制,默认为1s。

    -.- PS: 在Elasticsearch8.1 中主合格节点的投票配置(一组主合格节点)由 Elasticsearch 动态配置。即在节点加入或离开集群后,Elasticsearch 通过自动对投票配置进行相应更改来做出反应,以确保集群尽可能具有弹性。


场景
  • 节点加入
    通过种子列表嗅探集群中的每个节点,发现主节点则请求加入, 未发现则继续 普通节点循环嗅探 的过程。
    主节点将新节点加入集群的状态发布到集群, 集群状态发布成功则新节点加入集群成功。

  • 非主节点节点离开
    当一个节点出现3次ping不通的情况时,主节点会认为该节点已宕机,将该节点踢出集群。

  • 主节点离开
    当主节点发生故障时,集群中的其他节点将会ping当前的master eligible 节点,并从中选出一个新的主节点。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容