Elasticsearch的基礎(chǔ)分布式架構(gòu)以及shard相關(guān)知識和節(jié)點(diǎn)的擴(kuò)容、容錯

基礎(chǔ)分布式架構(gòu)

  1. Elasticsearch對復(fù)雜分布式機(jī)制的透明隱藏特性
  2. Elasticsearch的垂直擴(kuò)容與水平擴(kuò)容
  3. 增加或減少節(jié)點(diǎn)時的數(shù)據(jù)rebalance
  4. master節(jié)點(diǎn)
  5. 節(jié)點(diǎn)對等的分布式架構(gòu)
Elasticsearch對復(fù)雜分布式機(jī)制的透明隱藏特性
  • Elasticsearch是一套分布式的系統(tǒng),分布式是為了應(yīng)對大數(shù)據(jù)量
  • 隱藏了復(fù)雜的分布式機(jī)制
  • cluster discovery(集群發(fā)現(xiàn)機(jī)制)-----比如當(dāng)前我們啟動了一個es進(jìn)程,當(dāng)啟動了第二個es進(jìn)程時,這個進(jìn)程作為一個node自動就發(fā)現(xiàn)了集群,并且加入了進(jìn)去,還接受了部分?jǐn)?shù)據(jù)(作為replica shard)
  • 分片機(jī)制----es自動地將我們創(chuàng)建的document插入的集群中,我們是不用關(guān)心數(shù)據(jù)是按照什么機(jī)制分片的、最后放入到那個shard中
  • shard負(fù)載均衡-----比如現(xiàn)在又10shard,集群中有3個節(jié)點(diǎn),es會進(jìn)行均衡的進(jìn)行分配,以保持每個節(jié)點(diǎn)均衡的讀寫負(fù)載請求
Elasticsearch的垂直擴(kuò)容與水平擴(kuò)容
  • 垂直擴(kuò)容------用性能更強(qiáng)大的機(jī)器來替換當(dāng)前的機(jī)器
  • 水平擴(kuò)容------增加性能一般的機(jī)器作為新的節(jié)點(diǎn)
增減或減少節(jié)點(diǎn)時的數(shù)據(jù)rebalance

我的理解就是當(dāng)增減節(jié)點(diǎn)時,數(shù)據(jù)的重新分配

master節(jié)點(diǎn)

master節(jié)點(diǎn)的主要作用就是管理es的元數(shù)據(jù):

  1. 創(chuàng)建或刪除索引
  2. 增加或刪除節(jié)點(diǎn)
節(jié)點(diǎn)平等的分布式架構(gòu)
  1. 節(jié)點(diǎn)對等,每個節(jié)點(diǎn)都能接收所有的請求----shard節(jié)點(diǎn)和replica節(jié)點(diǎn)都能接受請求
  2. 自動請求路由----如果請求發(fā)到當(dāng)前節(jié)點(diǎn),但是該節(jié)點(diǎn)沒有該請求需要數(shù)據(jù),那么當(dāng)前節(jié)點(diǎn)會去其他節(jié)點(diǎn)獲取數(shù)據(jù),并返回給此請求
  3. 響應(yīng)收集

shard&replica機(jī)制

  1. index包含多個shard
  2. 每個shard都是一個最小工作單元,承載部分?jǐn)?shù)據(jù);每個shard都是一個lucene實例,有完整的建立索引和處理請求的能力
  3. 增減節(jié)點(diǎn)時,shard會自動在nodes中負(fù)載均衡
  4. primary shard和replica shard,每個document肯定只存在于某一個primary shard以及其對應(yīng)的replica shard中,不可能存在于多個primary shard
  5. replica shard是primary shard的副本,負(fù)責(zé)容錯,以及承擔(dān)讀請求負(fù)載
  6. primary shard的數(shù)量在創(chuàng)建索引的時候就固定了,replica shard的數(shù)量可以隨時修改
  7. primary shard的默認(rèn)數(shù)量是5,replica默認(rèn)是1,默認(rèn)有10個shard,5個primary shard,5個replica shard
  8. primary shard不能和自己的replica shard放在同一個節(jié)點(diǎn)上(否則節(jié)點(diǎn)宕機(jī),primary shard和副本都丟失,起不到容錯的作用),但是可以和其他primary shard的replica shard放在同一個節(jié)點(diǎn)上
