線上環(huán)境Es三節(jié)點集群搭建部署方案
1. 目標
-
Es 集群架構(gòu)圖
!
2. 搭建步驟
- 官網(wǎng)教程: https://elasticsearch.bookhub.tech/set_up_elasticsearch/installing_elasticsearch/
-
確定 Es 安裝目錄
機器名 | 內(nèi)網(wǎng)IP | Es 版本 | 重點目錄 | ||
---|---|---|---|---|---|
es-node01 | 192.18.233.240 | 7.15.1 | 安裝目錄: /home/work/elasticsearch/ 數(shù)據(jù)目錄: /mnt/es/esdata 快照倉庫: /mnt/es/snapshot 日志目錄: /mnt/logs/eslogs |
||
es-node02 | 192.18.233.229 | ||||
es-node03 | 192.18.233.230 |
-
下載地址
- es下載:
- https://mirrors.huaweicloud.com/elasticsearch/
- 目前Es8.x 處于開發(fā)階段, 目前最新的穩(wěn)定版本是 Elasticsearch 7.15.1
- https://mirrors.huaweicloud.com/elasticsearch/7.15.1/elasticsearch-7.15.1-linux-x86_64.tar.gz
- kibana下載:
- https://mirrors.huaweicloud.com/kibana/
-
下載安裝
# 下載,解壓即可
cd /home/work/elasticsearch
wget https://mirrors.huaweicloud.com/elasticsearch/7.15.1/elasticsearch-7.15.1-linux-x86_64.tar.gz
# 解壓
tar -zxvf elasticsearch-7.15.1-linux-x86_64.tar.gz
- 解壓后的文件目錄結(jié)構(gòu)
-
初始化Es用戶
#創(chuàng)建賬號esadmin
useradd esadmin
#初始化密碼
passwd esadmin
es1#user
#對esadmin授權(quán)目錄
chown -R esadmin /home/work/elasticsearch/
chown -R esadmin /mnt/es/esdata
chown -R esadmin /mnt/logs/eslogs
chown -R esadmin /mnt/es/snapshot
chmod 777 /home/work/
-
修改Es配置文件(必要的重點設(shè)置項)
- 官方參考:
- https://elasticsearch.bookhub.tech/set_up_elasticsearch/configuring_elasticsearch/
- 重點配置設(shè)置:
- https://elasticsearch.bookhub.tech/set_up_elasticsearch/configuring_elasticsearch/import_elasticsearch_configuration
- 在生產(chǎn)中,我們強烈建議你設(shè)置
elasticsearch.yml
中的path.data
和path.logs
在$ES_HOME
之外的位置。 - 斷路器設(shè)置: https://elasticsearch.bookhub.tech/set_up_elasticsearch/configuring_elasticsearch/circuit_breaker_settings
- Elasticsearch有三個配置文件:(這些文件位于 config 目錄中)
-
elasticsearch.yml
用于配置 Elasticsearch -
jvm.options
用于配置 Elasticsearch JVM 設(shè)置 -
log4j2.properties
用于配置 Elasticsearch 日志記錄
-
- 示例如下: 以 node01(192.18.233.240) 為例,其他節(jié)點中可以直接復(fù)用這個配置,只修改
-
node.name 值即可。
-
elasticsearch.yml
-
# 備份默認的配置文件 mv elasticsearch.yml elasticsearch.yml-bak # 編輯一個新文件 vi elasticsearch.yml # 集群名 cluster.name: es-cluster-prod # 節(jié)點名稱 node.name: es-node01 ## 下面的配置項其他節(jié)點都統(tǒng)一內(nèi)容## # HTTP端口 http.port: 9200 # Transport TCP端口 transport.tcp.port: 9300 # 數(shù)據(jù)存儲路徑 path.data: /mnt/es/esdata # 設(shè)置快照倉庫目錄 path.repo: ["/mnt/es/snapshot"] # 日志存儲路徑(將影響默認的執(zhí)行日志,gc日志,致命錯誤日志的輸出目錄) path.logs: /mnt/logs/eslogs # 監(jiān)聽地址 network.host: 0.0.0.0 # 設(shè)置提供群集中其他節(jié)點的列表,這些節(jié)點具有選主資格 discovery.seed_hosts: ["172.18.233.240:9300", "172.18.233.229:9300", "172.18.233.230:9300"] # 初始主節(jié)點列表 cluster.initial_master_nodes: ["es-node01", "es-node02", "es-node03"] # 每隔多長時間ping一個node discovery.zen.fd.ping_interval: 30s # 每次ping的超時時間 discovery.zen.fd.ping_timeout: 120s # 一個node被ping多少次失敗就認為是故障了 discovery.zen.fd.ping_retries: 6 # 集群腦裂問題參數(shù)配置 # elasticsearch則可以配置返回消息的節(jié)點數(shù)量, 一般情況下會配置(n/2 + 1)個節(jié)點 # 注意:discovery.zen.minimum_master_nodes 已經(jīng)在Elasticsearch 7.x中被廢棄 # 請使用 cluster.initial_master_nodes 參數(shù)來指定初始主節(jié)點列表 # 節(jié)點角色設(shè)置(默認就是啟用的) node.ingest: true # HTTP跨域設(shè)置 http.cors.enabled: true http.cors.allow-origin: "*"
-
-
vi jvm.options
- 官方建議: 默認情況下,Elasticsearch 根據(jù)節(jié)點的角色和總內(nèi)存自動設(shè)置 JVM 堆大小。我們建議大多數(shù)生產(chǎn)環(huán)境使用默認大小。
-
cp jvm.options jvm.options-bak vim jvm.options # 限制最大堆3GB -Xms3g -Xmx3g # 默認的HeapDumpPath是輸出到安裝目錄的,因此可以修改。 -XX:HeapDumpPath=/mnt/logs/eslogs/heapdump # 致命錯誤日志 #-XX:ErrorFile=logs/hs_err_pid%p.log -XX:ErrorFile=/mnt/logs/eslogs/hs_err_pid%p.log # JDK 8 GC 日志 #8:-Xloggc:logs/gc.log 8:-Xloggc:/mnt/logs/eslogs/gc.log # JDK 9 GC 日志 # 將 file=logs/gc.log 改成 file=/mnt/logs/eslogs/gc.log #9-:-Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m 9-:-Xlog:gc*,gc+age=trace,safepoint:file=/mnt/logs/eslogs/gc.log:utctime,pid,tags:filecount=32,filesize=64m
-
-
修改系統(tǒng)設(shè)置
-
在 /etc/sysctl.conf 中添加
# 臨時設(shè)置臨時增加 vm.max_map_count 參數(shù)的值:
sysctl -w vm.max_map_count=262144
# 永久設(shè)置
vim /etc/sysctl.conf
vm.max_map_count=655360
# 保存后執(zhí)行這個生效
sysctl -p
- 修改 /etc/security/limits.conf
vim /etc/security/limits.conf
esadmin soft nofile 65536
esadmin hard nofile 131072
esadmin soft nproc 4096
esadmin hard nproc 4096
# 保存退出后,重新登錄 esadmin 用戶檢查效果
ulimit -a
-
啟動
# 進入安裝目錄
cd /home/work/elasticsearch/elasticsearch-7.15.1/bin
#切換賬號
su esadmin
#后臺啟動命令
./elasticsearch -d
# 啟動成功后,驗證
curl
- 如果用 esadmin 用戶啟動時報錯 AccessDeniedException: /home/work/elasticsearch/elasticsearch-7.15.1/config/elasticsearch.keystore 。 這個是因為 elasticsearch.keystore 文件默認是啟動后才創(chuàng)建的,因此重新設(shè)置下文件權(quán)限即可
-
sudo chmod -R 755 /home/work/elasticsearch/elasticsearch-7.15.1/config/
-
- 如果啟動時報錯提示 could not find java in bundled JDK at xxxx
- 解決方案1: elasticsearch 7系列版本以上都是自帶的jdk,可以在es的bin目錄下找到 elasticsearch-env.bat 這個文件,配置es的jdk。官方推薦使用es自帶的jdk。
-
warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME
-
sudo vi /etc/profile export ES_JAVA_HOME=/home/work/elasticsearch/elasticsearch-7.15.1/jdk source /etc/profile
-
- 解決方案2: 使用系統(tǒng)安裝的JDK
-
首先,確認已經(jīng)安裝了 Java??梢酝ㄟ^運行以下命令來檢查 Java 是否已經(jīng)安裝: java -version 如果 Java 尚未安裝,請使用以下命令安裝 OpenJDK: sudo yum install java-1.8.0-openjdk-devel 打開終端,并使用以下命令編輯 /etc/profile 文件: sudo vi /etc/profile 在文件的末尾添加以下行,設(shè)置 JAVA_HOME 環(huán)境變量: export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk export PATH=$PATH:$JAVA_HOME/bin # 保存并關(guān)閉文件。然后,運行以下命令使更改生效: source /etc/profile 最后,可以通過運行以下命令來驗證 JAVA_HOME 是否已正確設(shè)置: echo $JAVA_HOME
- 解決方案1: elasticsearch 7系列版本以上都是自帶的jdk,可以在es的bin目錄下找到 elasticsearch-env.bat 這個文件,配置es的jdk。官方推薦使用es自帶的jdk。
- 三個節(jié)點都啟動后,檢查搭建結(jié)果
-
[root@iZwz9iqrw0w0p7ry2a8597Z ~]# [root@iZwz9iqrw0w0p7ry2a8597Z ~]# curl -XGET 'localhost:9200/_cat/health?v&pretty' epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 1701780738 12:52:18 es-cluster-prod green 3 3 2 1 0 0 0 0 - 100.0% [root@iZwz9iqrw0w0p7ry2a8597Z ~]# curl -XGET 'localhost:9200/_cat/nodes?v&pretty' ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name 172.18.233.229 6 87 5 0.07 0.27 0.21 cdfhilmrstw - es-node02 172.18.233.230 7 86 4 0.05 0.21 0.19 cdfhilmrstw - es-node03 172.18.233.240 23 60 4 0.03 0.19 0.17 cdfhilmrstw * es-node01
-
-
阿里云內(nèi)網(wǎng)SLB配置
-
創(chuàng)建一個內(nèi)網(wǎng)SLB
-
配置SLB,指向我們部署的三個ES服務(wù)節(jié)點
-
微服務(wù)直接使用內(nèi)網(wǎng)SLB的域名來代理ES的訪問
附錄
-
日常運維注意
-
關(guān)于數(shù)據(jù)目錄的管理
-
不要修改數(shù)據(jù)目錄中的任何內(nèi)容或運行可能會干擾其內(nèi)容的進程。如果 Elasticsearch 以外的其他內(nèi)容修改了數(shù)據(jù)目錄的內(nèi)容,則 Elasticsearch 可能會失敗,報告損壞或其他數(shù)據(jù)不一致,或者可能在默默丟失部分數(shù)據(jù)后正常工作。不要嘗試對數(shù)據(jù)目錄進行文件系統(tǒng)備份;不支持還原此類備份的方法。相反,請使用快照和還原來安全地進行備份。不要在數(shù)據(jù)目錄上運行病毒掃描程序。病毒掃描程序可能會阻止 Elasticsearch 正常工作,并可能會修改數(shù)據(jù)目錄的內(nèi)容。數(shù)據(jù)目錄不包含可執(zhí)行文件,因此病毒掃描只會發(fā)現(xiàn)誤報。文章來源:http://www.zghlxwxcb.cn/news/detail-765874.html
-
-
多數(shù)據(jù)路徑在 7.13 中已被棄用,并將在未來版本中刪除。文章來源地址http://www.zghlxwxcb.cn/news/detail-765874.html
- 如果需要額外的磁盤空間,建議你添加新節(jié)點,而不是其他數(shù)據(jù)路徑。
到了這里,關(guān)于Es三節(jié)點+vip集群搭建部署方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!