前言
本文以elasticsearch8.6.2為例詳述linux集群離線部署步驟,以 官網(wǎng)部署教程為基礎(chǔ),針對(duì)部署過(guò)程中可能的疑問作說(shuō)明。
因?yàn)轫?xiàng)目安全等的原因,很多時(shí)候我們要部署的目標(biāo)機(jī)器是不能訪問互聯(lián)網(wǎng)的。本文是個(gè)人離線部署過(guò)程記錄,希望也能幫助到有同樣需要的同學(xué)。
版本選擇
elasticsearch版本的更新迭代很快,8.x相較7.x , 6.x不僅性能有了大的提升,安全成為必要選項(xiàng),還增加了許多新的功能。如果純粹是新項(xiàng)目考慮使用elasticsearch,建議直接考慮8.x版本。
本文選擇了當(dāng)前最新的穩(wěn)定版本8.6.2,后期會(huì)再出一個(gè)8.6.2版本對(duì)于常用功能的支持和限制的評(píng)估清單,有需要的朋友可以關(guān)注下
環(huán)境準(zhǔn)備
elasticsearch 8.6.2有內(nèi)置的jdk,使用內(nèi)置自帶jdk即可,elasticsearch集群無(wú)特別依賴軟件,我部署的linux版本CentOS Linux release 7.3.1611 (Core) 。1
開發(fā)環(huán)境資源有限,所以在一臺(tái)服務(wù)器部署偽集群,避免沖突設(shè)置為不同端口。有資源的情況下可以部署到不同的多臺(tái)機(jī)器,http端口默認(rèn)9200,tcp端口默認(rèn)9300
ip | 端口 | 節(jié)點(diǎn)名稱 |
---|---|---|
192.168.56.100 | http:9201 tcp:9301 | node-1 |
192.168.56.100 | http:9202 tcp:9302 | node-2 |
192.168.56.100 | http:9203 tcp:9303 | node-3 |
集群部署
下載解壓
下載地址
# 上傳服務(wù)器
rz
# 解壓
tar -xzf elasticsearch-8.6.2-linux-x86_64.tar.gz
run
elasticsearch不能以root賬號(hào)啟動(dòng),所以需要先創(chuàng)建非root賬號(hào),并賦權(quán)
# 創(chuàng)建新用戶es
useradd -m -s /bin/bash es
# 設(shè)置密碼
passwd xxx
# 賦權(quán),這里賦予了dwrx所有權(quán)限,如果有限制可以降低權(quán)限
chmod -R 777 elasticsearch-8.6.2
# 進(jìn)入安裝目錄
cd elasticsearch-8.6.2/
# 啟動(dòng),退出Ctrl+z
./bin/elasticsearch
elasticsearch8.x系列默認(rèn)需要密碼驗(yàn)證和https,查看啟動(dòng)日志可以看到elasticsearch自動(dòng)為超級(jí)管理員 elastic 生成了密碼,還會(huì)生成cert認(rèn)證文件到 elasticsearch-8.6.2/config/certs/目錄。
這意味著該elasticsearch服務(wù)使用http協(xié)議連接時(shí)只能使用https,且需要賬號(hào)/密碼。比如上面說(shuō)的elastic賬號(hào)和自動(dòng)生成的密碼
The generated password for the elastic built-in superuser is:
<password>
The enrollment token for Kibana instances, valid for the next 30 minutes:
<enrollment-token>
The hex-encoded SHA-256 fingerprint of the generated HTTPS CA DER-encoded certificate:
<fingerprint>
You can complete the following actions at any time:
Reset the password of the elastic built-in superuser with
'bin/elasticsearch-reset-password -u elastic'.
Generate an enrollment token for Kibana instances with
'bin/elasticsearch-create-enrollment-token -s kibana'.
Generate an enrollment token for Elasticsearch nodes with
'bin/elasticsearch-create-enrollment-token -s node'.
現(xiàn)在我們可以通過(guò)如下方式驗(yàn)證啟動(dòng)狀態(tài),會(huì)提示輸入密碼,密碼就是上述截圖中的elastic對(duì)應(yīng)的密碼
curl --cacert $ES_HOME/config/certs/http_ca.crt -u elastic https://localhost:9200
返回結(jié)果
{
"name" : "localhost.localdomain",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "qnuRTH8gSEaGAiIzc_KAzA",
"version" : {
"number" : "8.6.2",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "2d58d0f136141f03239816a4e360a8d17b6d8f29",
"build_date" : "2023-02-13T09:35:20.314882762Z",
"build_snapshot" : false,
"lucene_version" : "9.4.2",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}
實(shí)際使用情況我們肯定是自己會(huì)再生成密碼,可以使用如下命令為elastic修改密碼或創(chuàng)建新用戶并給定密碼
bin/elasticsearch-reset-password -u user1 -i <password>
配置
重要配置elasticsearch.yml
path配置
默認(rèn)es的日志和數(shù)據(jù)存儲(chǔ)放在es的安裝目錄,這種在升級(jí)情況下很容易被刪掉。所以官方推薦指定非安裝目錄的路徑
path:
data: /var/data/elasticsearch
logs: /var/log/elasticsearch
設(shè)置集群名稱
# 集群名稱每個(gè)節(jié)點(diǎn)都必須配置成一樣
cluster.name: my-cluster
設(shè)置節(jié)點(diǎn)名稱
node.name: node-1
設(shè)置端口
transport.port: 9301
http.port: 9201
網(wǎng)絡(luò)host
# 設(shè)置為所在主機(jī)ip
network.host: 192.168.56.100
集群發(fā)現(xiàn)設(shè)置
默認(rèn)es會(huì)掃描本機(jī)9300-9305的節(jié)點(diǎn)加入集群,如果部署在不同機(jī)器就必須設(shè)置.
這里設(shè)置本機(jī)的三個(gè)節(jié)點(diǎn)
discovery.seed_hosts:
- 192.168.56.100:9301
- 192.168.56.100:9302
- 192.168.56.100:9303
候選主節(jié)點(diǎn)設(shè)置,開發(fā)、測(cè)試環(huán)境可以數(shù)據(jù)節(jié)點(diǎn)和master節(jié)點(diǎn)不分開。生產(chǎn),特別是大型集群,官方推薦區(qū)分節(jié)點(diǎn)角色
# 注意默認(rèn)有配這個(gè)這個(gè)配置,需要改到原配置下,或者注釋已有配置
cluster.initial_master_nodes:
- node-1
- node-2
- node-3
重要配置jvm.options
開發(fā)環(huán)境資源有限,修改使用的內(nèi)存.可以視內(nèi)存情況設(shè)定,生產(chǎn)一般建議是機(jī)器內(nèi)存的一半,且不超過(guò)32G
cd elasticsearch-8.6.2/config
-Xms1g
-Xmx1g
部署集群
創(chuàng)建多個(gè)節(jié)點(diǎn)
# 創(chuàng)建集群目錄
mkdir escluster8.6.2
# 把前面的elasticsearch-8.6.2目錄復(fù)制到剛剛創(chuàng)建的集群目錄,并改名node-1
mv elasticsearch-8.6.2 escluster8.6.2/node-1
cd escluster8.6.2
# 復(fù)制jar到當(dāng)前目錄,這里為了使用全新的節(jié)點(diǎn)
cp ../elasticsearch-8.6.2-linux-x86_64.tar.gz ./
# 解壓
tar -xzf elasticsearch-8.6.2-linux-x86_64.tar.gz
cp -r elasticsearch-8.6.2 node-2
mv elasticsearch-8.6.2 node-3
# 刪除tar包
rm -rf elasticsearch-8.6.2-linux-x86_64.tar.gz
注意是使用es用戶的情況下操作,如果使用的是root用戶,請(qǐng)授權(quán)這些目錄的所有者為上面步驟創(chuàng)建的新用戶es
chown -R es escluster8.6.2
修改node-2和node-3的jvm.options配置文件,增加配置
-Xms1g
-Xmx1g
修改node-2的配置文件elasticsearch.yml
http.host: 192.168.56.100
cluster.name: es8-cluster
node.name: node-2
network.host: 192.168.56.100
http.port: 9202
transport.port: 9302
修改node-3的配置文件elasticsearch.yml
http.host: 192.168.56.100
cluster.name: es8-cluster
node.name: node-3
network.host: 192.168.56.100
http.port: 9203
transport.port: 9303
獲取新節(jié)點(diǎn)加入集群的token
# node-1節(jié)點(diǎn)的目錄下執(zhí)行
bin/elasticsearch-create-enrollment-token -s node
使用生成的token分別在node-2,node-3的bin目錄下執(zhí)行
elasticsearch --enrollment-token <enrollment-token>
會(huì)自動(dòng)生成認(rèn)證文件config/certs,并配置到elasticsearch.yml中。同時(shí)配置了discovery.seed_hosts,但是只配置了節(jié)點(diǎn)1,我們一般開發(fā)環(huán)境會(huì)讓3個(gè)節(jié)點(diǎn)都即可以是master節(jié)點(diǎn)又是數(shù)據(jù)節(jié)點(diǎn)。所以這里可以改后重啟
discovery.seed_hosts:
- 192.168.56.100:9301
- 192.168.56.100:9302
- 192.168.56.100:9303
cluster.initial_master_nodes:
- node-1
- node-2
- node-3
啟動(dòng)
這里說(shuō)明下一般情況下的啟動(dòng)命令。
后臺(tái)啟動(dòng)各個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都需要執(zhí)行下面命令。注意切換到es賬號(hào),su es
./elasticsearch -d -p pid
停止
這里說(shuō)明下一般情況下的停止命令。
ps -ef|grep elasticsearch
kill -p pid
問題解決
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
系統(tǒng)虛擬內(nèi)存默認(rèn)最大映射數(shù)為65530,無(wú)法滿足ES系統(tǒng)要求,需要調(diào)整為262144以上
#修改文件
sudo vim /etc/sysctl.conf
#添加參數(shù)
vm.max_map_count = 262144
重新加載生效
sysctl -p
kibana安裝
因?yàn)?.x默認(rèn)開啟了https和密碼認(rèn)證,需要配置kibana和elasticsearch集群連接的認(rèn)證文件等。建議使用token方式連接elasticsearch集群,更簡(jiǎn)單。
下載kibana
官網(wǎng)下載
上傳到目標(biāo)服務(wù)器,并解壓
tar -xzvf kibana-8.6.2-linux-x86_64.tar.gz
授權(quán)目錄所有者為es
chown -R es kibana-8.6.2
使用token方式連接elasticsearch集群
修改配置文件config/kibana.yml, host配置為kibana所在的服務(wù)器ip
server.host: "192.168.56.100"
生成token
# 任一elasticsearch集群執(zhí)行,這里選擇node-1
node-1/bin/elasticsearch-create-enrollment-token -s kibana
注意切換到es用戶啟動(dòng)(kibana也不建議使用root賬號(hào)啟動(dòng))
bin/kibana --enrollment-token <enrollment-token>
啟動(dòng)成功日志的最后會(huì)打印出一個(gè)code,記錄該code
瀏覽器訪問http://192.168.56.100:5601
首先會(huì)提示輸入一個(gè)類似激活碼的,就把上面記錄的code錄入;然后會(huì)彈出登錄界面,輸入elastic超級(jí)管理員的賬密即可登入
至此kibana已成功安裝并連接elasticsearch集群
配置
使用token方式連接集群成功后也是會(huì)自動(dòng)生成一些認(rèn)證的文件,和添加相應(yīng)的配置到kibana.yml中。查看kibana.yml可以看到連接到的節(jié)點(diǎn)可能只有一個(gè),可以加入其他兩個(gè)節(jié)點(diǎn)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-463340.html
cat config/kibana.yml
# xpack.fleet.outputs:中的hosts同理配置
elasticsearch.hosts: ['https://192.168.56.100:9201','https://192.168.56.100:9202', 'https://192.168.56.100:9203']
-
查看命令 cat /etc/redhat-release) ??文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-463340.html
到了這里,關(guān)于Elasticsearch 8.x實(shí)戰(zhàn) | elasticsearch 8.x 集群離線安裝的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!