ElasticSearch系列 - 集羣&節點和分片

ElasticSearch系列 - 集羣&節點和分片

ElasticSearch 特性

ElasticSearch是一個高性能,高可用,易擴展的分佈式搜索引擎。

其高可用體現在:

  • 服務可用性:允許有節點停止服務,整個ElasticSearch集羣必須正常對外提供服務(冗餘節點)
  • 數據可用性:允許部分節點丟失,但是數據不會丟失(冗餘數據)

其可擴展性體現在:

  • 請求量提升/數據的不斷增長(將數據分佈到所有節點上)(新增節點就能提供讀寫能力)

ElasticSearch分佈式架構的好處

  • 存儲的水平擴容
  • 提高可用性

ElasticSearch不同的集羣通過名字不同來區分,默認名字是elasticsearch

可以通過修改配置文件,或者在命令行中 -E cluster.name = test 進行設定

一個分佈式集羣可以有一個或多個節點

節點

一個節點就是一個ElasticSearch的實例,本質上就是一個Java進程。

每個節點都有名字,通過配置文件,或者啓動時候 -E node.name = node1指定

每一個節點在啓動之後,會分配一個UID,保存在data目錄下

[外鏈圖片轉存失敗(img-Kj3DsAcB-1567216733840)(/Users/aaron/Library/Application Support/typora-user-images/image-20190829104831847.png)]

Master eligible Node & Master Node

每個節點啓動後,默認就是一個Master eligible節點(可以設置node.master:false 禁止),Master-eligible節點可以參與選主流程,成爲Master節點

當第一個節點啓動,它會將自己選舉成Master節點

每個節點上都保存了集羣的狀態信息(所有節點信息,所有的索引和其相關的Mapping和Setting信息,分片路由信息),只有Master節點可以修改集羣狀態信息(任何節點修改會導致不一致,而且需要額外的鎖控制)

Data Node

可以保存數據的節點,叫做Data Node,負責保存分片數據。在數據擴展上起到了至關重要的作用

Coordinating Node

負責接收Client請求,將請求分發到合適的節點,最終吧結果匯聚在一起

每個節點默認都起到了Coordinating Node的職責

Hot & Warm Node

本質上還是Data Node,根據不同的硬件配置,可以實現Hot & Warm架構,降低集羣部署成本。

例如海量數據分析,就可以使用高硬件服務器,做Hot Node,處理海量日誌

Machine Learning Node

負責跑機器學習Job,用來做異常檢測

Tribe Node

Tribe Node 連接到不同的elasticSearch集羣,並且支持將這些集羣當成一個單獨集羣處理(5.3開始使用Cross Cluster Search處理)

配置節點類型

生產環境中一個節點應該設置單一的角色(意味着節點可以多角色)

節點類型 配置參數 默認值 備註
master eligible node.master true 可以參加選主
data node.data true 存儲數據
ingest node.ingest True ingest節點可以運行一些pipeline的腳本
Coordinating 每個節點默認都是coordinating節點,設置其他類型全部爲false
machine learning node.ml true(需要enable x-pack) 機器學習
分片

分片分爲兩種類型:主分片(Primary Shard)和副本分片(Replica Shard)

  • 主分片:用以解決數據水平擴展的問題,通過主分片,可以將數據分佈到集羣內的所有節點上(主從複製)
    • 主分片在索引創建時指定,後續不允許修改,除非reindex
    • 一個分片是一個運行的Lucene實例
  • 副本分片:用於解決數據高可用的問題,是主分片的拷貝(可以提高讀吞吐量)
    • 副本分片數,可動態調整

假設一個集羣中有兩個節點。movie索引的分片分佈情況如下所示

PUT /movies
{
	"settings":{
		"number_of_shards":2,  //主節點
		"number_of_replicas":2  //副本節點
	}
}

[外鏈圖片轉存失敗(img-MHypFzy7-1567216733841)(/Users/aaron/Library/Application Support/typora-user-images/image-20190829113651344.png)]

綠色是主節點,整個集羣中2個 P1 P0,每個主分片都有2個副本分片P0對應的是兩個R0,P1對應的是兩個R1。

設置分片大小時候,必須做好容量規劃

假設這時候新增一個節點Node 4,那麼新的節點將沒分片,無法做到水平擴展。而且因爲分片設置過小,可能導致單個分片數據量太大,導致數據重新分配耗時過大。

但是如果分片設置過大,會影響相關性打分,影響統計結果,單個節點過多分片影響性能,浪費資源

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章