日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

干货 | Elasticsearch 8.X 节点角色划分深入详解

發布時間:2024/3/12 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 干货 | Elasticsearch 8.X 节点角色划分深入详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0、問題引出

如果你的 Elasticsearch 集群是 7.9 之前的版本,在配置節點的時候,只會涉及節點類型的概念。我相信大家會對下面的概念比較熟悉:

  • 主節點

  • 數據節點

  • 協調節點

  • Ingest 節點

  • 冷熱集群架構

......

Elasticsearch 7.9 版本引入了節點角色的概念。最近社群小伙伴關于節點角色提了不少問題,列舉如下:

  • Q1:請問 Nginx + ES Coordinate + ES Master + ES Node 如何安裝配置呢?是否安裝一樣,只需更改節點角色即可?

  • Q2:ES部署上,node.role都是mdi和 node.role區分m、d、i ,在部署上各有什么優勢?更推薦用哪種?

  • Q3:有 ES 7.x 的集群角色如圖,請問在寫入海量數據時,應該連接什么角色的節點寫入?專用協調節點還是數據節點?

  • Q4:role的配置,加上這些data_hot, data_warm, data_cold 和自定義的attr屬性有區別嗎?

  • Q5:誰能解釋一下es的角色 data data_content data_hot/warm/cold他們直接的關系?

  • Q6:請問 ES 7.10 的 data_content ?角色是個什么樣的存在?和協調節點什么區別?

帶著這些問題,我們開始 Elasticsearch 節點角色的解讀。

1、什么是 Elasticsearch 節點角色?

Elasticsearch 7.9 之前的版本中的節點類型:數據節點、協調節點、候選主節點、ingest 節點,在 Elasticsearch 7.9 以及之后 版本中有了升級,升級了什么呢?

節點類型升級為節點角色(Node roles)。節點角色分的很細:數據節點角色、主節點角色、ingest節點角色、熱節點角色等。

在 Elasticsearch 集群中,每個啟動的 Elasticsearch 進程都可以叫做一個節點。集群中只有一個節點的時候,以?Elasticsearch 8.1.3?版本單節點集群為例,如果我們不手動設置節點角色,默認節點角色如下“紅框”所示:

GET?_cat/nodes?v#?返回結果 ip??????????heap.percent?ram.percent?cpu?load_1m?load_5m?load_15m?node.role???master?name 172.21.0.14???????????70??????????96???0????0.03????0.03?????0.05?cdfhilmrstw?*??????VM-0-14-centos

當集群中有多個節點角色的時候,就需要手動設定、配置節點的角色。

節點角色劃分的目的在于:不同角色的節點各司其職,共同確保集群的功能的穩定和性能的高可用。

如上截圖中的 “cdfhilmrstw”,我第一次看到這個串也是一臉懵逼,解釋一下,你就“豁然開朗”。

角色縮寫英文釋義中文釋義
ccold node冷數據節點
ddata node數據節點
ffrozen node冷凍數據節點
hhot node熱數據節點
iingest node數據預處理節點
lmachine learning node機器學習節點
mmaster-eligible node候選主節點
rremote cluster client node遠程節點
scontent node內容數據節點
ttransform node轉換節點
vvoting-only node僅投票節點
wwarm node溫數據節點
coordinating node only僅協調節點

2、為什么引入節點角色?節點類型不香嗎?

https://github.com/elastic/elasticsearch/pull/54998

一個新功能的誕生必然是基于早期版本存在bug或者至少用戶體驗差。

節點角色就是基于節點類型配置復雜和用戶體驗差應運而生的。

早期版本如果需要配置僅候選主節點類型,需要的配置(極端情況)如下:

node.data:?false node.ingest:?false node.remote_cluster_client:?false node.ml:?false node.master:?true node.transform:?false node.voting_only:?false

這是非常繁瑣的配置,類似我要說我自己是主節點,需要我先說明我不是數據節點、不是 Ingest 預處理節點、不是機器學習節點、不是XXX各種節點.....

而節點角色的出現“革命性”的結局了這個問題,如下所示,只需要說明我是某某某,而不需要費勁巴拉的解釋我不是某某某。

node.roles:?[?data,?master?]

3、不同角色節點的功能詳解

