RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Elasticsearch底層模塊:如何去規(guī)劃和配置各種各樣的node

馬哥Linux運(yùn)維 ? 來(lái)源:馬哥Linux運(yùn)維 ? 2022-12-22 10:18 ? 次閱讀

node module,主要是用來(lái)處理各種不同類型的節(jié)點(diǎn)的,es有哪些類型的node,另外就是對(duì)這些類型的node有些什么特殊的參數(shù),對(duì)于一個(gè)較大的集群來(lái)說(shuō),如何去規(guī)劃和配置各種各樣的node

1、node類型

如果我們啟動(dòng)es的一個(gè)實(shí)例,那么就是啟動(dòng)了一個(gè)es node,一些es node就可以組成一個(gè)es集群。如果僅僅運(yùn)行了一個(gè)es node,那么也有一個(gè)es集群,只是節(jié)點(diǎn)數(shù)量就是1。

集群中的每個(gè)node都可以處理http和transport請(qǐng)求,其中transport層是用來(lái)處理節(jié)點(diǎn)間的通信的,http層是用來(lái)處理外部的客戶端rest請(qǐng)求的。

所有的node都知道集群中的其他node,并且可以將客戶端的請(qǐng)求轉(zhuǎn)發(fā)到適當(dāng)?shù)墓?jié)點(diǎn)上去。

節(jié)點(diǎn)的類型包含以下幾種:

(1)master-eligible node:master候選節(jié)點(diǎn),將node.master設(shè)置為true(默認(rèn)),代表這個(gè)node就是master的候選節(jié)點(diǎn),可以被選舉為master node,然后控制整個(gè)集群。

(2)data node:將node.data設(shè)置為true(默認(rèn)),data node可以存儲(chǔ)數(shù)據(jù),同時(shí)處理這些數(shù)據(jù)相關(guān)的操作,比如CRUD操作,搜索操作,聚合操作,等等。

(3)ingest node:將node.ingest設(shè)置為true(默認(rèn)),ingest node是用來(lái)對(duì)document寫(xiě)入索引文件之前進(jìn)行預(yù)處理的。可以對(duì)每個(gè)document都執(zhí)行一條ingest pipeline,在document寫(xiě)入索引文件之前,先對(duì)其數(shù)據(jù)進(jìn)行處理和轉(zhuǎn)化。但是如果要執(zhí)行的ingest操作太過(guò)繁重,那么可以規(guī)劃單獨(dú)的一批ingest node出來(lái),然后將node.master和node.data都設(shè)置為false即可。

(4)tribe node:tribe node可以通過(guò)tribe.*相關(guān)參數(shù)來(lái)設(shè)置,它是一種特殊的coordinate node,可以連接到多個(gè)es集群上去,然后對(duì)多個(gè)集群執(zhí)行搜索等操作。

(5)默認(rèn)情況下,每個(gè)node的node.master,node.data,node.ingest都是true,都是master候選節(jié)點(diǎn),也可以作為data node存儲(chǔ)和操作數(shù)據(jù),同時(shí)也可以作為ingest node對(duì)數(shù)據(jù)進(jìn)行預(yù)處理。對(duì)于小于20個(gè)節(jié)點(diǎn)的小集群來(lái)說(shuō),這種架構(gòu)是ok的,沒(méi)問(wèn)題的。但是如果對(duì)于大于20個(gè)物理機(jī)的集群來(lái)說(shuō),最好是單獨(dú)規(guī)劃出master node、data node和ingest node來(lái)。

(6)coordinate node

搜索和bulk等請(qǐng)求可能會(huì)涉及到多個(gè)節(jié)點(diǎn)上的不同shard里的數(shù)據(jù),比如一個(gè)search請(qǐng)求,就需要兩個(gè)階段執(zhí)行,首先第一個(gè)階段就是一個(gè)coordinating node接收到這個(gè)客戶端的search request。接著,coordinating node會(huì)將這個(gè)請(qǐng)求轉(zhuǎn)發(fā)給存儲(chǔ)相關(guān)數(shù)據(jù)的node,每個(gè)data node都會(huì)在自己本地執(zhí)行這個(gè)請(qǐng)求操作,同時(shí)返回結(jié)果給coordinating node,接著coordinating node會(huì)將返回過(guò)來(lái)的所有的請(qǐng)求結(jié)果進(jìn)行縮減和合并,合并為一個(gè)global結(jié)果。

每個(gè)node都是一個(gè)coordinating node。這就意味著如果一個(gè)node,將node.master,node.data,node.ingest全部設(shè)置為false,那么它就是一個(gè)純粹的coordinating node,僅僅用于接收客戶端的請(qǐng)求,同時(shí)進(jìn)行請(qǐng)求的轉(zhuǎn)發(fā)和合并。

