elasticsearch 集群分片分配,你需要知道的一些知识点

前言

前面我们学习过,master节点的职责有:

  • 负责决定当前某个分片要分配到哪个节点上面。
  • 在节点间移动分片,保证集群的平衡。等等。
分片分配-基于集群配置

分片分配是指将分片分配到某个主机节点上的一个过程。触发的场景有:

  • 初始化恢复
  • 分片副本分配
  • 集群平衡
  • 集群节点加入或者移除

分片的分配,对整个es集群有重要的影响,所以,如何熟悉控制它,是一个很重要的知识点。es集群提供设置集群允许分配那种类型的分片,包括所有分片(默认)、主分片、新索引的主分片、禁止所有索引分配分片。这几个选项。

可能你会觉得奇怪,禁止分片分配,那还怎么玩?

存在即是合理的,这个属性在运维集群(滚动重启、需要维护集群,推迟分片分配)的时候用处很大,比如,在手动关闭掉一个节点后,集群会在固定的一个时间窗口后发现节点的丢失,并且开始数据平衡,这个操作在多个数据量较大的分片上平衡是相当的耗时的,所以在这种情况下,可以在集群级别上,先禁止索引分配分片,
维护完毕后,再设置回来。

小结:在你知道节点会从故障中很快恢复回来的时候,可以使用它来推迟副本分片的移动。

GIFV5.gif

index.unassigned.node_left.delayed_timeout

会让你的集群在触发重新分配前有时间去检测节点是否会重新加入。

  • 延迟分配不会阻止副本被提拔为主分片。集群会立马进行必要的提拔来让集群回到 yellow状态。缺失副本的重建是这个配置唯一能控制延迟的对象。
    也就是说,这个delayed_timeout只对副本的重建起作用。

  • 图中并没有提到的一点是,如果宕机的节点是Master节点,则集群会多一步【选主】动作,因为集群要想正常工作,必须得从Master候选节点(配置node.master: true)中选拔一个主节点出来。

阻止一个主机上运行多个实例

在CPU和内存资源富余的情况下,可能会使用一台主机启动多个实例的情况,这在一定程度上能充分利用资源,但同时也带来了风险。以一个主机启动两个实例为例。


file

由图可知,192.161.11.12这台主机上部署了两个es实例,node-1和node-2。

假如此索引有1个副本,图上分片1和它的副本分别分片到了node-1、node-2。

在这种情况下,可用性是比较低的,如果这台主机宕机,
那么此索引的分片1数据就会全部丢失。

如何避免这种情况呢?当然就是避免在一主机上启动多个实例,
或者通过设置:cluster.routing.allocation.same_shard.host:true。
来强制阻止这种情况发生。

分片分配-基于磁盘感知

elasticsearch除了从集群整体层面考虑分片分配,同时也会考虑到可用磁盘空间等环境因素。

  • elasticsearch在向某个主机的节点上分配分片时,会考虑其可用的磁盘空间。
    disk.watermark.low代表着磁盘使用率的低水位线,默认85%,这个配置意味着,es不会将分片分配给超过这个值的节点,此设置对新创建的索引的主分片没有影响,但是会阻止分配它们的副本。

同理存在高水位线配置disk.watermark.high. 默认为90% ,这意味着Elasticsearch将尝试将分片从磁盘使用率超过90%的节点上分离出来,这个配置同样影响集群的平衡。

防止节点用完磁盘空间的最后手段的配置,disk.watermark.flood_stage,默认值95%,采用强制只读的方式来保护集群和主机。

机架感知

机架感知,让elasticsearch在分配分片时,考虑物理硬件配置。
感知物理硬件配置的好处是:当硬件出现问题时,比如物理机、或者同一机架,某一个机房出问题时,依靠物理感知,寻求一个最优的部署配置,最大程度的保证集群可用性。

不过单纯部署是无法让其得知对应的物理部署的,所以我们需要指定相关配置的值,来告诉es。具体配置方式有两种:

  • /bin/elasticsearch -Enode.attr.rack_id=rack_one` 启动时指定。
  • cluster.routing.allocation.awareness.attributes: rack_id 配置文件中指定。
  • es可以考虑将不同的节点配置到不同的物理机器上去。
  • 不同的节点分配到不同的物理机架。
  • 不同的节点分配到不同的网络区域中去。
CAP理论

机架感知需要考虑的情况(权衡可靠性、可用性、带宽消耗等各种情况)。
elasticsearch作为分布式的组件,CAP特性中的P(分区容错性)必须要考虑。
用通俗的语言来讲一下就是:我们知道,正常情况下es集群的各个节点应该都是互相连通的。
然而无论是环境还是人为因素影响,都可能造成节点的故障,此时网络可能会被分为几块区域。如果一个数据只在一个节点上保存,那么无法连通后,就再也访问不到这个数据了,这时我们说它是分区无法容忍的。

file
分片分配过滤

允许某些节点或某些节点组从分配中排除,以便将其停用。
这里的应用场景是:我们计划对节点进行停机下线的时候,可以避免新建的索引分片落到这个节点上。

总结
  • elasticsearch的最小工作单元是分片,所以掌握分片在节点上的分配方式很重要,通过梳理,我们清楚了节点宕机后恢复对集群的影响。
  • 基于磁盘感知的分片分配方式。
  • 基于机架感知的分片分配方式。
  • CAP理论中的p(分区容错性)简要理解。
  • 排除节点,不分配分片,灵活下线节点。

欢迎来公众号【侠梦的开发笔记】 一起交流进步

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354