这是一篇译文,原文(Every shard deserves a home)于2016-11-11宣布在elastic官方博客。译文稍有变动
阅读提示
rebalance 从头均衡 relocation 从头安放。即:集群已经选定了方针shard,需要从primary shard向这个方针shard复制数据 reallocation 从头分派。即:集群把某个/ 些索引的shard漫衍到集群中节点上 shard allocation shard分派 shard copy 分片副本(即可以是primary shard也可以是replica shard) master master(主节点。利用英文原词,不再翻译) shard shard(分片。利用英文原词,不再翻译) primary shard primary shard(主分片。利用英文原词,不再翻译) replica shard replica shard(副分片。利用英文原词,不再翻译) segment segment(段,Lucene中的观念。利用英文原词,不再翻译)
文章正文开始
文中这些优秀的幻灯片来自于Core Elasticsearch: Operations课程,昆山软件开发,它们有助于表明shard分派(shard allocation)的观念。我们推荐您介入完整课程以更好的领略这些观念,但,我会在此列出培训的梗概
Shard分派(shard allocation)是把shard分派给节点的进程。 当初始规复(initial recovery)、副分片分派(replica allocation)、从头均衡(rebalancing)或向集群中插手/移除节点时就会产生shard分派。大部门时间,你无需挂记它,它在靠山由elasticsearch完成。假如你发明本身对这些细节感想好奇,这篇博客将摸索几种差异场景下的shard分派
本文的集群由4个节点构成,如下图所示。文中的例子都利用此集群完成
劳务调派信息打点系统 earch的所有数据都是通过Lucene存储的" src="http://www.importnew.com/https:/img-blog.csdn.net/20180416150733132" />
我们将包围四种差异的场景
场景一、 建设索引
劳务调派信息打点系统 earch的所有数据都是通过Lucene存储的" src="http://www.importnew.com/https:/img-blog.csdn.net/20180416150827691" />
如上图所示,这是最简朴的用例。我们建设了索引c,于是我们必需得为它分派新的shard。当索引第一个文档到这个新的索引时,就会为它分派shard。上图利用Kinaba中的Console插件(之前称为Sense)来执行灰色高亮的呼吁,索引一个文档到索引中
对付索引c,我们正在建设一个primary shard和一个replica shard。master需要建设索引c,并为它分派2个shard,即一个primary shard和一个replica shard。集群会通过以下方法来均衡集群
Shard分派进程中存在一些限制,分派抉择器(allocation decider)在做分派时会遵从这些限制。分派抉择器会评估集群要做的每一个抉择,并给出yes/no的回覆。分派抉择器运行在master上。你可以认为是master给出修改提议,分派抉择器则奉告master此修改提议是否能通过。
关于此最简朴的一个例子就是,你不能把同一个shard的primary shard和replica shard放到同一个节点上
关于此尚有一些其他例子
1. 基于Hot/Warm设置作分派过滤
劳务调派信息打点系统 earch的所有数据都是通过Lucene存储的" src="http://www.importnew.com/https:/img-blog.csdn.net/20180416151005623" />
这答允你把shard只放到具有特定属性的节点上,分派抉择器会按照Hot/Warm设置接管或拒绝集群所作的抉择。这是用户抉择直接节制分派抉择器的例子
2. 磁盘利用环境分派器(Disk usage allocator)
劳务调派信息打点系统 earch的所有数据都是通过Lucene存储的" src="http://www.importnew.com/https:/img-blog.csdn.net/20180416151056765" />
master监控集群中磁盘的利用环境,并按照高水位/低水位阈值节制shard分派(见下面的:“场景二、 是时候移动shard了”)
3. 抑制(Throttles)
劳务调派信息打点系统 earch的所有数据都是通过Lucene存储的" src="http://www.importnew.com/https:/img-blog.csdn.net/20180416151134545" />
这意味着,理论上我们可以把shard分派到某节点,但,此节点上有太多正在举办中的规复(recovery)。为了掩护节点而且也答允规复举办,分派抉择器让集群举办期待,然后在下一个迭代中再重试把shard分派给同一个节点
Shard初始化
劳务调派信息打点系统 earch的所有数据都是通过Lucene存储的" src="http://www.importnew.com/https:/img-blog.csdn.net/20180416151208552" />