偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Elasticsearch 集群直接數(shù)據(jù)、協(xié)調(diào)、主節(jié)點(diǎn)混用在一個(gè)節(jié)點(diǎn),有比較大的風(fēng)險(xiǎn)嗎?

存儲(chǔ) 數(shù)據(jù)管理
在實(shí)際的 Elasticsearch?部署中,節(jié)點(diǎn)并不是“一視同仁”的。根據(jù)分配的角色,節(jié)點(diǎn)可能負(fù)責(zé)協(xié)調(diào)集群、存儲(chǔ)數(shù)據(jù)或預(yù)處理數(shù)據(jù)。理解這些節(jié)點(diǎn)角色對于設(shè)計(jì)一個(gè)可擴(kuò)展、高性能且容錯(cuò)的 Elasticsearch 集群至關(guān)重要。

0、問題引出

最近陸續(xù)收到三個(gè)問題:

  • 問題 1:

elasticsearch master 節(jié)點(diǎn)報(bào)錯(cuò):

java.lang.Exception: java.lang.OutOfMemoryError: Java heap space

master jvm 配置的 24G 內(nèi)存都報(bào)錯(cuò), 主節(jié)點(diǎn)和協(xié)調(diào)節(jié)點(diǎn)混在一個(gè)節(jié)點(diǎn),沒有獨(dú)立協(xié)調(diào)節(jié)點(diǎn)。

  • 問題 2:

我這邊后來的業(yè)務(wù)都是直接數(shù)據(jù)、協(xié)調(diào)、主節(jié)點(diǎn)混用在一個(gè)節(jié)點(diǎn)。

有比較大的風(fēng)險(xiǎn)嗎?

圖片圖片

  • 問題 3:

打擾下,請教一個(gè)問題

Elasticsearch 7.10版本,16個(gè)數(shù)據(jù)節(jié)點(diǎn),沒有區(qū)分角色,16C64G,節(jié)點(diǎn)分片均勻。

現(xiàn)象是3天前開始,每到21點(diǎn)開始,其中一個(gè)es節(jié)點(diǎn)讀io比較其他節(jié)點(diǎn)高一倍,到凌晨2點(diǎn)又自己恢復(fù)了。

看機(jī)器帶寬也沒有明顯增加,機(jī)器iowait很高,有啥排查思路不?

圖片圖片

這三個(gè)問題本質(zhì)都和節(jié)點(diǎn)角色劃分以及集群規(guī)模大了應(yīng)該獨(dú)立協(xié)調(diào)節(jié)點(diǎn)、獨(dú)立主節(jié)點(diǎn)有關(guān)系。

本文帶大家一起深入了解Elasticsearch中的不同節(jié)點(diǎn)角色及其職責(zé)。

這里先簡單介紹一下節(jié)點(diǎn)的概念:一個(gè)節(jié)點(diǎn)是Elasticsearch的一個(gè)運(yùn)行實(shí)例,可以看作一臺(tái)服務(wù)器(物理或虛擬),負(fù)責(zé)存儲(chǔ)數(shù)據(jù)并參與集群的各種操作(比如搜索、索引、數(shù)據(jù)處理等)。

在實(shí)際的 Elasticsearch 部署中,節(jié)點(diǎn)并不是“一視同仁”的。根據(jù)分配的角色,節(jié)點(diǎn)可能負(fù)責(zé)協(xié)調(diào)集群、存儲(chǔ)數(shù)據(jù)或預(yù)處理數(shù)據(jù)。理解這些節(jié)點(diǎn)角色對于設(shè)計(jì)一個(gè)可擴(kuò)展、高性能且容錯(cuò)的 Elasticsearch 集群至關(guān)重要。

在這篇文章中,我們將詳細(xì)講解五種節(jié)點(diǎn)角色及其職責(zé),并通過通俗易懂的例子幫助大家快速掌握這些概念。

文章內(nèi)容包括:

