暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ElasticSearch集群核心原理(下)

Alleria Windrunner 2020-12-30
357
上一篇我们介绍了ES的索引存储的核心原理,本篇我们一起来看一下ES集群剩下的几个核心概念:
  • 集群选举

  • 节点类型

  • 数据恢复

  • 故障探查



集群选举

首先我们来看集群选举,ES的集群选举主要涉及以下几块:
  • 涉及配置参数

  • 新节点加入

  • 宕机再次选举


关于配置参数,和集群相关的配置如下:
    # 如果`node.master`设置为了false,则该节点没资格参与`master`选举。node.master = true
    # 默认3秒,最好增加这个参数值,避免网络慢或者拥塞,确保集群启动稳定性 discovery.zen.ping_timeout: 3s
    # 用于控制选举行为发生的集群最小master节点数量,防止脑裂现象 discovery.zen.minimum_master_nodes : 2
    # 新节点加入集群的等待时间
    discovery.zen.join_timeout : 10s

    集群选举机制如下:
    1. 如果同时启动,按照nodeid进行排序,取出最小的做为master节点;

    2. 如果不是同时启动,则先启动的候选master节点会竞选为master节点。


    然后是新节点加入时候的动作,在节点完成选举后,新节点加入会发送 join request 到 master节点。默认会重试20次。
    最后如果宕机,集群node会再次进行 ping 过程,并选出一个新的 master。一旦一个节点被明确设为一个客户端节点( node.client设为true ),则不能再成为主节点 ( node.master会自动设为false )。


    节点类型

    下面的配置文件中有三类节点:
      #配置文件中给出了三种配置高性能集群拓扑结构的模式,如下:
      #1. 如果你想让节点从不选举为主节点,只用来存储数据,可作为负载器
      node.master: false
      node.data: true
      #2. 如果想让节点成为主节点,且不存储任何数据,并保有空闲资源,可作为协调器
      node.master: true
      node.data: false
      #3. 如果想让节点既不称为主节点,又不成为数据节点,那么可将他作为搜索器,从节点中获取数据,生 成搜索结果等
      node.master: false
      node.data: false

      Node.master:true才可以参与主节点竞选,作为主节点候选节点。Node.data : true 表示是数据节点,默认就是true。Coordingnate node : 表示是协调节点,如果节点仅仅只作为协调节点,必须将上面2个配置全部设置为false。协调节点只负责接受请求,转发请求(把请求路由到各个分片节点)。注意,一个节点可以充当一个或多个角色,默认 3个角色都有。

      数据恢复

      数据恢复也叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。


      故障探查

      ES的故障探查有两种:
      1. 通过master进行的,master会ping集群中所有的其他node,确保它们是否是存活着的。

      2. 每个node都会去ping master来确保master是存活的,否则会发起一个选举过程。


      关于数据探查的参数有以下三个:
        ping_interval : 每隔多长时间会ping一次node,默认是1s;
        ping_timeout : 每次ping的timeout等待时长是多长时间,默认是30s ;ping_retries : 如果一个node被ping多少次都失败了,就会认为node故障,默认是3次

        文章转载自Alleria Windrunner,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论