掌握Elasticsearch是架構師成長之路上非常重要的一步,那麼首先需要做的就是能夠動手搭建一個Elasticsearch集群。在本文中,筆者會以Elasticsearch7.3.0版本為例,講述如何搭建Elasticsearch集群。
主要內容分為4部分:
- 準備安裝包
- 配置項修改
- 新加啟停腳本
- kibana監控Elasticsearch集群狀態
1 準備安裝包
1.1 下載Elasticsearch安裝包
第一種方式是從elastic官網下載
https://www.elastic.co/cn/downloads/elasticsearch
第二種方式則是直接從github下載release包
https://github.com/elastic/elasticsearch/releases/tag/v7.3.0
下載完成後解壓文件,得到目錄結構如下
1.2 下載ik分詞器
從github下載對應es版本的ik分詞器
https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.3.0
將ik分詞器直接放到Elasticsearch解壓目錄下的plugins下即可。配置詳情可以參考
https://github.com/medcl/elasticsearch-analysis-ik
1.3 下載kibana安裝包
同樣,從github下載對應es版本的release包即可
https://github.com/elastic/kibana/releases/tag/v7.3.0
2 配置項修改
2.1 配置java環境
Es7.3.0版本需要依賴jdk1.8及以上,es本身內置了jdk1.10。在啟動es之前,使用如下命令確認一下java的版本
java -version
2.2 修改linux系統配置
修改/etc/security/limits.conf,添加如下配置,防止出現open files too many的問題。
* soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096 work soft memlock unlimited work hard memlock unlimited
修改
/etc/security/limits.d/90-nproc.conf
* soft nproc 2048
vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
並執行命令: sysctl -p
2.3 為Es的數據目錄掛載單獨的磁盤
一方面好做數據遷移,另一方面,如果一個磁盤掛了,只會丟失一小部分數據,不會導致整個服務不可用,重新掛一塊磁盤就可以。筆者設定了三個磁盤目錄,可以在es的config中進行配置。
2.4 修改es的config配置
vim elasticsearch.yml
cluster.name: Es-cluster node.name: ${HOSTNAME} path.data:/home/elasticsearch/data1,/home/elasticsearch/data2,/home/elasticsearch/data3 bootstrap.memory_lock: true discovery.seed_hosts: ["host1", "host2","host3"]
3 添加啟停腳本
es的啟動直接使用bin/elasticsearch -d就可以了。不過,在生產環境進行運維,會使用定製化的啟停腳本。筆者貢獻一下自己寫的一份啟動腳本文件,start.sh:
#!/bin/bash set -e ELASTICSEARCH_DIR=$(dirname $(readlink -f $0))/.. pushd ${ELASTICSEARCH_DIR} mkdir -p logs mkdir -p run nohup bin/elasticsearch -d -p run/elasticsearch.pid & popd
以及進程關閉腳本stop.sh
#!/bin/bash ps ux | grep elasticsearch | grep -v grep | grep -v stop.sh | cut -c 9-15 | xargs kill i=0 while true do ps ux | grep elasticsearch | grep -v grep | grep -v stop.sh if [ $? -ne 0 ]; then break fi sleep 5s let i=i+1 if [ $i -gt 100 ]; then ps ux | grep elasticsearch | grep -v grep | grep -v stop.sh | cut -c 9-15 | xargs kill -9 break fi done echo "kill done"
4 kibana監控Elasticsearch集群狀態
在Elasticsearch集群啟動完之後,可以部署一份kibana實例,監控es的集群狀態。正常情況下,在前文的3個步驟修改啟動之後,幾個es節點是可以自動形成一個集群的。
解壓kiban的壓縮包後,修改kibana的配置,直連到一個es節點上:
elasticsearch.url: "https://host1:9920"
啟動kibana:nohup bin/kibana &
歡迎關注筆者,每天分享架構乾貨。