圖片圖片

  • 主節(jié)點(diǎn)(Master Node)
  • 數(shù)據(jù)節(jié)點(diǎn)(Data Node)
  • 協(xié)調(diào)節(jié)點(diǎn)(Coordinating Only Node)
  • 攝入節(jié)點(diǎn)(Ingest Node)
  • 投票節(jié)點(diǎn)(Voting Node)

好了,廢話不多說,讓我們直接進(jìn)入正題!

1. 主節(jié)點(diǎn)(Master Node)

主節(jié)點(diǎn)就 像Elasticsearch 集群的“大腦”或“管理者”。它的主要職責(zé)是維護(hù)整個(gè)集群的健康和組織,而不是直接存儲(chǔ)數(shù)據(jù)或處理搜索查詢(除非它同時(shí)被配置為其他角色)。

1.1 主節(jié)點(diǎn)做什么?——用途

圖片圖片

  • 跟蹤節(jié)點(diǎn):知道集群中有哪些節(jié)點(diǎn)在運(yùn)行。
  • 管理索引:負(fù)責(zé)創(chuàng)建或刪除索引。
  • 分配數(shù)據(jù)分片:決定數(shù)據(jù)(分片)存儲(chǔ)在哪些節(jié)點(diǎn)上。
  • 處理集群變化:當(dāng)有節(jié)點(diǎn)加入或退出時(shí),更新集群狀態(tài)。

1.2 主節(jié)點(diǎn)示例

假設(shè)我們的Elasticsearch集群有3個(gè)節(jié)點(diǎn):

  • 節(jié)點(diǎn)A
  • 節(jié)點(diǎn)B
  • 節(jié)點(diǎn)C

其中節(jié)點(diǎn)A是主節(jié)點(diǎn)。

1.2.1 場景1:創(chuàng)建新索引

當(dāng)我們發(fā)送請求創(chuàng)建一個(gè)新索引(比如“products”)時(shí):

  • 主節(jié)點(diǎn)A接收請求。
  • 主節(jié)點(diǎn)決定:

創(chuàng)建多少個(gè)分片(shards)。

將這些分片分配到哪些節(jié)點(diǎn)(比如,主分片放在節(jié)點(diǎn)B,副本分片放在節(jié)點(diǎn)C)。

  • 主節(jié)點(diǎn)A通知其他節(jié)點(diǎn)關(guān)于新索引和分片的信息。
  • 主節(jié)點(diǎn)A本身并不存儲(chǔ)數(shù)據(jù)(除非它也被配置為數(shù)據(jù)節(jié)點(diǎn)),只是負(fù)責(zé)指揮。

1.2.2 場景2:節(jié)點(diǎn)故障

如果節(jié)點(diǎn)B宕機(jī):

圖片圖片

  • 主節(jié)點(diǎn)A檢測到節(jié)點(diǎn)B不可用。
  • 主節(jié)點(diǎn)重新分配節(jié)點(diǎn)B上的分片到其他節(jié)點(diǎn)(比如節(jié)點(diǎn)C)。
  • 通知集群中所有節(jié)點(diǎn)更新狀態(tài),確保集群保持平衡和可用。

1.3 如何配置主節(jié)點(diǎn)?

elasticsearch.yml配置文件中,設(shè)置如下:

node:
  name:master-node-1# 節(jié)點(diǎn)名稱
master:true         # 設(shè)置為true,表示這是主節(jié)點(diǎn)
data:false          # 不存儲(chǔ)數(shù)據(jù)
ingest:false        # 不處理數(shù)據(jù)攝入
cluster:
name:my-cluster
initial_master_nodes:["node-A"]# 集群首次啟動(dòng)時(shí)指定的主節(jié)點(diǎn)
discovery:
seed_hosts:["node-A","node-B","node-C"]# 用于發(fā)現(xiàn)其他節(jié)點(diǎn)的列表

