蜘蛛池出租蜘蛛池出租

13年專(zhuān)注蜘蛛池收錄技術(shù)

上海黑帽seo資源:elasticsearch集群擴(kuò)容和容災(zāi)_黑帽SEO培訓(xùn)

:突然想聊一聊技術(shù)經(jīng)理這件事

elasticsearch專(zhuān)欄:https://www.cnblogs.com/hello-shf/category/1550315.html

一、集群健康

Elasticsearch 的集群監(jiān)控信息中包含了許多的統(tǒng)計(jì)數(shù)據(jù),其中最為重要的一項(xiàng)就是集群健康,它在 status 字段中展示為 green 、 yellow 或者 red。

在kibana中執(zhí)行:GET /_cat/health?v

1 epoch      timestamp cluster        status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
2 1568794410 08:13:30  my-application yellow          1         1     47  47    0    0       40             0                  -                 54.0%

其中我們可以看到當(dāng)前我本地的集群健康狀態(tài)是yellow ,但這里問(wèn)題來(lái)了,集群的健康狀況是如何進(jìn)行判斷的呢?

green(很健康)
    所有的主分片和副本分片都正常運(yùn)行。
yellow(亞健康)
    所有的主分片都正常運(yùn)行,但不是所有的副本分片都正常運(yùn)行。
red(不健康)
    有主分片沒(méi)能正常運(yùn)行。

 注意:

我本地只配置了一個(gè)單節(jié)點(diǎn)的elasticsearch,因?yàn)閜rimary shard和replica shard是不能分配到一個(gè)節(jié)點(diǎn)上的所以,在我本地的elasticsearch中是不存在replica shard的,所以健康狀況為yellow。

 

二、shard和replica

為了將數(shù)據(jù)添加到Elasticsearch,我們需要索引(index)——一個(gè)存儲(chǔ)關(guān)聯(lián)數(shù)據(jù)的地方。實(shí)際 上,索引只是一個(gè)用來(lái)指向一個(gè)或多個(gè)分片(shards)的“邏輯命名空間(logical namespace)”. 一個(gè)分片(shard)是一個(gè)最小級(jí)別“工作單元(worker unit)”,它只是保存了索引中所有數(shù)據(jù)的一 部分。道分片就是一個(gè)Lucene實(shí)例,并且它本身就是一個(gè)完整的搜索引擎。我們的文檔存儲(chǔ)在分片中,并且在分片中被索引,但是我們的應(yīng)用程序不會(huì)直接與它們通信,取而代之的是,直接與索引通信。 分片是Elasticsearch在集群中分發(fā)數(shù)據(jù)的關(guān)鍵。把分片想象成數(shù)據(jù)的容器。文檔存儲(chǔ)在分片中,然后分片分配到你集群中的節(jié)點(diǎn)上。當(dāng)你的集群擴(kuò)容或縮小,Elasticsearch將會(huì)自動(dòng)在你的節(jié)點(diǎn)間遷移分片,以使集群保持平衡。 分片可以是主分片(primary shard)或者是復(fù)制分片(replica shard)。

你索引中的每個(gè)文檔屬于一個(gè)單獨(dú)的主分片,所以主分片的數(shù)量決定了索引最多能存儲(chǔ)多少數(shù)據(jù)。 理論上主分片能存儲(chǔ)的數(shù)據(jù)大小是沒(méi)有限制的,限制取決于你實(shí)際的使用情況。分片的最大容量完全取決于你的使用狀況:硬件存儲(chǔ)的大小、文檔的大小和復(fù)雜度、如何索引 和查詢(xún)你的文檔,以及你期望的響應(yīng)時(shí)間。

復(fù)制分片只是主分片的一個(gè)副本,它可以防止硬件故障導(dǎo)致的數(shù)據(jù)丟失,同時(shí)可以提供讀請(qǐng) 求,比如搜索或者從別的shard取回文檔。 當(dāng)索引創(chuàng)建完成的時(shí)候,主分片的數(shù)量就固定了,但是復(fù)制分片的數(shù)量可以隨時(shí)調(diào)整。 讓我們?cè)诩褐形ㄒ灰粋€(gè)空節(jié)點(diǎn)上創(chuàng)建一個(gè)叫做 blogs 的索引。默認(rèn)情況下,一個(gè)索引被分配5個(gè)主分片,一個(gè)主分片默認(rèn)只有一個(gè)復(fù)制分片。

