浅析Elasticsearch分布式索引架构,ES分片,路由,性能平衡

目录标题

  • 1.合适的分片和副本数
    • ES单机至集群扩容
    • ES Node主分片宕机恢复
    • 配置合适的分片,副本数量
  • 2、路由、分配器
    • 路由
    • 分片分配器
      • even_shard分片分配器
      • balanced分片分配器

1.合适的分片和副本数

       什么是分片:Elasticsearch将数据散步到多个物理Lucene索引上,这些Lucene索引称为分片(shard),而散步这些分片的过程叫做分片处理

       副本:分片的copy备份

       Lucene索引与Elasticsearch索引:一个分片是一个小的Lucene索引,从技术上讲,ES索引与Lucene索引是一样的,差别在于额外的特性上。个人理解ES索引附着于Lucene索引,Lucene索引针对于分片存储,ES索引针对于查询检索。

  • ES单机至集群扩容

           当单机容器容量满不了需求后,进行集群扩容,我们可以仅仅只增加一台安装ES的服务器,Elasticsearch会重新平衡集群,并且不需要额外的数据开销。因为是直接将部分索引转移到集群的Node点。
           因此ES进行分片处理在某种方面是优秀的,然而在查询的时候是需要付出代价的,这个过程需要在各个分片中获取到文档,然后进行合并,分片越多在合并的时候开销也会越多。

           以下是扩容流程,当然Node集群点再平衡集群时,不一定是一个Node点位全部存储副本或者分片。
    浅析Elasticsearch分布式索引架构,ES分片,路由,性能平衡_第1张图片

  • ES Node主分片宕机恢复

           Master Node在检测到一个主分片节点宕机后,会启动平衡恢复,宕机主分片节点对应的副本Node节点,会转正成为Node主分片节点,Matser Node会在剩余的节点中,再创建Node副本,并在剩余节点中平衡分配存储节点。
    浅析Elasticsearch分布式索引架构,ES分片,路由,性能平衡_第2张图片

  • 配置合适的分片,副本数量

           上述两小点,简述了ES扩容,以及宕机恢复机制。由上述看,分片副本数量不宜过少,当然也不能过多,过多对查询合并不友好。

     节点最大数 = 分片数 * (副本数量+1)
    

           如果计划使用十个分片,和两个备份,那么最大的节点数应该是三十。即十个主分片一个占一个节点,二十个副本分别占一个节点。

2、路由、分配器

  • 路由

            查询时请求会被发送到所有分片,当我们想删除文档或者新增的时候,ES必须知道文档的具体位置,这个时候路由作用就出来了,相同的路由值会指向同一个分片。路由就是一个存储文档信息的特殊分片。
           一个给定的分片上可以拥有不同路由值的文档,路由可以限制查询时使用的节点数(指定路由查询),但是不同代替过滤功能。

    #查询所有路由分片信息
    GET _cat/shards/
    #查询monday_index索引的路由(分片)分布
    GET _cat/shards/monday_index
    #查询路由值为0的分片上clients索引的信息
    GET clients/_search?routing=0
    
  • 分片分配器

    分片器,以下只简单提以下概念,具体实现有兴趣再深究。
    分片分配器承担分片分配职责,Elasticsearch提供even_shard,balanced(默认)。两种分配器。

    • even_shard分片分配器

             确保每个节点上具有相同数量的分片(默认情况下),同时也能禁止主分片与其副本存储在同一个节点,ES在分配时,会从储存负载最高的节点想存储较低的节点移动分片,直到集群完全平衡,或者无法再移动。只要分片及其副本不在相同的节点上,分配器就认为是正常工作,从不关心来自同一索引的不同分片存放位置(在不在同一节点)。

    • balanced分片分配器

             基于可控制的权重进行分配,所有因子与其权重的乘积的和大于已定义的阈值,那么这类索引上的分片就需要再分配平衡了。

      balanced.shard:默认值 0.45  分片总数权重
      balanced.index 默认值0.5 给定索引分片数的权重
      balanced.primary  默认值0.05  阈值
      balanced.threshold 默认值1.0  特定因子权重
      

你可能感兴趣的:(ELK)