如果想讓主節(jié)點(diǎn)同時(shí)作為數(shù)據(jù)節(jié)點(diǎn),只需將data: true即可。但大規(guī)模多節(jié)點(diǎn)集群務(wù)必慎重,最好獨(dú)立節(jié)點(diǎn)角色。

2. 數(shù)據(jù)節(jié)點(diǎn)(Data Node)

數(shù)據(jù)節(jié)點(diǎn)是 Elasticsearch 的“存儲(chǔ)主力”。它負(fù)責(zé)存儲(chǔ)索引中的數(shù)據(jù)(以分片的形式),并處理數(shù)據(jù)的搜索和索引操作。

2.1 舉個(gè)例子

舉個(gè)餐廳的例子,廚師就是數(shù)據(jù)節(jié)點(diǎn)。

服務(wù)員(協(xié)調(diào)節(jié)點(diǎn))把訂單交給廚師,廚師負(fù)責(zé)烹飪(存儲(chǔ)和處理數(shù)據(jù)),然后把成品菜(查詢結(jié)果)交給服務(wù)員。

圖片圖片

2.2 如何配置數(shù)據(jù)節(jié)點(diǎn)?

elasticsearch.yml中,設(shè)置:

node:
  data: true

2.3 一個(gè)常見問題

如果集群只有一個(gè)節(jié)點(diǎn),且只配置為數(shù)據(jù)節(jié)點(diǎn),它能處理用戶搜索請求嗎???

答案是:不能。

如果只有一個(gè)節(jié)點(diǎn),且只配置為數(shù)據(jù)節(jié)點(diǎn),它無法處理用戶請求,因?yàn)閰f(xié)調(diào)工作需要其他角色。

如果是單節(jié)點(diǎn)集群,建議使用默認(rèn)配置(不顯式設(shè)置任何角色),這樣節(jié)點(diǎn)會(huì)同時(shí)承擔(dān)所有角色(協(xié)調(diào)、主節(jié)點(diǎn)、數(shù)據(jù)節(jié)點(diǎn)等)。

3. 協(xié)調(diào)節(jié)點(diǎn)(Coordinating Only Node)

協(xié)調(diào)節(jié)點(diǎn)就像 Elasticsearch 集群中的“交通指揮員”。

它不存儲(chǔ)數(shù)據(jù),也不是主節(jié)點(diǎn),而是負(fù)責(zé)接收用戶的請求(比如搜索或索引),并將這些請求分發(fā)到正確的節(jié)點(diǎn)。

3.1 協(xié)調(diào)節(jié)點(diǎn)做什么?

  • 接收用戶請求(比如搜索或存儲(chǔ)數(shù)據(jù))。
  • 將請求轉(zhuǎn)發(fā)給相關(guān)的數(shù)據(jù)節(jié)點(diǎn)。
  • 收集數(shù)據(jù)節(jié)點(diǎn)的響應(yīng)。
  • 將結(jié)果匯總后返回給用戶。

協(xié)調(diào)節(jié)點(diǎn)不執(zhí)行存儲(chǔ)或搜索的“重(讀音 zhong)活”,只負(fù)責(zé)管理和分發(fā)任務(wù)。

圖片圖片

3.2 舉個(gè)例子

想象我們在一家餐廳:

  1. 我們向服務(wù)員(協(xié)調(diào)節(jié)點(diǎn))點(diǎn)單,點(diǎn)了三道菜。
  2. 服務(wù)員把訂單分發(fā)給廚房的三個(gè)廚師(數(shù)據(jù)節(jié)點(diǎn)),每個(gè)廚師負(fù)責(zé)一道菜。
  3. 廚師做好菜后,服務(wù)員把三道菜收集起來,端到我們面前。

服務(wù)員并不自己做菜,只是負(fù)責(zé)溝通。這就是協(xié)調(diào)節(jié)點(diǎn)的角色。