單node環(huán)境下創(chuàng)建index情況分析

創(chuàng)建索引前,設(shè)置shard和replica的數(shù)量

PUT /test_index
{
   "settings" : {
      "number_of_shards" : 3,
      "number_of_replicas" : 1
   }
}
  1. 單node環(huán)境下,創(chuàng)建一個index,有3個primary shard,3個replica shard
  2. 集群status是yellow
  3. 這個時候,只會將3個primary shard分配到僅有的一個node上去,另外3個replica shard是無法分配的(一個shard的副本replica,他們兩個是不能在同一個節(jié)點(diǎn)的)
  4. 集群可以正常工作,但是一旦出現(xiàn)節(jié)點(diǎn)宕機(jī),數(shù)據(jù)全部丟失,而且集群不可用,無法承接任何請求
圖一------單節(jié)點(diǎn)下,shard分配情況

此時再添加一個節(jié)點(diǎn)的話

  1. 會把原來沒有分配的replica 給分配到這個新節(jié)點(diǎn)上
  2. 當(dāng)有請求的話,這個兩個節(jié)點(diǎn)都可以接受請求
圖二-----增加至2個節(jié)點(diǎn)后的分布情況

緊接上面的場景,此時再加入一個節(jié)點(diǎn)話,此時shard和replica是如何分配的

圖三---增加至3個節(jié)點(diǎn)后的情況
  1. primary&replica自動負(fù)載均衡,6個shard,3 primary,3 replica
  2. 每個node有更少的shard,IO/CPU/Memory資源給每個shard分配更多,每個shard性能更好
  3. 擴(kuò)容的極限,6個shard(3 primary,3 replica),最多擴(kuò)容到6臺機(jī)器(每個機(jī)器一個shard/replica),每個shard可以占用單臺服務(wù)器的所有資源,性能最好
  4. 超出擴(kuò)容極限,動態(tài)修改replica數(shù)量,9個shard(3primary,6 replica),擴(kuò)容到9臺機(jī)器,比3臺機(jī)器時,擁有3倍的讀吞吐量
  5. 3臺機(jī)器下,9個shard(3 primary,6 replica),資源更少,但是容錯性更好,最多容納2臺機(jī)器宕機(jī),6個shard只能容納1臺機(jī)器宕機(jī)---------只要剩下的節(jié)點(diǎn)中能包含完整的數(shù)據(jù),那么宕機(jī)是不會造成太大影響的

分析9個shard,3個節(jié)點(diǎn)的情況

圖四----3個節(jié)點(diǎn),9個shard分配情況

如圖四,是可以容忍2個節(jié)點(diǎn)宕機(jī)的,因為剩下的那個節(jié)點(diǎn),是包含所有的數(shù)據(jù)的。
宕機(jī)分析
假設(shè)圖四 的第一個節(jié)點(diǎn)為master節(jié)點(diǎn),如果此節(jié)點(diǎn)宕機(jī)

  1. 集群重新選舉master節(jié)點(diǎn)(假設(shè)為圖四的第二個節(jié)點(diǎn)),且集群的狀態(tài)變換為red
  2. 新master將replica提升為primary shard(r0提升為shard),集群的狀態(tài)變換為yellow
  3. 重啟宕機(jī)的節(jié)點(diǎn),master將復(fù)制p0至節(jié)點(diǎn)一為replica,使用原有的shard并同步宕機(jī)后的修改,集群的狀態(tài)變換為green

集群的健康狀況說明(green、yellow、red)

green:每個索引的primary shard和replica shard都是active狀態(tài)的
yellow:每個索引的primary shard都是active狀態(tài)的,但是部分replica shard不是active狀態(tài),處于不可用的狀態(tài)
red:不是所有索引的primary shard都是active狀態(tài)的,部分索引有數(shù)據(jù)丟失了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,401評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,011評論 3 413
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,263評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,543評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,323評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,874評論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,968評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,095評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,605評論 1 331
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,551評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,720評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,242評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 43,961評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,358評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,612評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,330評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,690評論 2 370

推薦閱讀更多精彩內(nèi)容