如果真的是大集群的話,最好也是單獨(dú)規(guī)劃一批node出來(lái),就作為coordinating node,然后讓es client全部往這些node上去發(fā)送請(qǐng)求。

如果真的是一個(gè)大于20個(gè)節(jié)點(diǎn)的生產(chǎn)集群的話,建議將4種node,master node,data node,ingest node,cooridating node,全部分離開(kāi)來(lái)

集群中有30臺(tái)機(jī)器

master node:3個(gè)

ingest node:視具體情況而定,具體是看你的ingest預(yù)處理操作有多么的復(fù)雜,耗費(fèi)多少資源,但是一般情況下來(lái)說(shuō),es ingest node用的比較少的,ingest node也可以不用單獨(dú)規(guī)劃一批出來(lái)

coordinate node:視具體情況而定,但是對(duì)于大集群來(lái)說(shuō),最好是單獨(dú)拆幾個(gè)節(jié)點(diǎn)出來(lái),用于接收客戶端的請(qǐng)求,3個(gè)節(jié)點(diǎn)。主要是看你的并發(fā)訪問(wèn)量有多大,比如說(shuō)你的最大的QPS也就是10,或者是100,那么3個(gè)節(jié)點(diǎn)肯定夠了。如果你的QPS是1000,或者是10000,那么可能就要規(guī)劃,10個(gè)coordinate node,或者100個(gè)

data node:24個(gè)data node,data node肯定是分配的是最多的,主要用來(lái)存儲(chǔ)數(shù)據(jù),執(zhí)行各種對(duì)數(shù)據(jù)的操作么,資源耗費(fèi)肯定是最多的

2、master eligible node

(1)master-eligible node的介紹以及配置

master node負(fù)責(zé)輕量級(jí)的集群管理工作,比如創(chuàng)建和刪除索引,追蹤集群中的每個(gè)node,決定如何將shards分配給各個(gè)node。對(duì)于集群來(lái)說(shuō),有一個(gè)穩(wěn)定的master node,是非常關(guān)鍵的。然后master-eligible node都有機(jī)會(huì)被選舉為一個(gè)master node,同時(shí)master node必須有權(quán)限訪問(wèn)path.data指定的data目錄,因?yàn)閙aster node需要在data目錄中存儲(chǔ)cluster state。

對(duì)數(shù)據(jù)進(jìn)行index和search操作,會(huì)耗費(fèi)大量的cpu,內(nèi)存,磁盤(pán)io,以及網(wǎng)絡(luò)io,耗費(fèi)的是每個(gè)node的資源。因此我們必須要確保master node是非常穩(wěn)定的,而且是壓力不大的,對(duì)于大集群來(lái)說(shuō),比較好的辦法是劃分出單獨(dú)的master node和data node。如果不拆開(kāi)的話,一個(gè)node又要是data node,要復(fù)雜存儲(chǔ)數(shù)據(jù),處理各種操作,同時(shí)又要負(fù)責(zé)管理集群,可能就會(huì)不穩(wěn)定,出問(wèn)題。

同時(shí)因?yàn)槟J(rèn)情況下,master node也能扮演coordinating node的角色,并且將search和index請(qǐng)求路由到對(duì)應(yīng)的data node上去執(zhí)行,最好是不要讓master node來(lái)執(zhí)行這些coordinate操作。因?yàn)閙sater node的穩(wěn)定運(yùn)行對(duì)于整個(gè)集群來(lái)說(shuō)非常重要,比你利用master node資源來(lái)執(zhí)行一些coordinate操作要重要的多。

如果要設(shè)置一個(gè)node為專門(mén)的master-eligible node,需要做如下的設(shè)置:

node.master: true node.data: false node.ingest: false

(2)通過(guò)minimum_master_nodes來(lái)避免腦裂問(wèn)題

要預(yù)防數(shù)據(jù)的丟失,我們就必須設(shè)置discovery.zen.minimum_master_nodes參數(shù)為一個(gè)合理的值,這樣的話,每個(gè)master-eligible node才知道至少需要多少個(gè)master-eligible node才能組成一個(gè)集群。