3.3 如何配置協(xié)調(diào)節(jié)點(diǎn)?

默認(rèn)情況下,如果以下配置都設(shè)置為false,節(jié)點(diǎn)就是協(xié)調(diào)節(jié)點(diǎn):

node:
  master: false
  data: false
  ingest: false

4. 攝入節(jié)點(diǎn)(Ingest Node)

攝入節(jié)點(diǎn)是 Elasticsearch 中的“數(shù)據(jù)預(yù)處理器”。

它在數(shù)據(jù)被索引(類似插入數(shù)據(jù)庫)之前,對數(shù)據(jù)進(jìn)行清洗、轉(zhuǎn)換或豐富處理。

圖片圖片

4.1 有點(diǎn)抽象?來看個(gè)例子

假設(shè)我們?nèi)ゲ蛷d點(diǎn)菜,但我們說得很快,還夾雜了不同的語言。

餐廳經(jīng)理(攝入節(jié)點(diǎn))會(huì):

  • 聽清楚我們的訂單。
  • 修正拼寫或語言錯(cuò)誤。
  • 確認(rèn)訂單內(nèi)容,添加下單時(shí)間等信息。
  • 將整理好的訂單交給廚房(數(shù)據(jù)節(jié)點(diǎn))。

同樣,在 Elasticsearch 中,攝入節(jié)點(diǎn)會(huì)處理原始數(shù)據(jù),比如清洗格式化添加額外信息,然后將處理后的數(shù)據(jù)發(fā)送到索引存儲(chǔ)。

4.2 工作流程

  1. 用戶發(fā)送請求到Elasticsearch,請求先到達(dá)協(xié)調(diào)節(jié)點(diǎn)。
  2. 如果請求中包含管道(pipeline)屬性,協(xié)調(diào)節(jié)點(diǎn)將數(shù)據(jù)轉(zhuǎn)發(fā)到攝入節(jié)點(diǎn)。
  3. 攝入節(jié)點(diǎn)根據(jù)管道規(guī)則處理數(shù)據(jù)(比如格式化、添加字段)。
  4. 處理后的數(shù)據(jù)返回給協(xié)調(diào)節(jié)點(diǎn),再由協(xié)調(diào)節(jié)點(diǎn)發(fā)送到數(shù)據(jù)節(jié)點(diǎn)存儲(chǔ)。

圖片圖片

4.3 如何配置攝入節(jié)點(diǎn)?

elasticsearch.yml中,設(shè)置:

node:
  ingest: true

關(guān)于管道(pipeline)的具體配置,比如如何定義數(shù)據(jù)轉(zhuǎn)換規(guī)則,可以參考咱們之前的公眾號(hào)文章。

5. 投票節(jié)點(diǎn)(Voting Node)

投票節(jié)點(diǎn)參與主節(jié)點(diǎn)的選舉過程,幫助維持集群的穩(wěn)定性。僅投票主節(jié)點(diǎn)候選是參與主節(jié)點(diǎn)選舉但永遠(yuǎn)不會(huì)成為主節(jié)點(diǎn)的節(jié)點(diǎn)。它們的角色是在選舉過程中提供投票,特別是在需要打破平局(tiebreaker)時(shí)非常有用。

Elasticsearch 通過多數(shù)投票機(jī)制選擇主節(jié)點(diǎn)。

實(shí)話說,這個(gè)咱們用的真不太多。

  • 一方面原因,早期版本沒有這種類型節(jié)點(diǎn)角色;
  • 另一方面原因,集群規(guī)模還遠(yuǎn)沒有那么大。

https://www.elastic.co/docs/deploy-manage/distributed-architecture/clusters-nodes-shards/node-roles

5.1 為什么需要投票節(jié)點(diǎn)?

在一個(gè)大型集群中,我們可能不希望所有節(jié)點(diǎn)都參與主節(jié)點(diǎn)選舉(會(huì)增加復(fù)雜性)。