重點(diǎn):
shard分為兩種:
    1,primary shard --- 主分片 2,replica shard --- 復(fù)制分片(或者稱(chēng)為備份分片或者副本分片)

 

需要注意的是,在業(yè)界有一個(gè)約定俗稱(chēng)的東西,單說(shuō)一個(gè)單詞shard一般指的是primary shard,而單說(shuō)一個(gè)單詞replica就是指的replica shard。

另外一個(gè)需要注意的是replica shard是相對(duì)于索引而言的,如果說(shuō)當(dāng)前index有一個(gè)復(fù)制分片,那么相對(duì)于主分片來(lái)說(shuō)就是每一個(gè)主分片都有一個(gè)復(fù)制分片,即如果有5個(gè)主分片就有5個(gè)復(fù)制分片,并且主分片和復(fù)制分片之間是一一對(duì)應(yīng)的關(guān)系。

很重要的一點(diǎn):primary shard不能和replica shard在同一個(gè)節(jié)點(diǎn)上。重要的事情說(shuō)三遍:

primary shard不能和replica shard在同一個(gè)節(jié)點(diǎn)上

primary shard不能和replica shard在同一個(gè)節(jié)點(diǎn)上

primary shard不能和replica shard在同一個(gè)節(jié)點(diǎn)上

所以es最小的高可用配置為兩臺(tái)服務(wù)器。 

 

三、master節(jié)點(diǎn)、協(xié)調(diào)節(jié)點(diǎn)和節(jié)點(diǎn)對(duì)等特性

elasticsearch同大多數(shù)的分布式架構(gòu),也會(huì)進(jìn)行主節(jié)點(diǎn)的選舉,elasticsearch選舉出來(lái)的主節(jié)點(diǎn)主要承擔(dān)一下工作:

1 集群層面的設(shè)置
2 集群內(nèi)的節(jié)點(diǎn)維護(hù)
3 集群內(nèi)的索引、映射(mapping)、分詞器的維護(hù)
4 集群內(nèi)的分片維護(hù)

不同于hadoop、mysql等的主節(jié)點(diǎn),elasticsearch的master將不會(huì)成為整個(gè)集群環(huán)境的流量入口,即其并不獨(dú)自承擔(dān)文檔級(jí)別的變更和搜索(curd),也就意味著當(dāng)流量暴增,主節(jié)點(diǎn)的性能將不會(huì)成為整個(gè)集群環(huán)境的性能瓶頸。這就是elasticsearch的節(jié)點(diǎn)對(duì)等特性。

節(jié)點(diǎn)對(duì)等:

所謂的節(jié)點(diǎn)對(duì)等就是在集群中每個(gè)節(jié)點(diǎn)扮演的角色都是平等的,也就意味著每個(gè)節(jié)點(diǎn)都能成為集群的流量入口,當(dāng)請(qǐng)求進(jìn)入到某個(gè)節(jié)點(diǎn),該節(jié)點(diǎn)就會(huì)暫時(shí)充當(dāng)協(xié)調(diào)節(jié)點(diǎn)的角色,對(duì)請(qǐng)求進(jìn)行路由和處理。這是一個(gè)區(qū)別于其他分布式中間件的很重要的特性。節(jié)點(diǎn)對(duì)等的特性讓elasticsearch具備了負(fù)載均衡的特性。在后面對(duì)document的寫(xiě)入和搜索會(huì)詳細(xì)介紹該牛叉的特性。

協(xié)調(diào)節(jié)點(diǎn):

通過(guò)上面的分析,我們可以得出一個(gè)結(jié)論,協(xié)調(diào)節(jié)點(diǎn)其實(shí)就是請(qǐng)求命中的那個(gè)節(jié)點(diǎn)。該節(jié)點(diǎn)將承擔(dān)當(dāng)前請(qǐng)求的路由工作。

 

四、擴(kuò)容

一般的擴(kuò)容模式分為兩種,一種是水平擴(kuò)容,一種是垂直擴(kuò)容。

4.1、垂直擴(kuò)容:

所謂的垂直擴(kuò)容就是升級(jí)服務(wù)器,買(mǎi)性能更好的,更貴的然后替換原來(lái)的服務(wù)器,這種擴(kuò)容方式不推薦使用。因?yàn)閱闻_(tái)服務(wù)器的性能總是有瓶頸的。

4.2、水平擴(kuò)容:

