免費(fèi)做網(wǎng)站的公司app下載免費(fèi)安裝
一、集群有什么用
1.1 群集的含義與產(chǎn)生
群集(或稱(chēng)為集群)是由多臺(tái)主機(jī)構(gòu)成,但對(duì)外,只表現(xiàn)為一個(gè)整體,只提供一個(gè)訪問(wèn)入口(域名或IP),相當(dāng)于一臺(tái)大型計(jì)算機(jī)?;ヂ?lián)網(wǎng)應(yīng)用中,隨著站點(diǎn)對(duì)硬件性能、響應(yīng)速度、服務(wù)穩(wěn)定性、數(shù)據(jù)可靠性等要求越來(lái)越高,單臺(tái)服務(wù)器開(kāi)始無(wú)法滿足負(fù)載均衡及高可用的需求,群集因此應(yīng)運(yùn)而生。
1.2 群集的種類(lèi)
根據(jù)集群針對(duì)的目標(biāo)差異,可分為三種:
- 高可用群集 (High Availability Cluster)?:高可用(High Availability)是分布式系統(tǒng)架構(gòu)設(shè)計(jì)中必須考慮的因素之一,它通常是指,通過(guò)設(shè)計(jì)減少系統(tǒng)不能提供服務(wù)的時(shí)間。如果系統(tǒng)每運(yùn)行100個(gè)時(shí)間單位,會(huì)有1個(gè)時(shí)間單位無(wú)法提供服務(wù),我們說(shuō)系統(tǒng)的可用性是99%。提高應(yīng)用系統(tǒng)的可靠性、盡可能地減少中斷時(shí)間為目標(biāo),確保服務(wù)的連續(xù)性,達(dá)到高可用(HA) 的容錯(cuò)效果。HA的工作方式包括雙工和主從兩種模式,雙工即所有節(jié)點(diǎn)同時(shí)在線;主從則只有主節(jié)點(diǎn)在線,但當(dāng)出現(xiàn)故障時(shí)從節(jié)點(diǎn)能自動(dòng)切換為主節(jié)點(diǎn)。例如:“故障切換”、“雙機(jī)熱備” 等。
- 負(fù)載均衡群集(Load Balance Cluster)?:將流量均衡的分布在不同的節(jié)點(diǎn)上,每個(gè)節(jié)點(diǎn)都可以處理一部分負(fù)載,并且可以在節(jié)點(diǎn)之間動(dòng)態(tài)分配負(fù)載,以實(shí)現(xiàn)平衡。主要目的提高應(yīng)用系統(tǒng)的響應(yīng)能力、盡可能處理更多的訪問(wèn)請(qǐng)求、減少延遲為目標(biāo),獲得高并發(fā)、高負(fù)載(LB)的整體性能。
- 高性能群集(High Performance Computer Cluster)?:以提高應(yīng)用系統(tǒng)的CPU運(yùn)算速度、擴(kuò)展硬件資源和分析能力為目標(biāo),獲得相當(dāng)于大型、超級(jí)計(jì)算機(jī)的高性能運(yùn)算(HPC)能力。高性能依賴(lài)于"分布式運(yùn)算”、“并行計(jì)算” , 通過(guò)專(zhuān)用硬件和軟件將多個(gè)服務(wù)器的CPU、內(nèi)存等資源整合在一起,實(shí)現(xiàn)只有大型、超級(jí)計(jì)算機(jī)才具備的計(jì)算能力。例如,“云計(jì)算”、“網(wǎng)格計(jì)算”等。
二、ES集群的基礎(chǔ)概念
2.1 集群Cluster
ElasticSearch 是一個(gè)分布式的搜索引擎,所以一般由多臺(tái)物理機(jī)組成。而在這些機(jī)器上通過(guò)配置一個(gè)相同的cluster name,讓其互相發(fā)現(xiàn)從而把自己組織成一個(gè)集群。
集群的健康狀態(tài),ES集群存在三種健康狀態(tài),單節(jié)點(diǎn)ES也可以算是一個(gè)集群。
- green(綠色):代表所有索引的主分片和副本均已分配且可用,集群是100%可用
- yellow(黃色):主分片已分配且全部主分片可用,但所有的副本不全部可用,可能是缺失,也有可能是某個(gè)索引的副本未被分配,可以通過(guò)move cancel allocate 命令所屬的API進(jìn)行分配或移動(dòng)分片到指定節(jié)點(diǎn),使用這里要注意主分片和其副本絕不能在同一節(jié)點(diǎn)。此時(shí)系統(tǒng)容錯(cuò)性和集群高可用被弱化。
- red(紅色):所有的主分片不全部可用,這代表很有可能存在丟失數(shù)據(jù)的風(fēng)險(xiǎn)。如果只有一個(gè)單節(jié)點(diǎn)Elasticsearch那么屬于一種yellow狀態(tài),因?yàn)闆](méi)有副本。
2.2 節(jié)點(diǎn)Node
ElasticSearch 是以集群的方式運(yùn)行的,而節(jié)點(diǎn)是組成ES集群的基本單位,所以每個(gè) ElasticSearch 實(shí)例就是一個(gè)節(jié)點(diǎn),每個(gè)物理機(jī)器上可以有多個(gè)節(jié)點(diǎn),使用不同的端口和節(jié)點(diǎn)名稱(chēng)。
節(jié)點(diǎn)按主要功能可以分為三種:主節(jié)點(diǎn)(Master Node),協(xié)調(diào)節(jié)點(diǎn)(Coordianting Node)和數(shù)據(jù)節(jié)點(diǎn)(Data Node)。下面簡(jiǎn)單介紹下:
- 主節(jié)點(diǎn):處理創(chuàng)建,刪除索引等請(qǐng)求,維護(hù)集群狀態(tài)信息??梢栽O(shè)置一個(gè)節(jié)點(diǎn)不承擔(dān)主節(jié)點(diǎn)角色
- 協(xié)調(diào)節(jié)點(diǎn):負(fù)責(zé)處理請(qǐng)求。默認(rèn)情況下,每個(gè)節(jié)點(diǎn)都可以是協(xié)調(diào)節(jié)點(diǎn)。
- 數(shù)據(jù)節(jié)點(diǎn):用來(lái)保存數(shù)據(jù)。可以設(shè)置一個(gè)節(jié)點(diǎn)不承擔(dān)數(shù)據(jù)節(jié)點(diǎn)角色
2.3 分片
為了將數(shù)據(jù)添加到 Elasticsearch中,我們需要索引(index)——一個(gè)存儲(chǔ)關(guān)聯(lián)數(shù)據(jù)的地方,而實(shí)際上索引只是一個(gè)用來(lái)指向一個(gè)或多個(gè)?分片(shards)?的 邏輯命名空間 (logical namespace)。在ES中所有數(shù)據(jù)都存儲(chǔ)于索引(index) 之上,但實(shí)際索引只是維護(hù)了與多個(gè)分片之間的聯(lián)系,數(shù)據(jù)則是被路由到多個(gè)分片。例如一個(gè)索引有5個(gè)分片,則該索引將會(huì)有0,1,2,3,4,這五個(gè)分片 ,起指定每個(gè)文檔數(shù)據(jù)存儲(chǔ)在哪個(gè)分片是根據(jù)路由運(yùn)算公式?has(_routing)%number_of_primary_shards
?指定,使數(shù)據(jù)均勻分布在集群當(dāng)中。
分片分為:主分片(Primary shard)和副本分片(Replica shard)?:
- 主分片Primary shard:用于解決數(shù)據(jù)水平擴(kuò)展的問(wèn)題,通過(guò)主分片,可以將數(shù)據(jù)分布到集群內(nèi)的所有節(jié)點(diǎn)之上,將一份索引數(shù)據(jù)劃分為多小份的能力,允許水平分割和擴(kuò)展容量。多個(gè)分片可以響應(yīng)請(qǐng)求,提高性能和吞吐量。一個(gè)節(jié)點(diǎn)(Node)一般會(huì)管理多個(gè)分片,分片有兩種,主分片和副本分片。
- 副本分片Replica shard:副本分片只是一個(gè)主分片的拷貝。副本分片作為硬件故障時(shí)保護(hù)數(shù)據(jù)不丟失的冗余備份,從而提高整個(gè)集群的容錯(cuò)性,并為搜索和返回文檔等讀操作提供服務(wù),且需要注意的是副本分片不能與主分片在同一個(gè)節(jié)點(diǎn)。。一般來(lái)說(shuō),Elasticsearch 會(huì)盡量把一個(gè)索引的不同分片存儲(chǔ)在不同的主機(jī)上,分片的副本也盡可能存在不同的主機(jī)上,這樣可以提高容錯(cuò)率,從而提高高可用性。
- 一個(gè)Index數(shù)據(jù)在物理上被分布在多個(gè)主分片中,每個(gè)主分片只存放部分?jǐn)?shù)據(jù),每個(gè)主分片可以有多個(gè)副本。
- 主分片的作用是對(duì)索引的擴(kuò)容,使一個(gè)索引的容量可以突破單機(jī)的限制。
- 副本分片是對(duì)數(shù)據(jù)的保護(hù),每個(gè)主分片對(duì)應(yīng)一個(gè)或多個(gè)副本分片,當(dāng)主分片所在節(jié)點(diǎn)宕機(jī)時(shí),副本分片會(huì)被提升為對(duì)應(yīng)的主分片使用。
- 一個(gè)主分片和它的副本分片,不會(huì)分配到同一個(gè)節(jié)點(diǎn)上。
- 一個(gè)分片就是一個(gè)Lucene實(shí)例,并且它本身就是一個(gè)完整的搜索引擎。應(yīng)用程序不會(huì)和它直接通信。
- 當(dāng)索引創(chuàng)建完成的時(shí)候,主分片的數(shù)量就固定了,如果要修改需要重建索引,代價(jià)很高,如果要修改則需Reindex,但是復(fù)制分片的數(shù)量可以隨時(shí)調(diào)整。
文檔路由到對(duì)應(yīng)的分片的公式如下 👇
shard = hash(routing) % number_of_primary_shards
分片的設(shè)定:
- 對(duì)于生產(chǎn)環(huán)境中分片的設(shè)定,需要提前做好容量規(guī)劃,主分片數(shù)是在索引創(chuàng)建的時(shí)候預(yù)先設(shè)定,事后無(wú)法修改
- 分片數(shù)設(shè)置過(guò)小
- 導(dǎo)致后續(xù)無(wú)法增加節(jié)點(diǎn)實(shí)現(xiàn)水平擴(kuò)展
- 單個(gè)分片的數(shù)據(jù)量太大,導(dǎo)致數(shù)據(jù)重新分配耗時(shí)
- 分片數(shù)設(shè)置過(guò)大,7.0開(kāi)始,默認(rèn)主分片設(shè)置成1,解決了over-sharding的問(wèn)題
- 影響搜索結(jié)果的相關(guān)性打分,影響統(tǒng)計(jì)結(jié)果的準(zhǔn)確性
- 單個(gè)節(jié)點(diǎn)上過(guò)多的分片,會(huì)導(dǎo)致資源浪費(fèi),同時(shí)也會(huì)影響性能
- 分片數(shù)設(shè)置過(guò)小
用圖形表示出來(lái)可能是這樣子的:
- Index 1:藍(lán)色部分,有3個(gè)shard,分別是P1,P2,P3,位于3個(gè)不同的Node中,這里沒(méi)有Replica。
- Index 2:綠色部分,有2個(gè)shard,分別是P1,P2,位于2個(gè)不同的Node中。并且每個(gè)shard有一個(gè)replica,分別是R1和R2?;谙到y(tǒng)可用性的考慮,同一個(gè)shard的primary和replica不能位于同一個(gè)Node中。這里Shard1的P1和R1分別位于Node3和Node2中,如果某一刻N(yùn)ode2發(fā)生宕機(jī),服務(wù)基本不會(huì)受影響,因?yàn)檫€有一個(gè)P1和R2都還是可用的。因?yàn)槭侵鱾浼軜?gòu),當(dāng)主分片發(fā)生故障時(shí),需要切換,這時(shí)候需要選舉一個(gè)副本作為新主,這里除了會(huì)耗費(fèi)一點(diǎn)點(diǎn)時(shí)間外,也會(huì)有丟失數(shù)據(jù)的風(fēng)險(xiǎn)。
三、ES集群搭建的步驟
1、下載ElasticSearch的安裝包:
最新版本:Download Elasticsearch | Elastic
過(guò)去版本:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.3-linux-x86_64.tar.gz
解壓文件,將elasticsearch安裝在/usr/local目錄下
tar -zxvf elasticsearch-7.17.3-linux-x86_64.tar.gz -C /usr/local
cd /usr/local/
2、修改 jvm.options 配置
## 修改內(nèi)存大小 ,內(nèi)存小我就設(shè)置成這樣了
-Xms512m
-Xmx512m
3、配置 elasticsearch.yml 文件
# 集群名稱(chēng),三臺(tái)集群,要配置相同的集群名稱(chēng)!!!
cluster.name: my-application
# 節(jié)點(diǎn)名稱(chēng)
node.name: node-1
# 是否有資格被選舉為master,ES默認(rèn)集群中第一臺(tái)機(jī)器為主節(jié)點(diǎn)
node.master: true
# 是否存儲(chǔ)數(shù)據(jù)
node.data: true
#最?集群節(jié)點(diǎn)數(shù),為了避免腦裂,集群節(jié)點(diǎn)數(shù)最少為 半數(shù)+1
node.max_local_storage_nodes: 3
# 數(shù)據(jù)目錄
path.data: /usr/local/node-1/data
# log目錄
path.logs: /usr/local/node-1/logs
# 修改 network.host 為 0.0.0.0,表示對(duì)外開(kāi)放,如對(duì)特定ip開(kāi)放則改為指定ip
network.host: 0.0.0.0
# 設(shè)置對(duì)外服務(wù)http端口,默認(rèn)為9200
http.port: 9200
# 內(nèi)部節(jié)點(diǎn)之間溝通端?
transport.tcp.port: 9300
# 寫(xiě)?候選主節(jié)點(diǎn)的設(shè)備地址,在開(kāi)啟服務(wù)后可以被選為主節(jié)點(diǎn)
discovery.seed_hosts: ["localhost:9300", "localhost:9301", "localhost:9302"]
# 初始化?個(gè)新的集群時(shí)需要此配置來(lái)選舉master
cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
# 設(shè)置集群中N個(gè)節(jié)點(diǎn)啟動(dòng)時(shí)進(jìn)行數(shù)據(jù)恢復(fù),默認(rèn)為1
gateway.recover_after_nodes: 3 # 下面的兩個(gè)配置在安裝elasticsearch-head的時(shí)候會(huì)用到
# 開(kāi)啟跨域訪問(wèn)支持,默認(rèn)為false
http.cors.enabled: true
# 跨域訪問(wèn)允許的域名地址,(允許所有域名)以上使用正則
http.cors.allow-origin: "*"#關(guān)閉xpack
xpack.security.enabled: false
4、復(fù)制當(dāng)前es構(gòu)建其他數(shù)據(jù)節(jié)點(diǎn)
# 分別拷貝三份文件
cp -r /usr/local/elasticsearch-7.17.3/ /usr/local/node-1
cp -r /usr/local/elasticsearch-7.17.3/ /usr/local/node-2
cp -r /usr/local/elasticsearch-7.17.3/ /usr/local/node-3
5、修改node-2和node-3兩個(gè)數(shù)據(jù)節(jié)點(diǎn)的配置文件,先修改node-2數(shù)據(jù)節(jié)點(diǎn)
# 集群名稱(chēng),三臺(tái)集群,要配置相同的集群名稱(chēng)!!!
cluster.name: my-application
# 節(jié)點(diǎn)名稱(chēng)
node.name: node-2
# 是否有資格被選舉為master,ES默認(rèn)集群中第一臺(tái)機(jī)器為主節(jié)點(diǎn)
node.master: true
# 是否存儲(chǔ)數(shù)據(jù)
node.data: true
#最?集群節(jié)點(diǎn)數(shù),為了避免腦裂,集群節(jié)點(diǎn)數(shù)最少為 半數(shù)+1
node.max_local_storage_nodes: 3
# 數(shù)據(jù)目錄
path.data: /usr/local/node-2/data
# log目錄
path.logs: /usr/local/node-2/logs
# 修改 network.host 為 0.0.0.0,表示對(duì)外開(kāi)放,如對(duì)特定ip開(kāi)放則改為指定ip
network.host: 0.0.0.0
# 設(shè)置對(duì)外服務(wù)http端口,默認(rèn)為9200,可更改端口不為9200
http.port: 9201
# 內(nèi)部節(jié)點(diǎn)之間溝通端?
transport.tcp.port: 9301
# 寫(xiě)?候選主節(jié)點(diǎn)的設(shè)備地址,在開(kāi)啟服務(wù)后可以被選為主節(jié)點(diǎn)
discovery.seed_hosts: ["localhost:9300", "localhost:9301", "localhost:9302"]
# 初始化?個(gè)新的集群時(shí)需要此配置來(lái)選舉master
cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
# 設(shè)置集群中N個(gè)節(jié)點(diǎn)啟動(dòng)時(shí)進(jìn)行數(shù)據(jù)恢復(fù),默認(rèn)為1
gateway.recover_after_nodes: 3 # 下面的兩個(gè)配置在安裝elasticsearch-head的時(shí)候會(huì)用到
# 開(kāi)啟跨域訪問(wèn)支持,默認(rèn)為false
http.cors.enabled: true
# 跨域訪問(wèn)允許的域名地址,(允許所有域名)以上使用正則
http.cors.allow-origin: "*"#關(guān)閉xpack
xpack.security.enabled: false
6、再先修改node-3數(shù)據(jù)節(jié)點(diǎn):
# 集群名稱(chēng),三臺(tái)集群,要配置相同的集群名稱(chēng)!!!
cluster.name: my-application
# 節(jié)點(diǎn)名稱(chēng)
node.name: node-3
# 是否有資格被選舉為master,ES默認(rèn)集群中第一臺(tái)機(jī)器為主節(jié)點(diǎn)
node.master: true
# 是否存儲(chǔ)數(shù)據(jù)
node.data: true
#最?集群節(jié)點(diǎn)數(shù),為了避免腦裂,集群節(jié)點(diǎn)數(shù)最少為 半數(shù)+1
node.max_local_storage_nodes: 3
# 數(shù)據(jù)目錄
path.data: /usr/local/node-3/data
# log目錄
path.logs: /usr/local/node-3/logs
# 修改 network.host 為 0.0.0.0,表示對(duì)外開(kāi)放,如對(duì)特定ip開(kāi)放則改為指定ip
network.host: 0.0.0.0
# 設(shè)置對(duì)外服務(wù)http端口,默認(rèn)為9200,可更改端口不為9200
http.port: 9202
# 內(nèi)部節(jié)點(diǎn)之間溝通端?
transport.tcp.port: 9302
# 寫(xiě)?候選主節(jié)點(diǎn)的設(shè)備地址,在開(kāi)啟服務(wù)后可以被選為主節(jié)點(diǎn)
discovery.seed_hosts: ["localhost:9300", "localhost:9301", "localhost:9302"]
# 初始化?個(gè)新的集群時(shí)需要此配置來(lái)選舉master
cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
# 設(shè)置集群中N個(gè)節(jié)點(diǎn)啟動(dòng)時(shí)進(jìn)行數(shù)據(jù)恢復(fù),默認(rèn)為1
gateway.recover_after_nodes: 3 # 下面的兩個(gè)配置在安裝elasticsearch-head的時(shí)候會(huì)用到
# 開(kāi)啟跨域訪問(wèn)支持,默認(rèn)為false
http.cors.enabled: true
# 跨域訪問(wèn)允許的域名地址,(允許所有域名)以上使用正則
http.cors.allow-origin: "*"#關(guān)閉xpack
xpack.security.enabled: false
7、創(chuàng)建ES存儲(chǔ)數(shù)據(jù)和log目錄,根據(jù)之前每個(gè)節(jié)點(diǎn)的配置文件內(nèi)配置path進(jìn)行創(chuàng)建或修改
mkdir -p /usr/local/node-1/data
mkdir -p /usr/local/node-1/logs
mkdir -p /usr/local/node-2/data
mkdir -p /usr/local/node-2/logs
mkdir -p /usr/local/node-3/data
mkdir -p /usr/local/node-3/logs
8、創(chuàng)建普通用戶,由于ES需要使用非root用戶來(lái)啟動(dòng),所以下面創(chuàng)建一個(gè)普通用戶
#創(chuàng)建elasticsearch用戶組
groupadd elasticsearch#創(chuàng)建新用戶elasticsearch ,設(shè)置用戶組為elasticsearch ,密碼123456
useradd elasticsearch -g elasticsearch -p 123456#授權(quán),更改/elasticsearch-7.17.3文件夾所屬用戶及用戶組為elasticsearch:elasticsearch
chown -R elasticsearch:elasticsearch /usr/local/elasticsearch-7.17.3/#切換用戶elasticsearch
su elasticsearch
9、給節(jié)點(diǎn)文件授權(quán):
chown -R elasticsearch:elasticsearch /usr/local/node-1
chown -R elasticsearch:elasticsearch /usr/local/node-2
chown -R elasticsearch:elasticsearch /usr/local/node-3
四、搭建遇到的錯(cuò)誤(先解決)
問(wèn)題1:?如果你之前安裝過(guò)ES,并且搭建集群的ES文件是從之前的復(fù)制過(guò)來(lái)的,那么請(qǐng)務(wù)必將data目錄清空。
問(wèn)題2:
如果你目前使用的是root賬戶,那么啟動(dòng)會(huì)報(bào)下面的錯(cuò)誤。
這是因?yàn)閑s不允許使用root啟動(dòng),所以需要?jiǎng)?chuàng)建一個(gè)非root用戶,以非root用戶來(lái)啟動(dòng)es。創(chuàng)建elasticsearch 用戶,或者使用其他非root用戶,注意文件權(quán)限。如果你是非root用戶則可以跳過(guò)這一步。
#創(chuàng)建elasticsearch用戶組
groupadd elasticsearch#創(chuàng)建新用戶elasticsearch ,設(shè)置用戶組為elasticsearch ,密碼123456
useradd elasticsearch -g elasticsearch -p 123456#授權(quán),更改/elasticsearch-7.17.3文件夾所屬用戶及用戶組為elasticsearch:elasticsearch
chown -R elasticsearch:elasticsearch /usr/local/elasticsearch-7.17.3/#切換用戶elasticsearch
su elasticsearch
問(wèn)題3:
說(shuō)明操作當(dāng)前文件權(quán)限不夠,給文件授權(quán)就好了。
chown -R elasticsearch:elasticsearch /usr/local/node-1
chown -R elasticsearch:elasticsearch /usr/local/node-2
chown -R elasticsearch:elasticsearch /usr/local/node-3
問(wèn)題4:
ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.
bootstrap check failure [1] of [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
ERROR: Elasticsearch did not exit normally - check the logs at /usr/local/node-1/logs/my-application.log
解決方案
sudo vi /etc/security/limits.conf
#添加以下內(nèi)容,注意:elasticsearch是當(dāng)前用戶名,不一定和我一樣,
elasticsearch hard nofile 65536
elasticsearch soft nofile 65536
說(shuō)明:elasticsearch表示運(yùn)行的用戶,如果你的當(dāng)用戶是es,那么前綴就是es,不一定和我一樣,hard與soft表示限制的類(lèi)型,nofile表示max number of open file descriptors,65536表示設(shè)置的大小。改完需要重新登錄才能生效,或者切換用戶
su root
Password:
[root@localhost ~]# su sandwich
[root@localhost ~]# ulimit -Hn
65536
[root@localhost ~]# ulimit -Sn
65536
問(wèn)題5:
解決內(nèi)存權(quán)限太小錯(cuò)誤,如果在啟動(dòng)時(shí)又報(bào)錯(cuò)了,并且是下面這個(gè)錯(cuò)誤:
[2022-05-08T14:58:01,836][ERROR][o.e.b.Bootstrap ] [node-1] node validation exception
[1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.
bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[2022-05-08T14:58:01,840][INFO ][o.e.n.Node ] [node-1] stopping ...
[2022-05-08T14:58:01,870][INFO ][o.e.n.Node ] [node-1] stopped
[2022-05-08T14:58:01,870][INFO ][o.e.n.Node ] [node-1] closing ...
[2022-05-08T14:58:01,920][INFO ][o.e.n.Node ] [node-1] closed
這是因?yàn)閑lasticsearch用戶擁有的內(nèi)存權(quán)限太小,至少需要262144。解決方案,切換到root用戶下,在/etc/sysctl.conf文件最后添加一行
vi /etc/sysctl.conf
添加的內(nèi)容:
vm.max_map_count=262144
執(zhí)行命令生效:
/sbin/sysctl -p
五、啟動(dòng)ES集群
# 需切換為elasticsearch用戶
su elasticsearch
# 啟動(dòng)服務(wù)
cd /usr/local/
./node-1/bin/elasticsearch -d
./node-2/bin/elasticsearch -d
./node-3/bin/elasticsearch -d# 關(guān)閉es進(jìn)程:
ps -ef | grep elastic
kill -9 11597
如果開(kāi)啟了防火墻則還需要開(kāi)放端口
參考地址:Linux(CentOS7)開(kāi)放指定端口與開(kāi)關(guān)防火墻 - 唐浩榮 - 博客園 (cnblogs.com)
9200、9201、9202:對(duì)外服務(wù)的http 端口
9300、9301、9302:節(jié)點(diǎn)間通信的tcp端口
啟動(dòng)成功后的截圖:
六、配置kibana
打開(kāi)配置kibana.yml,添加下面的配置:
#配置端口號(hào)
server.port: 5601
#配置網(wǎng)絡(luò)訪問(wèn)地址
server.host: "0.0.0.0"
server.publicBaseUrl: "http://192.168.1.15:5601"
#配置es鏈接地址(es集群,可以用逗號(hào)分隔)
elasticsearch.hosts: ["http://192.168.1.15:9200", "http://192.168.1.15:9201", "http://192.168.1.15:9202"]
#配置中文語(yǔ)言界面
i18n.locale: "zh-CN"
PROPERTIES 復(fù)制 全屏
然后重啟即可
然后可以通過(guò)以下命令進(jìn)行驗(yàn)證集群的搭建狀況:
GET _cat/nodes