• Elasticsearch6.x 模块 modules


    本节主要介绍负责es中功能的各个方面的模块。

    每个模块都有静态设置和动态设置,静态设置需要是全局的,需要在集群中的每个节点上设置。

    动态设置项可以动态更新。

    本节模块主要有:

    cluster-level routing and shard allocation   用于控制将分片分配给节点的位置,时间和设置
    discovery   节点如何互相发现以形成集群
    gateway    在恢复开始之前,需要加入集群的节点数
    http    用于控制http rest接口的设置
    indices    全局索引相关设置
    network   控制默认网络设置
    node client    java节点客户端加入集群,但不保存数据或充当主节点
    painless    es内置的脚本语言,旨在尽可能安全
    plugins    用于扩展es功能
    scripting    自定义脚本
    snapshot/restore    使用快照进行备份恢复
    thread pools    es中使用的线程池的信息
    transport    配置传输网络层,由es内部使用,以在节点之间进行通信
    tribe nodes    部落节点加入一个或多个集群,并充当他们之间的联合客户端,废弃
    cross cluster search ......

    详细介绍
    cluster-level routing and shard allocation
      master的一个主要作用是决定哪个分片分配到哪些nodes,以及何时移除分片以达到平衡
      cluster level shard allocation   分片分配是将分片分配给节点的过程,其可能发生在初始恢复,副本分配,重新平衡或添加删除节点期间

      cluster.routing.allocation.enable 分片分配的配置,如可以分配任何分片,只能分配主分片,不允许分配分片..
      cluster.routing.allocation.node_concurrent_incoming_recoveries 并发恢复分片的数量
      cluster.routing.allocation.node_concurrent_outgoing_recoveries 并发传出分片的数量
      cluster.routing.rebalance.enable 允许碎片重新平衡

      disk-based shard allocation

    在确定是将新分片分配给该节点还是主动重新定位分片之前,es会考虑节点的磁盘空间
    cluster.routing.allocation.disk.threshold_enabled 默认为true,false表示禁用磁盘分配决策策略
    cluster.routing.allocation.disk.watermark.low 控制磁盘使用的低水平线,默认85%,意味着es不会将分片分配给使用磁盘超过85%的节点。也可以设置绝对值大小,如500m
    cluster.routing.allocation.disk.watermark.high 默认90%,超过的话会触发重分配分片
    cluster.routing.allocation.disk.watermark.flood_stage 默认95%,索引进入只读模式
    cluster.info.update.interval es检查集群中磁盘使用情况的时间间隔

    shard allocation filtering
      指定分片可以分配到哪写节点,不可以分配到哪些节点,匹配参数有 ip,name,host
    discovery
      发现模块负责发现集群中的节点,以及选择主节点。
      es是基于对等的系统,如果操作被广播/委派,则节点直接相互通信。所有主要api(index,delete,search)都不和主节点通讯。
      主节点的职责是维护全局集群状态,并在节点加入离开集群时重新分配分片。每次集群状态更新时,集群中的其它节点都会收到状态变化
      zen discovery
        es内置的发现模块和默认配置,提供单播实现,它分为几个子模块
      ping
        节点使用发现机制查找其它节点的过程。
      单播(unicast)
        单播发现需要提供一组hosts列表,由hosts参数配置
      hosts.resolve_timeout 等待dns解析的最大时间,默认5S

    master election
      discovery.zen.ping_timeout 默认3S,尝试3次(预期结果:加入已有集群,或者开始选举)。如果依然没能加入集群,ping模块重启。一旦一个节点准备加入集群,它会向master发送一个超时时间为discovery.zen.join_timeout的请求(默认为ping超时的20倍)
      discovery.zen.master_election.ignore_non_master_pings 忽略非配置为master节点的选票信息
      discovery.zen.minimum_master_nodes 集群中至少需要存在的配置master节点的数量
    fault detection
      共有两个错误探测线程在工作,一个是由master运行,向其它节点发送ping请求来确认它们活着。另一组线程是每个节点向master发送ping请求来确定自己是否活着,活着master是否挂了。
      ping_interval 默认1S,ping的频率
      ping_timeout 默认30S,等待ping应答的超时时间
      ping_retries 默认3次,失败重试次数
    cluster state updates
      主节点是集群中唯一可以更新集群状态的节点。主节点一次处理一个集群状态更新,应用所需的更改并将最新的信息发送给集群中其它节点。其它节点接收发布消息,发送应答,master需要收到超过discovery.zen.minimum_master_nodes的应答才能被提交。(超时时间为discovery.zen.commit_timeout,默认30S)
      一旦收到足够的应答,集群状态更新才能得以提交,并发送给所有nodes。节点更新集群状态。在继续处理队列中的下一个更新之前,主节点等待所有节点响应,直到超时。超时时间: discovery.zen.publish_timeout,默认30S
    no master block
      要使集群完全正常运行,它必须具有活动主节点。
      discovery.zen.no_master_block 设置当没有master时,什么样的操作将被拒绝(不应用于节点级别的apis,如node info api)
        all 拒绝所有的操作
        write 拒绝写操作
    node
      每个es实例就是一个节点,连接节点的集合称为集群。
      所有的节点都知道集群中的其它节点,可以将client端请求转发给其它节点,每个节点都有一个或多个作用。
    master-eligible node(符合主节点的节点)
      node.master设置为true的节点,使其有资格被选为集群主节点
    data node
      node.data为true的节点,数据节点保存数据并保存与数据相关的操作,如CRUD,搜素、聚合
    ingest node(摄取节点)
      node.ingest为true的节点。应用ingest pipeline来丰富文档,负载量大的时候需要使用单独的摄取节点。
    tribe node(部落节点)
      协调节点,可以连接到多个集群并在所有连接的集群中执行搜索和其它操作。
    plugins
      用于扩展功能
    scripting
      painless是默认的脚本语言,...待分析
    snapshot/restore
      备份恢复,以索引为基本单位
    thread pools
      节点包含多个线程池,以便改进节点内线程内存消耗的管理方式。主要线程池如下:

    generic
    适用于通用操作
    index
    用于索引、删除操作,固定大小,线程个数为cpu核数,队列大小为200
    search
    用于计数,搜索,建议操作。线程个数为cpu核数*3/2+1,队列大小为1000
    get
    用于get操作,线程个数为cpu核数,队列大小为1000
    bulk
    用于bulk操作,,线程个数为cpu核数,队列大小200
    snapshot
    备份恢复线程,最大五个线程,线程大小可变,可以理解为非核心线程
    warmer
    用于分段预热操作,空闲线程保活5min,最大线程数5
    refresh
    用于refresh操作,空闲线程保活5min,最大线程数10
    listener
    java client监听线程,最大10
    线程类型:fixed、scaling。前者类似java的核心线程,后者类似核心线程加max线程

    transport
      传输模块用于集群内节点之间的通信。从一个节点到另一个节点的每个调用都使用传输模块(如节点间http get请求转发)
      transport.tcp.port 绑定端口范围,默认是9300-9400
      transport.host 用于指定绑定的host
      ...
      同样的支持常规的tcp连接配置(地址复用,长连接,no_delay,大小)
    tribe nodes
      已经废弃...
    cross cluster search
      ...... 待分析

  • 相关阅读:
    OpenGL ES学习001---绘制三角形
    Mac关机时处于黑屏状态
    静态变量和实例变量的区别(配图解释专业术语,通俗易懂)
    用shape画内圆外方,形成一个圆形头像
    最全的敏捷认证对比(CSM/PMI-ACP/EXIN)
    Certified Scrum Master CSM 中文资料大全
    如何打造优秀的远程敏捷团队(9步)
    博客搬家
    权威的国际敏捷认证Certified Scrum Master (CSM)
    博客园入驻了
  • 原文地址:https://www.cnblogs.com/gc65/p/10685988.html
Copyright © 2020-2023  润新知