水平擴(kuò)容也稱(chēng)為橫向擴(kuò)展,很簡(jiǎn)單就是增加服務(wù)器的數(shù)量,這種擴(kuò)容方式可持續(xù)性強(qiáng),將眾多普通服務(wù)器組織到一起就能形成強(qiáng)大的計(jì)算能力。水平擴(kuò)容 VS 垂直擴(kuò)容用一句俗語(yǔ)來(lái)說(shuō)再合適不過(guò)了:三個(gè)臭皮匠賽過(guò)諸葛亮。

4.3、垂直擴(kuò)容的過(guò)程分析

上面我們?cè)敿?xì)介紹了分片,master和協(xié)調(diào)節(jié)點(diǎn),接下來(lái)我們通過(guò)畫(huà)圖的方式一步步帶大家看看橫向擴(kuò)容的過(guò)程。

首先呢需要鋪墊一點(diǎn)關(guān)于自定義索引shard數(shù)量的操作

1 PUT /student
2 {
3    "settings" : {
4       "number_of_shards" : 3,
5       "number_of_replicas" : 1
6    }
7 }

 

以上代碼意味著我們創(chuàng)建的索引student將會(huì)分配三個(gè)primary shard和三個(gè)replica shard(至于上面為什么是1,那是相對(duì)于索引來(lái)說(shuō)的,前面解釋過(guò))。

4.3.1、一臺(tái)服務(wù)器

當(dāng)我們只有一臺(tái)服務(wù)器的時(shí)候,shard是怎么分布的呢?

,【的身】【像是】【知道】【驚不】【從今】【族的】【話(huà)那】【不能】【從的】【數(shù)不】【了血】【密沒(méi)】【黑色】【口大】【了解】黑帽seo技術(shù)【界開(kāi)】【任何】【號(hào)沒(méi)】【法時(shí)】【蟲(chóng)神】【四重】【大乍】【一抽】【增長(zhǎng)】【尊水】【靈樹(shù)】【地還】,

 注:P代表primary shard, R代表replica shard。明確一點(diǎn)在后面的描述中默認(rèn)一個(gè)es節(jié)點(diǎn)在一臺(tái)服務(wù)器上。

分析一下上面的過(guò)程,首先需要明確的兩點(diǎn):

1,primary shard和replica shard不能再同一臺(tái)機(jī)器上,因?yàn)閞eplica和shard在同一個(gè)節(jié)點(diǎn)上就起不到副本的作用了。

2,當(dāng)集群中只有一個(gè)節(jié)點(diǎn)的時(shí)候,node1節(jié)點(diǎn)將成為主節(jié)點(diǎn)。它將臨時(shí)管理集群級(jí)別的一些變更,例如新建或 刪除索引、增加或移除節(jié)點(diǎn)等。

明確了上面兩點(diǎn)也就很簡(jiǎn)單了,因?yàn)榧褐兄挥幸粋€(gè)節(jié)點(diǎn),該節(jié)點(diǎn)將直接被選舉為master節(jié)點(diǎn)。其次我們?yōu)閟tudent索引分配了三個(gè)shard,由于只有一個(gè)節(jié)點(diǎn),所以三個(gè)primary shard都被分配到該節(jié)點(diǎn),replica shard將不會(huì)被分配。此時(shí)集群的健康狀況為yellow。

 

4.3.2、增加一臺(tái)服務(wù)器

接著上面繼續(xù),我們?cè)黾右慌_(tái)服務(wù)器,此時(shí)shard是如何分配的呢?

Rebalance(再平衡),當(dāng)集群中節(jié)點(diǎn)數(shù)量發(fā)生變化時(shí),將會(huì)觸發(fā)es集群的rebalance,即重新分配shard。Rebalance的原則就是盡量使shard在節(jié)點(diǎn)中分布均勻,達(dá)到負(fù)載均衡的目的。

原先node1節(jié)點(diǎn)上有p0、p1、p2三個(gè)primary shard,另外三個(gè)replica shard還未分配,當(dāng)集群新增節(jié)點(diǎn)node2,觸發(fā)集群的Rebalance,另外三個(gè)replica shard將被分配到node2上,即如上圖所示。

此時(shí)集群中所有的primary shard和replica shard都是active(可用)狀態(tài)的所以此時(shí)集群的健康狀況為yellow??梢?jiàn)es集群的最小高可用配置就是兩太服務(wù)器。