比如說(shuō),我們現(xiàn)在有一個(gè)集群,其中包含兩個(gè)master-eligible nodes。然后一個(gè)網(wǎng)絡(luò)故障發(fā)生了,這兩個(gè)節(jié)點(diǎn)之間丟失了聯(lián)絡(luò)。每個(gè)節(jié)點(diǎn)都認(rèn)為當(dāng)前只有一個(gè)master-eligible node,就是它們自己。此時(shí)如果discovery.zen.minimum_master_nodes參數(shù)的默認(rèn)值是1,那么每個(gè)node就可以讓自己組成一個(gè)集群,選舉自己為master node即可。結(jié)果就會(huì)導(dǎo)致出現(xiàn)了兩個(gè)es集群,這就是腦裂現(xiàn)象。即使網(wǎng)絡(luò)故障解決了,但是這兩個(gè)master node是不可能重新組成一個(gè)集群了。除非某個(gè)master eligible node重啟,然后自動(dòng)加入另外一個(gè)集群,但是此時(shí)寫(xiě)入這個(gè)節(jié)點(diǎn)的數(shù)據(jù)就會(huì)徹底丟失。

那么如果現(xiàn)在我們有3個(gè)master-eligible node,同時(shí)將discovery.zen.minimum_master_nodes設(shè)置為2.如果網(wǎng)絡(luò)故障發(fā)生了,此時(shí)一個(gè)網(wǎng)絡(luò)分區(qū)有1個(gè)node,另外一個(gè)網(wǎng)絡(luò)分區(qū)有2個(gè)node,只有一個(gè)node的那個(gè)網(wǎng)絡(luò)分區(qū),沒(méi)法檢測(cè)到足夠數(shù)量的master-eligible node,那么此時(shí)它就不能選舉一個(gè)master node出來(lái)組成一個(gè)新集群。但是有兩個(gè)node的那個(gè)網(wǎng)絡(luò)分區(qū),它們會(huì)發(fā)現(xiàn)這里有足夠數(shù)量的master-eligible node,那么就選舉出一個(gè)新的master,然后組成一個(gè)集群。當(dāng)網(wǎng)絡(luò)故障解除之后,那個(gè)落單的node就會(huì)重新加入集群中。

discovery.zen.minimum_master_nodes,必須設(shè)置為master-eligible nodes的quorum,quorum的公式為:(master_eligible_nodes / 2) + 1。

換句話來(lái)說(shuō),如果有3個(gè)master-eligible nodes,那么那個(gè)參數(shù)就必須設(shè)置為(3 / 2) + 1 = 2,比如下面這樣:

discovery.zen.minimum_master_nodes: 2

隨著集群節(jié)點(diǎn)的上線和下限,這個(gè)參數(shù)都是要重新設(shè)置的,可以通過(guò)api來(lái)設(shè)置

PUT_cluster/settings
{
"transient":{
"discovery.zen.minimum_master_nodes":2
}
}

此時(shí)將master node和data node分離的好處就出來(lái)了,一般如果單獨(dú)規(guī)劃一個(gè)master nodes的話,只要規(guī)劃固定的3個(gè)node是master-eligible node就可以了,那么data node無(wú)論上線和下限多少個(gè),都無(wú)所謂的。

3、data node

data node負(fù)責(zé)存儲(chǔ)shard的數(shù)據(jù),也就是那些document。data node可以處理各種操作,比如CRUD,搜索,聚合。這些操作全都是很耗費(fèi)IO,內(nèi)存和cpu資源的。因此監(jiān)控這些資源的使用是很重要的,同時(shí)如果資源過(guò)載了,那么就要添加更多的data node。

如果要設(shè)置一個(gè)專門(mén)的data node,需要做出如下的設(shè)置:

node.master: false node.data: true node.ingest: false

4、ingest node

nigest node可以執(zhí)行預(yù)處理pipeline,包含了多個(gè)ingest processors。不同的ingest processor執(zhí)行的操作類型是不同的,那么對(duì)資源的需求也是不同的,不過(guò)還是最好是規(guī)劃一批單獨(dú)的ingest node出來(lái),不要跟master node和data node混合在一起。

如果要配置一個(gè)單獨(dú)的ingest node:

node.master: false node.data: false node.ingest: true search.remote.connect: false

5、cooridnating only node

如果我們規(guī)劃了一批專門(mén)的master node,data node以及ingest node,那么此時(shí)還遺留下來(lái)了一種node,那就是coordinating node,這些node專門(mén)用來(lái)接收客戶端的請(qǐng)求,同時(shí)對(duì)請(qǐng)求進(jìn)行路由和轉(zhuǎn)發(fā),并對(duì)請(qǐng)求的結(jié)果進(jìn)行合并。

