Elasticsearch集羣模式知多少

01序言

Elasticsearch經過多年發展,集羣模式已經非常成熟,涵蓋的技術點非常多,對於使用者來說,掌握並熟練運用至關重要。那麼Elasticsearch有多少種集羣模式呢?當前適合哪種集羣模式?本文不涉及實戰操作,僅限集羣原理範圍探討,基於當前最新版本7.6.X。

02集羣模式

Elasticsearch節點設計支持多種角色,這個是實現集羣最重要的前提,節點角色各司其職,也可以任意組合,職責重合。

ES節點角色類型

節點角色說明:

Master,集羣管理Voting,投票選舉節點Data,數據節點Ingest,數據編輯節點Coordinate,協調節點Machine Learning,集羣學習節點

以下展開各種集羣模式

1.單節點(入門)

單節點集羣模式

單節點模式默認開啓所有節點特性,具備一個集羣所有節點角色,可以認爲是一個進程內部的集羣。Elasticsearch在默認情況下,不用任何牌配置也可以運行,這也是它設計的精妙之處,相比其它很多數據產品集羣配置,如Mongodb,簡化了很多,起步入門容易。

2.基本高可用(初級)

集羣基本高可用模式

Elasticsearch集羣要達到基本高可用,一般要至少啓動3個節點,3個節點互相連接,單個節點包括所有角色,其中任意節點停機集羣依然可用。爲什麼要至少3個節點?因爲集羣選舉算法奇數法則。

3.數據與管理分離(中級)

集羣數據節點與管理節點分離

Elasticserach管理節點職責是管理集羣元數據、索引信息、節點信息等,自身不設計數據存儲與查詢,資源消耗低;相反數據節點是集羣存儲與查詢的執行節點。管理節點與數據節點分離,各司其職,任意數據節點故障或者全部數據節點故障,集羣仍可用;管理節點一般至少啓動3個,任意節點停機,集羣仍正常運行。

4.數據與協調分離(高級)

集羣數據節點與管理節點分離

Elasticsearch內部執行查詢或者更新操作時,需要路由,默認所有節點都具備此職能,特別是大的查詢時,協調節點需要分發查詢命令到各個數據節點,查詢後的數據需要在協調節點合併排序,這樣原有數據節點代價很大,所以分離職責,詳細技術原理可以觀看騰訊課堂《Elastic技術原理:數據查詢》,裏面詳細講解了Elastic執行查詢的過程。

5.協調讀寫分離(高級)

集羣實現讀寫分離

Elasticsearch設置讀寫分離指的是在協調節點上,不是數據節點上,集羣大量的查詢需要消耗協調節點很大的內存與CPU合併結果,同時集羣大量的數據寫入會阻塞協調節點,所以在協調節點上做讀寫分離很少必要,也很簡單,由集羣設計搭建時規劃好即可。

6.數據節點標籤(高級)

 

集羣數據節點差異化分組

Elasticsearch給數據節點標籤,目的是分離索引數據的分佈,在一個集羣規模中等以上,索引數據用途多種多樣,對於數據節點的資源需求不一樣,數據節點的配置可以差異化,有的數據節點配置高做實時數據查詢,有的數據節點配置低做歷史數據查詢,有的數據節點做專門做索引重建。Elasticsearch集羣部署時需要考慮基礎硬件條件,集羣規模越來越大,需要多個數據中心,多個網絡服務、多個服務器機架,多個交換機等組成,索引數據的分佈與這些基礎硬件條件都密切相關。

7.主副分片分離(高級)

 

Elasticsearch集羣規模大了之後得考慮集羣容災,若某個機房出現故障,則可以迅速切換到另外的容災機房。

8.跨集羣操作(高級)

集羣索引數據主分片與副本分片分離

Elasticsearch單個集羣規模不能無限增長,理論上可以,實際很危險,通過創建多個分集羣分解,集羣直接建立直接連接,客戶端可以通過一個代理集羣訪問任意集羣,包括代理集羣本身數據。Elasticsearch集羣支持異地容災,採用的是跨集羣複製的機制,與同一集羣主分片副本分片分離是不同的概念,2個集羣完全是獨立部署運行,僅數據同步複製。

9.跨集羣版本操作(高級)

Elasticsearch跨集羣版本操作

Elasticsearch版本更新很快,已知問題修復很快,新特性新功能推出很快,一日不學,如隔三秋。有的集羣數據重要性很高,穩定第一,不能隨意升級,有的業務場景剛好需要最新版本新功能新特性支持。

03結語

經驗總結

Elasticsearch集羣模式種類挺多,每種集羣模式都有它的應用場景以及解決實際的問題,每種集羣模式之間也可以輕易轉換。所以說ES玩的好,下班下得早。

 

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