elasticsearch学习笔记(九)——shard&replica机制以及ES集群节点的问题

栏目: 后端 · 发布时间: 6年前

内容简介:(1)一个index包含多个shard(2)每个shard都是一个最小工作单元,承载部分数据,可以说就是一个lucene实例,拥有完整的建立索引和处理请求的能力(3)每当ES集群增加节点时,shard会自动在nodes中实现负载均衡

1、shard和replica知识归纳梳理

(1)一个index包含多个shard

(2)每个shard都是一个最小工作单元,承载部分数据,可以说就是一个lucene实例,拥有完整的建立索引和处理请求的能力

(3)每当ES集群增加节点时,shard会自动在nodes中实现负载均衡

(4)对于primary shard和replica shard,每个document肯定只存在于某一个primary shard以及其对应的replica shard中,不可能存在于多个primary shard中

(5)replica shard时primary shard的副本,主要负责容错,以及承担读请求的负载

(6)primary shard的数量在创建索引的时候就已经固定了,但是replica shard的数量可以随时修改

(7)primary shard的默认数量是5个,replica默认是1,也就是在默认的情况下,有5个primary shard和5个replica shard

(8)primary shard不能和自己的replica shard放在同一个节点上(否则节点宕机,primary shard和副本都丢失,也就起不到容错的作用了),但是可以和其它primary shard的replica shard放在同一个节点上

2、对于单节点ES集群存在的问题

假设我们创建一个索引test_index

PUT /test_index
{
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 1
  }
}

(1)单node环境下,创建一个index叫test_index,有5个primary shard,5个replica shard

(2)集群的status是yellow

GET /_cat/health?v
epoch      timestamp cluster       status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1555495650 10:07:30  elasticsearch yellow          1         1      8   8    0    0        6             0                  -                 57.1%

(3)这个时候,只会将5个primary shard分配到仅有的一个node上去,另外5个replica shard是无法分配的

(4)此时集群是可以正常工作的,但是一旦出现节点宕机,数据就会全部丢失,此时节点也不可用,无法承担任何请求

结构如下:

elasticsearch学习笔记(九)——shard&replica机制以及ES集群节点的问题

3、对于两个节点ES集群

上面test_index索引的shard分配的结构就会变成:

elasticsearch学习笔记(九)——shard&replica机制以及ES集群节点的问题

此时即使存放primary shard的节点挂掉了,ES的shard allocation 会被触发,此时对应的primary shard的一个副本会变成primary shard

在什么场景下会触发Shard的Allocation:

创建/删除一个Index;

加入/离开一个Node;

手动执行了Reroute命令;

修改了Replica设置;


以上所述就是小编给大家介绍的《elasticsearch学习笔记(九)——shard&replica机制以及ES集群节点的问题》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据密集型应用系统设计

数据密集型应用系统设计

Martin Kleppmann / 赵军平、李三平、吕云松、耿煜 / 中国电力出版社 / 2018-9-1 / 128

全书分为三大部分: 第一部分,主要讨论有关增强数据密集型应用系统所需的若干基本原则。首先开篇第1章即瞄准目标:可靠性、可扩展性与可维护性,如何认识这些问题以及如何达成目标。第2章我们比较了多种不同的数据模型和查询语言,讨论各自的适用场景。接下来第3章主要针对存储引擎,即数据库是如何安排磁盘结构从而提高检索效率。第4章转向数据编码(序列化)方面,包括常见模式的演化历程。 第二部分,我们将......一起来看看 《数据密集型应用系统设计》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

html转js在线工具
html转js在线工具

html转js在线工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换