4.3.3、繼續(xù)新增服務(wù)器

 

 

 繼續(xù)新增服務(wù)器,集群將再次進(jìn)行Rebalance,在primary shard和replica shard不能分配到一個(gè)節(jié)點(diǎn)上的原則,這次rebalance同樣本著使shard均勻分布的原則,將會(huì)從node1上將P1,P2兩個(gè)primary shard分配到node1,node2上面,然后將node2在primary shard和replica shard不能分配到一臺(tái)機(jī)器上的原則上將另外兩個(gè)replica shard分配到node1和node2上面。

注意:具體的分配方式上,可能是P0在node2上面也有可能在node3上面,但是只要本著Rebalance的原則將shard均勻分布達(dá)到負(fù)載均衡即可。

 

五、集群容災(zāi)

分布式的集群是一定要具備容災(zāi)能力的,對(duì)于es集群同樣如此,那es集群是如何進(jìn)行容災(zāi)的呢?接下來(lái)聽(tīng)我娓娓道來(lái)。

在前文我們?cè)敿?xì)講解了primary shard和replica shard。replica shard作為primary shard的副本當(dāng)集群中的節(jié)點(diǎn)發(fā)生故障,replica shard將被提升為primary shard。具體的演示如下

 集群中有三臺(tái)服務(wù)器,其中node1節(jié)點(diǎn)為master節(jié)點(diǎn),primary shard 和 replica shard的分布如上圖所示。此時(shí)假設(shè)node1發(fā)生宕機(jī),也就是master節(jié)點(diǎn)發(fā)生宕機(jī)。此時(shí)集群的健康狀態(tài)為red,為什么呢?因?yàn)椴皇撬械膒rimary shard都是active的。

具體的容災(zāi)過(guò)程如下:

1,重新選舉master節(jié)點(diǎn),當(dāng)es集群中的master節(jié)點(diǎn)發(fā)生故障,此時(shí)es集群將再次進(jìn)行master的選舉,選舉出一個(gè)新的master節(jié)點(diǎn)。假設(shè)此時(shí)新的主節(jié)點(diǎn)為node2。

2,node2被選舉為新的master節(jié)點(diǎn),node2將作為master行駛其分片分配的任務(wù)。

3,replica shard升級(jí),此時(shí)master節(jié)點(diǎn)會(huì)尋找node1節(jié)點(diǎn)上的P0分片的replica shard,發(fā)現(xiàn)其副本在node2節(jié)點(diǎn)上,然后將R0提升為primary shard。這個(gè)升級(jí)過(guò)程是瞬間完成的,就像按下一個(gè)開(kāi)關(guān)一樣。因?yàn)槊恳粋€(gè)shard其實(shí)都是lucene的實(shí)例。此時(shí)集群如下所示,集群的健康狀態(tài)為yellow,因?yàn)椴皇敲恳粋€(gè)replica shard都是active的。

容災(zāi)的過(guò)程如上所示,其實(shí)這也是一般分布式中間件容災(zāi)備份的一般手段。如果你很了解kafka的話(huà),這個(gè)就很容易理解了。

 

 

 

  參考文獻(xiàn):

  《elasticsearch-權(quán)威指南》

 

  如有錯(cuò)誤的地方還請(qǐng)留言指正。

  原創(chuàng)不易,轉(zhuǎn)載請(qǐng)注明原文地址:https://www.cnblogs.com/hello-shf/p/11543468.html

|轉(zhuǎn)載請(qǐng)注明來(lái)源地址:蜘蛛池出租 http://www.wholesalehouseflipping.com/
專(zhuān)注于SEO培訓(xùn),快速排名黑帽SEO https://www.heimao.wiki

版權(quán)聲明:本文為 “蜘蛛池出租” 原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明;

原文鏈接:http://www.wholesalehouseflipping.com/post/17855.html

相關(guān)文章

?    2026年3月    ?
1
2345678
9101112131415
16171819202122
23242526272829
3031

搜索

控制面板

您好,歡迎到訪網(wǎng)站!
  查看權(quán)限

網(wǎng)站分類(lèi)

最新留言

標(biāo)簽列表

最近發(fā)表

作者列表

站點(diǎn)信息

  • 文章總數(shù):12487
  • 頁(yè)面總數(shù):3
  • 分類(lèi)總數(shù):7
  • 標(biāo)簽總數(shù):40
  • 評(píng)論總數(shù):985
  • 瀏覽總數(shù):3931875

友情鏈接

免费国产亚洲天堂AV,国产又粗又猛又黄又爽视频,亚州国产精品一线北,国产线播放免费人成视频播放