coordinating only nodes對(duì)于大集群來(lái)說(shuō),可以使用專門(mén)的node來(lái)負(fù)載coordinate操作,而不是讓coordinate操作的工作負(fù)載集中到master node和data node上去。coordinating node也會(huì)加入cluster,同時(shí)可以獲取到完整的cluster state,它們主要是用cluster state中包含的node info來(lái)進(jìn)行請(qǐng)求轉(zhuǎn)發(fā)。

如果在一個(gè)集群中規(guī)劃太多的coordinating node可能會(huì)加重整個(gè)集群的負(fù)擔(dān),因?yàn)楸贿x舉出來(lái)的master node必須要從所有的node上得到cluster state update的ack,如果coordinating nodes過(guò)多,那么可能會(huì)加重master node的負(fù)擔(dān)。

如果要設(shè)置coordinating only node的話:

node.master: false node.data: false node.ingest: false search.remote.connect: false

6、node data path設(shè)置

(1)path.data

每個(gè)data和master-eligible node都需要能夠訪問(wèn)data目錄,在那里存儲(chǔ)了每個(gè)shard的數(shù)據(jù),包括cluster state也存儲(chǔ)在那里。path.data默認(rèn)是指向$ES_HOME/data目錄的,但是在生產(chǎn)環(huán)境中,肯定是不能這樣設(shè)置的,因?yàn)樵谏?jí)es的時(shí)候,可能會(huì)導(dǎo)致數(shù)據(jù)被清空或者覆蓋。

此時(shí)一般需要在elasticsearch.yml中設(shè)置path.data:

path.data: /var/elasticsearch/data

(2)node.max_local_storage_nodes

data目錄可以被多個(gè)node共享,即使是不同集群中的es node,也許他們?cè)谝粋€(gè)物理機(jī)上啟動(dòng)了。這個(gè)共享的方式對(duì)于我們測(cè)試failover是很有用的,以及在開(kāi)發(fā)機(jī)上測(cè)試不同的配置。但是在生產(chǎn)環(huán)境下,絕對(duì)不用這么做,一個(gè)data目錄就給一個(gè)es node使用即可。默認(rèn)情況下,es被配置成阻止超過(guò)一個(gè)node共享data目錄中的數(shù)據(jù),如果要允許多個(gè)node共享一個(gè)data目錄,需要設(shè)置node.max_local_storage_nodes為一個(gè)超過(guò)1的數(shù)字。

編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • node
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    5934
  • Elasticsearch
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    2824