投票節(jié)點(diǎn)專門負(fù)責(zé)投票,確保主節(jié)點(diǎn)選舉順利進(jìn)行。

5.2 如何配置投票節(jié)點(diǎn)?

elasticsearch.yml中,設(shè)置:

node:
  roles: [master, voting_only]

5.3 投票過程示例

假設(shè)集群有 7 個(gè)節(jié)點(diǎn),其中 3 個(gè)是主節(jié)點(diǎn)候選(Node-A、Node-B、Node-C), 4 個(gè)是投票節(jié)點(diǎn)(Node-D、Node-E、Node-F、Node-H):

  • 投票節(jié)點(diǎn)投票:

Node-D、Node-E投給Node-A。

Node-F投給Node-B。

Node-H投給Node-C。

  • Node-A獲得最多票(2票),成為主節(jié)點(diǎn)。

圖片圖片

5.4 投票依據(jù)是什么?

投票節(jié)點(diǎn)會(huì)根據(jù)以下因素選擇主節(jié)點(diǎn):

  • 響應(yīng)速度:哪個(gè)節(jié)點(diǎn)響應(yīng)最快。
  • 健康狀態(tài):節(jié)點(diǎn)是否過載或斷連。
  • 網(wǎng)絡(luò)穩(wěn)定性:連接是否可靠。

5.5 什么時(shí)候觸發(fā)主節(jié)點(diǎn)選舉?

  • 集群啟動(dòng)時(shí)。
  • 當(dāng)前主節(jié)點(diǎn)失敗。
  • 有新節(jié)點(diǎn)加入集群。

6、總結(jié)

以讀者問題引出,讓大家提前關(guān)注到 Elasticsearch 角色劃分的重要性。

通過這篇文章,我們詳細(xì)介紹了Elasticsearch的五種節(jié)點(diǎn)角色及其職責(zé):

圖片圖片

  • 主節(jié)點(diǎn):管理集群,協(xié)調(diào)分片分配。
  • 數(shù)據(jù)節(jié)點(diǎn):存儲(chǔ)和處理數(shù)據(jù)。
  • 協(xié)調(diào)節(jié)點(diǎn):處理用戶請求,分發(fā)任務(wù)并匯總結(jié)果。
  • 攝入節(jié)點(diǎn):預(yù)處理數(shù)據(jù),清洗或豐富數(shù)據(jù)。
  • 投票節(jié)點(diǎn):參與主節(jié)點(diǎn)選舉,確保集群穩(wěn)定。
責(zé)任編輯:武曉燕 來源: 銘毅天下Elasticsearch
相關(guān)推薦

2018-05-21 10:40:46

Redis集群實(shí)踐

2021-08-10 07:27:42

Elasticsear集群開源

2019-07-26 09:20:21

ClusterShel命令Linux

2013-06-05 10:24:22

2023-11-06 07:35:08

節(jié)點(diǎn)集群ES

2023-01-17 08:51:10

2020-03-09 09:07:51

Vue根節(jié)點(diǎn)Fragments

2019-01-21 09:44:56

Elasticsear運(yùn)維監(jiān)控

2023-11-20 10:11:05

集群節(jié)點(diǎn)Kubernetes

2021-02-28 22:00:28

二叉樹節(jié)點(diǎn)序列

2023-03-26 19:38:09

2019-09-27 08:31:55

HDFS集群Hadoop

2021-07-15 10:25:15

集群節(jié)點(diǎn)檢查

2024-03-15 10:05:13

Kubernetes容器云原生

2012-11-12 10:13:09

2014-07-01 09:53:21

DockerHadoop集群

2020-02-29 15:20:18

K8SKubernetes集群

2022-08-28 19:36:15

數(shù)據(jù)分片KafkaRocketMQ

2019-09-03 16:18:03

Vagran虛擬機(jī)集群

2023-09-11 09:35:20

Docker程序
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)