3.1 主節點(Master-eligible node)

  • 主節點的核心用途:集群層面的管理,例如創建或刪除索引、跟蹤哪些節點是集群的一部分,以及決定將哪些分片分配給哪些節點。主節點的path.data 用于存儲集群元數據信息,不可缺少。

  • 主節點的重要性:擁有穩定的主節點對于集群健康非常重要。

和早期版本不同,節點角色劃分后,主節點又被細分為:候選主節點和僅投票主節點。

  • 主節點存儲數據:集群中每個索引的索引元數據,集群層面的元數據。

3.1.1 專用候選主節點(Dedicated master-eligible node)

如果集群規模大、節點多之后,有必要獨立設置專用候選主節點。

專用候選主節點配置:

node.roles:?[?master?]

3.1.2 僅投票主節點(Voting-only master-eligible node)

用途:僅投票,不會被選為主節點。

硬件配置可以較專用候選主節點低一些。

僅投票主節點配置:

node.roles:?[?master,?voting_only?]

注意:master 必不可少。

關于集群主節點配置,要強調說明如下:

  • 高可用性 (HA) 集群需要至少三個符合主節點資格的節點;其中至少兩個不是僅投票節點。

  • 即使其中一個節點發生故障,這樣的集群也將能夠選舉一個主節點。

3.2 數據節點(Data node)

數據節點用途:數據落地存儲、數據增、刪、改、查、搜索、聚合操作等處理操作。

數據節點硬件配置:CPU 要求高、內存要求高、磁盤要求高。

專屬數據節點好處:主節點和數據節點分離,各司其職。

數據節點存儲內容:

  • 分片數據。

  • 每個分片對應的元數據。

  • 集群層面的元數據,如:setting 和 索引模板。

擁有專用數據節點的主要好處是主角色和數據角色的分離。

數據節點的配置:

node.roles:?[?data?]

在 Elastic 多層(tires)冷熱集群架構體系下,數據節點又可以細分為:

  • 內容數據節點(Content data node)

  • 熱數據節點(Hot data node)

  • 溫數據節點(Warm data node)

  • 冷數據節點(Cold data node)

  • 冷凍數據節點(Frozen data node)

圖片來自:Elastic 官方博客

3.2.1 內容數據節點

用途:處理寫入和查詢負載,具有較長的數據保留要求。

建議至少設置一個副本,以保證數據的高可用。

不屬于數據流的系統索引或其他索引會自動分配到內容數據節點。

node.roles:?[?data_content?]

3.2.2 熱數據節點

用途:保存最近、最常訪問的時序數據。

推薦使用:SSD 磁盤,至少設置一個副本。

node.roles:?[?data_hot?]

3.2.3 溫數據節點

用途:保存訪問頻次低且很少更新的時序數據。

node.roles:?[?data_warm?]

3.2.4 冷數據節點

用途:保存不經常訪問且通常不更新的時序數據??纱鎯伤阉骺煺?。

node.roles:?[?data_cold?]

3.2.5 冷凍數據節點

用途:保存很少訪問且從不更新的時序數據。

node.roles:?[?data_frozen?]

在冷熱集群架構時序數據 ILM 索引生命周期管理的實戰演練環節,驗證發現:

在配置節點角色時,data_hot、data_warm、data_cold ?要和 data_content 要一起配置。且 data_hot、data_warm、data_cold 不要和原有的data 節點一起配置了。

如果僅data_hot 不設置 data_content 會導致集群數據寫入后無法落地。

我的理解:data_hot, data_warm, data_cold 是標識性的節點,實際落地存儲還得靠 data_content 角色。

3.3 數據預處理節點(ingest node)

用途:執行由預處理管道組成的預處理任務。

關于啥是數據的預處理?之前有多篇文章解讀過:

Elasticsearch 預處理沒有奇技淫巧,請先用好這一招!

Elasticsearch的ETL利器——Ingest節點

node.roles:?[?ingest?]

3.4 僅協調節點(Coordinating only node)

用途:類似智能負載均衡器,負責:路由分發請求、聚集搜索或聚合結果。

注意事項:在一個集群中添加太多的僅協調節點會增加整個集群的負擔,因為當選的主節點必須等待來自每個節點的集群狀態更新的確認。

node.roles:?[?]

空即是“色”,不對,這里空即是“僅協調節點”。

3.5 遠程節點(Remote-eligible node)

