本文不涉及實戰操作,僅限叢集原理範圍探讨,基于版本7.6.X。
作者介紹
李猛,Elastic Stack 深度使用者,通過 Elastic 工程師認證,2012年接觸 Elasticsearch,對 Elastic Stack 技術棧開發、架構、運維等方面有深入體驗,實踐過多種大中型項目;為企業提供 Elastic Stack 咨詢教育訓練以及調優實施;多年實戰經驗,愛搗騰各種技術産品,擅長大資料,機器學習,系統架構。
叢集模式
Elasticsearch節點設計支援多種角色,這個是實作叢集最重要的前提,節點角色各司其職,也可以任意組合,職責重合。

節點角色說明:
• 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叢集模式種類挺多,每種叢集模式都有它的應用場景以及解決實際的問題,每種叢集模式之間也可以輕易轉換。是以說ES玩的好,下班下得早。
聲明:本文由原文作者“李猛”授權轉載,對未經許可擅自使用者,保留追究其法律責任的權利。
【
阿裡雲Elastic Stack】100%相容開源ES,獨有9大能力,提供免費X-pack服務(單節點價值$6000)
相關活動
更多折扣活動,請
通路阿裡雲 Elasticsearch 官網 阿裡雲 Elasticsearch 商業通用版,1核2G ,SSD 20G首月免費 阿裡雲 Logstash 2核4G首月免費