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)集群可以正常工作,但是一旦出现节点宕机,数据全部丢失,而且集群不可用,无法承接任何请求
顺便说,单节点的 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 理想的状态应该如下图:
版权声明: 本文为 InfoQ 作者【escray】的原创文章。
原文链接:【http://xie.infoq.cn/article/d66b74947c58eae8073159dc9】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论