ElasticSearch之叢集中的節點

jackieathome發表於2024-10-05

對官方文件Node的閱讀筆記。
ES叢集由一個或者多個ES節點組成。
ES叢集中的節點,支援處理兩類通訊平面,見文件

  • 叢集內節點之間的通訊,官方文件稱之為transport layer。
  • 叢集外的通訊,處理客戶端下發的請求,比如資料的CRUD,檢索等,官方文件稱之為HTTP layer。

透過叢集內節點的通訊,節點可以獲取到叢集內所有節點的資訊,比如通訊地址、健康狀態、承載的索引和shard等資訊。
當叢集中某節點處理客戶端下發的請求時,可以將業務請求轉發至資料相關的節點,處理業務請求。
接收到客戶端下發的請求的節點,依據官方文件,可以稱之為接入節點或者the coordinating node。預設情況下,叢集中所有的節點都可以接入客戶端的業務,因此都具備接入節點的角色。
作為接入節點,處理業務請求的過程可以劃分為如下階段:

  • 轉發階段即scatter phase
    • 接入節點分析業務請求,獲取索引和shard的歸屬節點。
    • 接入節點將請求轉發至歸屬節點。
    • 歸屬節點處理請求,將處理結果返回至接入節點。
  • 收集階段即gather phase
    • 接入節點處理各歸屬節點返回的資料。
    • 接入節點將資料組裝為最終的結果。
    • 接入節點將結果返回客戶端。

因此,作為接入節點,需要具備足夠的硬體資源,比如CPU、記憶體等,否則無法正常處理各歸屬節點返回的資料。

ES節點,簡單而言,可以理解為ES程序,比如一臺主機上執行一個ES程序,或者在一臺物理主機上,執行多個ES程序。對於前述ES程序,均可以理解為不同的ES節點。
在ES叢集中,存在多種角色或者職責,因此從分工或者職責唯一的角度,可以為節點指定其角色,限定其職責,專業化分工,提升叢集的可用性。
ES叢集中,通常包含如下角色:

  • master
  • data
  • data_content
  • data_hot
  • data_warm
  • data_cold
  • data_frozen
  • ingest
  • ml
  • remote_cluster_client
  • transform

在ES的配置檔案elasticsearch.yml中增加配置項node.roles,可以指定該節點的角色。配置樣例,如下:

node.roles: [ master ]

對於專職的接入節點,可以做如下配置:

node.roles: [ ]

資料的生命週期、訪問頻率、重要性、訪問資料時的時延、儲存成本等存在差異,比如

  • 從生命週期角度講
    • 有些資料需要長期保留。
    • 有些資料可能使用完畢後即可刪除。
  • 從訪問頻率角度講
    • 有些資料會被經常訪問。
    • 有些資料可能經歷一段時間的高頻訪問之後,訪問頻率逐步下降。
    • 有些資料可能初期的訪問頻率不高,但在某些場景下,訪問頻率可能會突然上升,然後再次下降。
    • 有些資料可能保持低頻訪問。
    • 有些資料可能基本沒有訪問,比如歸檔資料、備份資料。
  • 從重要性角度講
    • 有些資料是關鍵資料,需要長期保留,不允許丟失,假如丟失,則需要具備恢復手段。
    • 有些資料雖然重要,但丟失之後重新獲取的成本比較低。
    • 有些資料則可有可無,丟失也不影響最終結果。
  • 從訪問時延角度講
    • 應用場景為高頻寬、高時延,比如大資料業務。
    • 應用場景為低時延、高OPS,比如檢索業務。
  • 從儲存成本角度講,按照儲存介質來劃分
    • 磁帶,訪問時延大、儲存成本低,適用於資料量大,長期歸檔,訪問頻率極低的資料。
    • HDD盤,訪問時延相對低一些,儲存成本相對高一些,儲存容量小,適用於歸檔、備份,訪問頻率一般的資料。
    • SSD盤,訪問時延低,支援的OPS高,儲存成本更高,儲存容量低,適用於資料量相對不大,但訪問頻率相對要高一些的資料。
    • 記憶體,訪問時延極低,成本更高,儲存容量更低,適用於資料量很小,但訪問頻率極高的資料。

基於資料的差異,ES提供瞭如下角色的選項:

  • data_content,適用於高頻檢索的資料,ES針對這個角色,提供了必要的最佳化。
  • data_hot,適用於熱資料,可以配置比較好的硬體、支撐高速訪問的儲存介質,儲存訪問頻率高的資料。
  • data_warm,適用於溫資料,硬體、介質可以選擇成本低一點,儲存訪問頻率相對沒有那麼高的資料。
  • data_cold,適用於冷資料,硬體、介質可以選擇相對更低一點,儲存訪問頻率比較低的資料。
  • data_frozen,適用於極冷資料,選擇容量大,成本低的硬體和介質,儲存訪問頻率非常低的資料。

假如很難從業務場景區分資料的差異,則可以直接使用角色data

參考資料

  • Configuring Elasticsearch
  • Important Elasticsearch configuration
  • Networking

相關文章