原文標(biāo)題:Elasticsearch的底層模塊深入解析之node

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux安裝elasticsearch-head

    elasticsearch-head 是一款專門(mén)針對(duì)于 elasticsearch 的客戶端工具,用來(lái)展示數(shù)據(jù)。 elasticsearch-head 是基于 JavaScript 語(yǔ)言編寫(xiě)的,可以
    的頭像 發(fā)表于 02-15 16:06 ?590次閱讀
    Linux安裝<b class='flag-5'>elasticsearch</b>-head

    各種各樣的電容該怎么選擇?

    `我在看電路圖的時(shí)候,發(fā)現(xiàn)電容有各種各樣的,有陶瓷的,電解的,還有鉭電容,貼片的等等。不知道該怎么選用。請(qǐng)問(wèn)大概有多少種電容,分別有哪些特點(diǎn)!電路中發(fā)現(xiàn)接地的電容,選擇不同的容值和種類。這是為什么?難道濾波和容值還有關(guān)系么?`
    發(fā)表于 11-21 20:50

    Proteus實(shí)例集錦,包括電路圖、仿真程序,各種各樣的電路

    `Proteus實(shí)例集錦,包括電路圖、仿真程序,各種各樣的電路.全套的文件包括hex還有對(duì)應(yīng)的仿真圖,很不錯(cuò)。解壓后40m`
    發(fā)表于 05-12 07:11

    各種各樣的labview的控件包,越多越好。

    本人現(xiàn)要做一個(gè)小項(xiàng)目,需要用到各種各樣的控件,希望大家上傳一些,將不勝感激。
    發(fā)表于 03-15 16:44

    一個(gè)超級(jí)的A D庫(kù),,包含各種各樣的封裝庫(kù),種類豐富,資料齊全

    一個(gè)超級(jí)的A D庫(kù),,包含各種各樣的封裝庫(kù),種類豐富,資料齊全?。?!
    發(fā)表于 08-01 20:14

    這些線路中傳輸著各種各樣的控制信號(hào)

    `  不久的以前,當(dāng)我們打開(kāi)發(fā)動(dòng)機(jī),我們看到的會(huì)是一連串的線束與線路~如下圖:這些線路中傳輸著各種各樣的控制信號(hào)?!   ∵@些線束不僅增加了車身的自重,消耗更多的能源,也增加了測(cè)試工程師調(diào)試與故障
    發(fā)表于 12-20 14:47

    linux安裝配置ElasticSearch之源碼安裝

    創(chuàng)建軟連接[root@CentOS6 home]# ln -s /usr/local/elasticsearch-1.7.2 /usr/local/elasticsearch4.配置
    發(fā)表于 01-11 17:27

    現(xiàn)代世界中充滿了各種各樣的電子傳感器

    在我們生活的現(xiàn)代世界中充滿了各種各樣的電子傳感器,它們通過(guò)網(wǎng)絡(luò)連接在一起。但是,大多數(shù)傳感器產(chǎn)生的數(shù)據(jù)對(duì)于我們來(lái)說(shuō)是不可見(jiàn)的,只能用于特定的應(yīng)用程序。一旦能夠消除這種障礙,讓任何聯(lián)入網(wǎng)絡(luò)的計(jì)算機(jī)都能使用這些數(shù)據(jù),我們或許就將邁入普適計(jì)算的全新時(shí)代。
    發(fā)表于 05-05 08:31

    蘇州回收西門(mén)子模塊各個(gè)地區(qū)上門(mén)回收各種各樣品牌CPU模塊 plc模塊

    聯(lián)系方式 *** 蘇州回收西門(mén)子模塊各個(gè)地區(qū)上門(mén)回收各種各樣品牌CPU模塊 plc模塊蘇州回收西門(mén)子模塊各個(gè)地區(qū)上門(mén)回收
    發(fā)表于 11-12 10:03

    為什么有各種各樣的的單片機(jī)?

    什么是單片機(jī)?為什么有各種各樣的的單片機(jī)?
    發(fā)表于 10-13 07:43

    Proteus實(shí)例集錦(包括電路圖.仿真程序,各種各樣的電路

    Proteus實(shí)例集錦(包括電路圖.仿真程序,各種各樣的電路):4x4鍵盤(pán),51單片機(jī)12864大液晶屏proteus仿真,8253可編程定時(shí)器計(jì)數(shù)器,竊聽(tīng)器(使用PROTEUS串口例子)V1.0,電子琴和倒計(jì)時(shí)播放音
    發(fā)表于 10-02 10:23 ?1w次下載
    Proteus實(shí)例集錦(包括電路圖.仿真程序,<b class='flag-5'>各種各樣</b>的電路

    Rinspeed將推出新款無(wú)人駕駛公交 車體還分離以滿足各種各樣的需求

    而新晉品牌 Rinspeed 就打算推出一種新型自動(dòng)駕駛汽車方案,這款車不僅搭載了自動(dòng)駕駛系統(tǒng),車體還分離以滿足各種各樣的需求。
    的頭像 發(fā)表于 01-04 10:50 ?3124次閱讀

    圖解ElasticSearch底層工作原理

    底層工作原理,試圖回答以下問(wèn)題: 為什么我的搜索 *「foo-bar*」無(wú)法匹配foo-bar? 為什么增加更多的文件會(huì)壓縮索引(Index)? 為什么ElasticSearch占用很多內(nèi)存? 版本
    的頭像 發(fā)表于 10-09 11:27 ?4626次閱讀
    圖解<b class='flag-5'>ElasticSearch</b>的<b class='flag-5'>底層</b>工作原理

    XR在娛樂(lè)領(lǐng)域各種各樣的應(yīng)用

    (增強(qiáng)現(xiàn)實(shí))結(jié)合起來(lái)的MR(復(fù)合現(xiàn)實(shí))等,這些技術(shù)統(tǒng)稱為XR(擴(kuò)展現(xiàn)實(shí))。 XR也在娛樂(lè)領(lǐng)域開(kāi)展各種各樣的應(yīng)用。例如,在戲劇和音樂(lè)會(huì)等舞臺(tái)演出中使用XR的案例越來(lái)越多。在墻壁和地板由綠幕或大型高精度LED顯示器構(gòu)成的XR專用攝影棚進(jìn)行表演,
    的頭像 發(fā)表于 01-31 15:01 ?2409次閱讀

    SpringBoot 連接ElasticSearch的使用方式

    在上篇 ElasticSearch 文章中,我們?cè)敿?xì)的介紹了 ElasticSearch各種 api 使用。 實(shí)際的項(xiàng)目開(kāi)發(fā)過(guò)程中,我們通?;谀承┲髁骺蚣芷脚_(tái)進(jìn)行技術(shù)開(kāi)發(fā),比如
    的頭像 發(fā)表于 10-09 10:35 ?1098次閱讀
    RM新时代网站-首页