1. 程式人生 > 實用技巧 >Elasticsearch叢集角色如何定義?

Elasticsearch叢集角色如何定義?

角色劃分

在Elasticsearch中,有很多角色,常用的角色有如下:

  • Master Node:主節點
  • Master eligible nodes:合格節點
  • Data Node:資料節點
  • Coordinating Node:協調節點
  • Ingest Node:ingest節點

三種角色由elasticsearch.yml配置檔案中的node.master、node.data等來控制

  • Master Node:主節點,該節點不和應用建立連線,每個節點都儲存了叢集狀態,master節點不佔用磁碟IO和CPU,記憶體使用量一般。
  • Master eligible nodes:合格節點,每個節點部署後不修改配置資訊,預設就是一個 eligible 節點,該節點可以參加選主流程,成為Mastere節點。該節點也儲存了叢集節點的狀態。eligible節點比Master節點更節省資源,因為它還未成為 Master 節點,只是有資格成功Master節點。
  • Data Node:資料節點,該節點和索引應用建立連線、接收索引請求,該節點真正儲存資料,ES叢集的效能取決於該節點的個數(每個節點最優配置的情況下),data節點會佔用大量的CPU、IO和記憶體。
  • Coordinating Node:協調節點,該節點和檢索應用建立連線、接受檢索請求,但其本身不負責儲存資料,可當負責均衡節點,該節點不佔用io、cpu和記憶體。
  • Ingest Node:ingest 節點可以看作是資料前置處理轉換的節點,支援 pipeline管道 設定,可以使用 ingest 對資料進行過濾、轉換等操作,類似於 logstash 中 filter 的作用,功能相當強大。

各節點間的關係

  • Master Node:master節點控制整個叢集的元資料。只有Master Node節點可以修改節點狀態資訊及元資料(metadata)的處理,比如索引的新增、刪除、分片路由分配、所有索引和相關 Mapping 、Setting 配置等等。
  • Master eligible nodes:有資格成為Master節點但暫時並不是Master的節點被稱為 eligible 節點,該節點只是與叢集保持心跳,判斷Master是否存活,如果Master故障則參加新一輪的Master選舉。
  • Data Node:data節點的分片執行查詢語句獲得查詢結果後將結果反饋給Coordinating節點,在查詢的過程中非常消耗硬體資源,如果在分片配置及優化沒做好的情況下,進行一次查詢非常緩慢(硬體配置也要跟上資料量)。
  • Coordinating Node:協調節點接受客戶端搜尋請求後將請求轉發到與查詢條件相關的多個data節點的分片上,然後多個data節點的分片執行查詢語句或者查詢結果再返回給協調節點,協調節點把各個data節點的返回結果進行整合、排序等一系列操作後再將最終結果返回給使用者請求。
  • Ingest Node: Ingest節點處理時機——在資料被索引之前,通過預定義好的處理管道對資料進行預處理。預設情況下,所有節點都啟用Ingest,因此任何節點都可以處理Ingest任務。我們也可以建立專用的Ingest節點。

資源規劃

  • Master Node:Elasticsearch如果做叢集的話Master節點至少三臺伺服器或者三個Master例項加入相同叢集(生產建議每個es例項部署在不同的裝置上),三個Master節點最多隻能故障一臺Master節點,資料不會丟失,如果三個節點故障兩個節點,則造成資料丟失並無法組成叢集。
  • Master eligible nodes:Elasticsearch如果使用三臺Master做叢集,其中一臺被真正選為了Master,那麼其它兩臺就是 eligible 節點。
  • Data Node:在Elasticsearch叢集中,此節點應該是最多的,單個索引在一個data節點例項上分片數保持在3個以內(我覺得分片數量按照Data節點數量劃分比較好,每個節點上儲存一個分片);每1GB堆記憶體對應叢集的分片保持在20個以內;每個分片大小不要超過30G。
  • Coordinating Node: 增加協調節點可增加檢索併發,但檢索的速度還是取決於查詢所命中的分片個數以及分片中的資料量。

Data節點建議

記憶體建議:假如一臺機器部署了一個ES例項,則ES最大可用記憶體給到實體記憶體的50%,最多不可超過32G,如果單臺機器上部署了多個ES例項,則多個ES例項記憶體相加等於實體記憶體的50%,多個ES例項記憶體相加不宜超過32G。

分片建議

  1. 如果單個分片每個節點可支撐90G資料,依此可計算出所需data節點數。
  2. 如果多個分片按照單個data節點jvm記憶體最大30G來計算,一個節點的分片保持在600個以內,儲存保持在18T以內。

配置節點型別

  • 開發環境中一個節點可以承擔多種角色
  • 生產環境中,應該設定單一的角色
節點型別 配置引數 預設值
Master node.master true
Master eligible node.master true
Data node.data true
Coordinating 每個節點都是協調節點,設定其它節點全部為false則為協調節點
Ingest node.ingest true

Ingest更多概念:https://blog.csdn.net/laoyang360/article/details/93376355

※更多文章和資料|點選後方文字直達 ↓↓↓
100GPython自學資料包
阿里雲K8s實戰手冊
[阿里雲CDN排坑指南]CDN
ECS運維指南
DevOps實踐手冊
Hadoop大資料實戰手冊
Knative雲原生應用開發指南
OSS 運維實戰手冊
雲原生架構白皮書
Zabbix企業級分散式監控系統原始碼文件
Linux&Python自學資料包
10G面試題戳領