用途:跨集群檢索或跨集群復制。

node.roles:?[?remote_cluster_client?]

3.6 機器學習節點(Machine learning node)

用途:機器學習,系收費功能。

node.roles:?[?ml,?remote_cluster_client]

3.7 轉換節點(Transform node)

用途:運行轉換并處理轉換 API 請求。這塊,咱們之前文章沒有涉及。

推薦閱讀:

https://www.elastic.co/guide/en/elasticsearch/reference/current/transform-overview.html

node.roles:?[?transform,?remote_cluster_client?]

4、回答開篇問題

4.1 Q1:請問 Nginx + ES Coordinate + ES Master + ES Node 如何安裝配置呢?是否安裝一樣,只需更改節點角色即可?

答案:先劃分節點角色。節點不多的話手動one by one 部署(部署好了一個,其他的拷貝后修改角色、ip等就可以),節點非常多的話可以借助:ansible 等腳本工具快速部署。

4.2 Q2:ES部署上,node.role都是mdi和 node.role區分m、d、i ,在部署上各有什么優勢?更推薦用哪種?

答案:本文已介紹。m 代表主節點 master, d 代表數據節點 data, i 代表數據預處理節點 ingest。

4.3 Q3:有 ES 7.x 的集群角色如圖,請問在寫入海量數據時,應該連接什么角色的節點寫入?專用協調節點還是數據節點?

答案:看節點規模和節點角色劃分,如果已經有了獨立協調節點,連接獨立協調節點。如果沒有,連接硬件配置高的節點。

4.4 Q4:role的配置,加上這些data_hot, data_warm, data_cold 和自定義的attr屬性有區別嗎?

答案:新版本新特性,有區別,新的方式配置更為簡潔,可讀性強、用戶體驗優。

4.5 Q5:誰能解釋一下es的角色 data data_content data_hot/warm/cold他們直接的關系?

答案:系冷熱集群架構的數據節點的分層處理機制。相當于早期版本冷熱集群架構的手動配置節點屬性的部分,高版本做了精細切分,使得數據冷熱集群管理更為高效。尤其默認遷移(migrate )自動實現機制,之前版本的分片分配策略手動配置變得不再必須:

"allocate"?:?{"include"?:?{"box_type":?"hot,warm"}}

4.6 Q6:請問 ES 7.10 的 data_content ?角色是個什么樣的存在?和協調節點什么區別?

答案:兩種完全不同的節點。data_content 屬于數據節點,永久存儲數據的地方。而協調節點是用來請求路由分發、結果匯聚處理的。

5、小結

有了節點角色劃分之后,老版本的節點類型配置還是支持的。最早使用節點角色做 ILM 索引生命周期管理還有點不適應,摸索了一小段時間。

但,我們得擁抱 Elasticsearch 的變化。

節點角色的劃分是用戶體驗層面、功能層面的改進,有了它,我們節點劃分會更加明晰,節點用途會更加聚焦、具體。

關于節點角色和硬件配置的關系,也是經常被提問的問題,推薦配置參考:

角色描述存儲內存計算網絡
數據節點存儲和檢索數據極高
主節點管理集群狀態
Ingest 節點轉換輸入數據
機器學習節點機器學習極高極高
協調節點請求轉發和合并檢索結果

你的生產環境使用了什么版本的集群?如何做的節點角色的劃分?歡迎留言討論。

參考

  • https://www.elastic.co/guide/en/elasticsearch/reference/current/data-tiers.html

  • https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html

  • https://www.elastic.co/cn/blog/whats-new-elasticsearch-7-11-0-schema-on-read-is-here

  • 探究 | Elasticsearch集群規模和容量規劃的底層邏輯

推薦

1、重磅 | 死磕 Elasticsearch 方法論認知清單(2021年國慶更新版)

2、如何從0到1打磨一門 Elasticsearch 線上直播課?(口碑不錯)

3、如何系統的學習 Elasticsearch ?

4、干貨 | Elasticsearch 索引生命周期管理 ILM 實戰指南

更短時間更快習得更多干貨!

和全球?1600+?Elastic 愛好者一起精進!

比同事搶先一步學習進階干貨!

總結

以上是生活随笔為你收集整理的干货 | Elasticsearch 8.X 节点角色划分深入详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。