下面簡單描述一下Elasticsearch橫向擴容過程與容錯機制node
對於ES默認建立的索引有10個shard,其中有5個是primary shard,5個是replica shard。
在ES內部會自動作一些事情:
(1)primary shard & replica shard會自動負載均衡。均勻的分佈在各個節點
(2)保持每一個節點node擁有更少的shard,IO/CPU/Memory資源給每一個shard分配更多,使得每一個shard性能更好
(3)Elasticsearch的擴容極限,因爲有10個shard(5個primary shard,5個replica shard),因此最多能夠擴容到6臺機器,此時每一個shard能夠佔用單臺服務器的全部資源,性能最好。
(4)若是超出擴容的極限,能夠動態的修改replica數量,好比將replica修改成2,那麼就有15個分片(5個primary shard,10個replica shard),此時就能夠擴容到15臺機器,比以前擁有更高的讀吞吐量。
(5)若是隻有5臺機器,15個分片(5個primary shard,10個replica shard),每一個shard佔用的資源會更少,可是容錯性會比10個分片的要好,此時最多能夠容納2臺機器宕機,而10個分片只能容納1臺機器宕機。
這些知識點告訴咱們,一方面擴容應該怎麼去擴,怎麼去提高系統總體的吞吐量;另外一方面還要考慮到系統的容錯性,怎樣提升系統的容錯性,讓儘量多的服務器宕機,不會形成數據的丟失。服務器
場景描述:
假設master node1節點宕機的一瞬間,P0,P1,P2,P3,P4這些primary shard就沒了,也就是說此時就不是active status
下面是ES作的容錯的一個過程:
第一步:master選舉,自動選擇另外一臺node做爲新的master節點,承擔起master的責任來
第二步:新的master node2將丟失掉primary shard的某個replica shard提高爲primary shard。此時cluster status就會變爲yellow,由於primary shard所有變成active了,可是少了一個replica shard,因此就不是全部的replica shard都是active的
第三步:重啓故障的node,新的master會將缺失的副本都copy一份到該node上去。並且該node會使用以前已有的shard數據,只是同步一下宕機以後發生過的修改。cluster的狀態變爲green,由於primary shard和replica shard都齊全了。負載均衡