Elasticsearch 向外扩展

一、向Elasticsearch集群加入节点

新增节点前后集群状态变化

向集群增加一个节点前,test索引的主分片全部分配到节点Node1,而副本分片分配没有地方分配。在这种情况下,集群是黄色的,因为所有的主分片有了安家之处,但是副本分片没有。一旦第二个节点加入,尚未分配的副本分片就会分配到新的节点Node2处,这使得集群变为了绿色的状态。

当另一个节点加入的时候,Elasticsearch会自动地尝试将分片在所有节点上进行均匀分配。如果更多的节点加入集群,Elasticsearch将试图在所有的节点上均匀配置分片数量,这样每个新加入的节点都能通过部分数据(以分片的形式)来分担负载。将节点加入Elasticsearch集群带来了大量的好处,主要的收益是高可用性和性能的提升。当副本分片是激活状态时,如果无法找到主分片,Elasticsearch会自动地将一个对应的副本分片升级为主分片。这样,及时失去了索引主分片所在的节点,仍然可以访问副本分片上的数据。数据分布在多个节点上同样提升了性能,原因是主分片和副本分片都可以处理搜索和获取结果的请求。如此扩展还未整体集群增加了更多的内存,所以如果过于消耗内存的搜索和聚集运行了太长时间或致使集群耗尽了内存,那么加入更多的节点总是一个处理更多更复杂操作的便捷方式。


二、发现其他Elasticsearch节点

通过广播来发现

广播模式发现集群中其他节点

通过单播来发现

单播模式发现集群中其他节点

选举主节点和识别错误

一旦集群中的节点发现了彼此,他们会协商谁将成为主节点。主节点负责管理集群的状态,也就是当前的设置和集群中分片、索引以及节点的状态。在主节点被选举出来之后,它会建立内部的ping记住来确保每个节点在集群中保持活跃和健康,这被成为错误识别。Elasticsearch认为所有节点都有资格成为主节点。当集群只有一个节点的时候, 该节点先等待一段时间,如果没有发现任何其他集群的节点,它就将自己选为主节点。

对于节点数量稀少的生产集群,设置主节点的最小数量 是个不错的主意。尽管这个设置可能使得Elasticsearch看上去可以拥有多个主节点,实际上它是告诉Elasticsearch在集群成为健康的状态前,集群中多少个节点有资格成为主节点。设置可成为主节点之节点的最小数量,可以帮助你确保集群在没有其全局状态的情况下,避免尝试执行存在危险的操作。如果节点数量不会随着时间而变化,可以将最小数量设置为集群的总节点数,或者遵循一个常用的规则:将其设滋味集群节点数/2 + 1。将minimum_master_nodes设置为高于1的数量,可以预防集群脑裂。

什么是脑裂?

(通常是在重负荷或网络存在问题的情况下)Elasticsearch集群中一个或多个节点失去了主节点的通讯,开始选举新的主节点,并且继续处理请求。这个时候,可能有两个不同的Elasticsearch集群相互独立地运行着,这就是脑裂。通过设置minimum_master_nodes的值可以预防脑裂,因为这意味着如果一个或多个节点失去了和其他节点的通信,他们无法选举新的主节点来形成新集群,因为对于他们不能获得所需的节点(可能成为主节点的节点)数量(超过一半)。

获取节点的信息


三、删除集群中的节点

如果Elasticsearch集群中的一个节点掉线了或者被停机了?

Elasticsearch可以选择人一个副本分片并将其转变为主分片,副本分片变为主分片后,集群会变成黄色的状态,这意味着某些副本分片尚未分配到某个节点。Elasticsearch下一步需要创建更多的副本分片来保持索引的高可用性。一旦副本分片被重新创建,并用于弥补损失的节点,那么集群将重新回归绿色的状态,全部的主分片及其副本分片都分配到了某个节点。

在这段时间内,整个集群都是可用于搜索和索引的,因为实际上没有数据丢失。如果失去的节点多余1个,或者某个没有副本分片丢失了,那么集群就会变成红色状态,这意味着某些数据永远地丢失了,你需要让集群重连拥有丢失数据的节点,或者对丢失的数据重新建立索引。

停用节点:告诉集群不要再分配任何分片到某个或一组节点上。一旦运行了这个命令,Elasticsearch将待停用节点上的全部分片开始转移到集群中的其他节点上。


四、升级Elasticsearch节点

轮流重启是一种重启集群的方式,它是为了在不牺牲数据可用性的前提下,升级一个节点或进行非动态的配置修改。每次关闭一个节点,而无需关闭整个集群。


五、扩展策略

通常来说,规划生产环境的Elasticsearch集群至少有三件事情需要考虑:过度分片、将数据切分为索引和分片、最大化吞吐量

1.过度分片

    over-sharding是指你有意地为索引创建大量分片,用于未来增加节点的过程。Elasticsearch管理每个分片都隐含着额外的开销,每个分片都是完整的Lucene索引,它需要为索引的每个分段创建一些文件描述符,增加相应的内存开销。如果为索引创建了过多的分片,可能会占用了本来支撑性能的内存吗,或者触及机器文件描述符或内存的极限。Elasticsearch选择的默认设置是5个分片。

2.将数据切分为索引和分片

    现在并没有方法让我们增加或减少某个索引中的主分片数量,但是可以对数据进行规划,让其横跨多个索引。当创建索引的时候,不要忘记由于每个索引有自己的分片,你的操作仍然会导致创建分片的负载,所以请确保不要使用过多的索引来创建过多的分片,不要占用处理请求的资源。

3.最大化吞吐量

    加速索引的一个方法是临时地减少集群中副本文件的数量。索引数据的时候,默认情况下,在数据更新到主分片和所有副本分片之前,请求是不会完成的。所以在索引的阶段将副本分片的数量减少到1甚至是0是有利的,然后在集中索引阶段结束后将这个数量重新增加为1或者多个。搜索的时候,通过加入更多的副本分片,搜索可以更快,这是因为无论是主分片还是副本分片都可以用于搜索。

额外的副本分片会处理搜索和聚集


六、路由

        文档时如何通过分片形式来定位的,这个过程被称为路由。当Elasticsearch散列文档的ID时就会发生文档的路由,来决定文档应该索引到那个分片中,这可以由你指定也可以让Elasticsearch生成。路由也可以不使用文档的ID,而使定制的数值进行散列。

为什么使用路由?如果你根本就不使用路由,Elasticsearch将确保你的文档以均衡的方式分布在所有不同的分片中,那为什么还需要使用路由?定制路由允许你将分享同一个路由值的多篇文档归集到单个分片中,而一旦这些文档放入到同一个索引,就可以路由某些查询,让他们可以在索引分片的子集中执行。

路由策略需要在两个方面下功夫:在你索引文档的时候挑选合适的路由值,以及在执行查询的时候重用这些值。

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

推荐阅读更多精彩内容