ES集群分片副本
  eHipUjOuzYYH 2023年11月02日 40 0

5 ES集群分片副本

5.1 提高ES集群可用性

如何提高 ES 集群系统的可用性;有如下两个方面;
服务可用性:
1.2个节点的情况下,允许其中1个节点停止服务;
2.多个节点的情况下,坏的节点不能超过集群一半以上;
数据可用性
1.通过副本 replication 解决,这样每个节点上都有完备的数据。
2.如下图所示,node2上是 oldxu_index 索引的一个完整副本数据。

ES集群分片副本_增加节点

5.2 增大ES集群的容量

1、如何增大 ES 集群系统的容量;我们需要想办法将数据均匀分布在所有节点上;
引入分片 shard 解决;

2、什么是分片,将一份完整数据分散为多个分片存储;
2.1. 分片是 es 支持 Pb 级数据的基石
2.2 分片存储了索引的部分数据,可以分布在任意节点上
2.3 分片存在主分片和副本分片之上,副本分片主要用来实现数据的高可用
2.4 副本分片的数据由主分片同步,可以有多个,用来提高读取数据性能
注意:主分片数在索引创建时指定且后续不允许在更改;默认ES7分片数为1个

3、如下图所示:在3个节点的集群中创建
oldxu_index 索引,指定3个分片,和1个副本

# 创建索引,设定主分片和副本分片 3 1 =6
PUT /oldxu_index
{
  "settings": {
    "index": {
      "number_of_shards": 3,
      "number_of_replicas": 1
    }
  }
}

# 动态修改副本分片
PUT /oldxu_index/_settings
{
  "number_of_replicas": 9
}

ES集群分片副本_硬件资源_02

点击more----> create index

ES集群分片副本_硬件资源_03

结果展示

ES集群分片副本_数据_04

5.3 增加节点能否提高容量

问题:目前一共有3个ES节点,如果此时增加一个新节点是否能提高 oldxu_index 索引数据容量?
答案:不能,因为 oldxu_index 只有3个分片,已经分布在3台节点上,那么新增的第四个节点对于oldxu_index 而言是无法使用到的。所以也无法带来数据容量的提升

ES集群分片副本_硬件资源_05

5.4 增加副本能否提高读性能

问题:目前一共有3个ES节点,如果增加副本数是否能提高 oldxu_index 的读吞吐量;
答案:不能,因为新增的副本还是会分布在这 node1、node2、node3 这三个节点上的,还是使用了相同的资源,
也就意味着有读请求来时,这些请求还是会分配到node1、node2、node3 上进行处理、也就意味着,还是利用了相同的硬件资源,所以不会提升读性能

ES集群分片副本_增加节点_06

如果需要增加读吞吐量性能,应该怎么来做
答案:增加读吞吐量还是需要添加节点,比如在增加三个节点 node4、node5、node6 那么将原来的 R0、R1、R2 分别迁移至新增的三个节点上,
当有读请求来时会被分配 node4、node5、node6,也就意味着有新的 CPU、内存、IO,这样就不会在占用 node1、node2、node3 的硬件资源,
那么这个时候读吞吐量才会得到真正的提升;

ES集群分片副本_数据_07

5.5 副本与分片总结

分片数和副本的设定很重要,需要提前规划好
1、过小会导致后续无法通过增加节点实现水平扩容;
2、设置分片过大会导致一个节点上分布过多的分片,造成资源浪费。分片过多也会影响查询性能;
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  eHipUjOuzYYH   2023年12月07日   28   0   0 数据乐观锁redis
  jnZtF7Co41Wg   2023年12月09日   28   0   0 客户端服务端数据