写点什么

Elastic search 单节点、两节点、三节点环境

用户头像
escray
关注
发布于: 2021 年 01 月 18 日
Elastic search 单节点、两节点、三节点环境

文字内容整理自 B 站中华石杉的 Elasticsearch 顶尖高手系列课程核心知识篇,图片来自于 Elastic 官网和 Thijs Feryn 2015 年的一次演讲(可能过时了)

0. shard & replica 机制再次梳理


(1)index 包含多个 shard

(2)每个 shard 都是一个最小工作单元,承载部分数据,同时也是独立的 Lucene 实例,具备完整的建立索引和处理请求的能力

(3)增减节点时,shard 会自动在集群的节点中负载均衡

(4)每个 document 肯定只存在于某一个 primary shard 以及其对应的 replica shard 中;一个 document 不可能存在于多个 primary shard(提示:Document 类似于数据表中的一行 )

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

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

(7)primary shard 的默认数量是 5,replica 默认是 1,默认有 10 个 shard,5 个 primary shard,5 个 replica shard(这个似乎是 5.2 的特性)

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

1. 单 node 环境下创建 index 是什么样子的



(1)单 node 环境下,创建一个 index,有 3 个 primary shard,3 个 replica shard(图中没有显示 replica shard)

(2)集群 status 是 yellow

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

(4)集群可以正常工作,但是一旦出现节点宕机,数据全部丢失,而且集群不可用,无法承接任何请求


PUT /test_index{   "settings" : {      "number_of_shards" : 3,      "number_of_replicas" : 1   }}
复制代码


顺便说,单节点的 Elasticsearch 一般只用于开发环境。

2. 两节点环境下 replica shard 是如何分配的



(1)replica shard 分配:3 个 primary shard,3 个 replica shard,1 node(图中的 Primary Shard 还没有迁移到 Node2 上)

(2)primary ---> replica 同步

(2)读请求:primary/replica


两节点的 Elasticsearch 理想状态:



3. 三节点环境



从图中可以看到 Prime Shard 0 和 Replica Shard 2 已经迁移到了 Node 3,但是我总感觉似乎还没有完成。


三节点 Elasticsearch 理想的状态应该如下图:



发布于: 2021 年 01 月 18 日阅读数: 38
用户头像

escray

关注

Let's Go 2017.11.19 加入

在学 Elasticsearch 的项目经理

评论

发布
暂无评论
Elastic search 单节点、两节点、三节点环境