5分鐘學會快速搭建Elasticsearch集群

掌握Elasticsearch是架構師成長之路上非常重要的一步,那麼首先需要做的就是能夠動手搭建一個Elasticsearch集群。在本文中,筆者會以Elasticsearch7.3.0版本為例,講述如何搭建Elasticsearch集群。

主要內容分為4部分:

  1. 準備安裝包
  2. 配置項修改
  3. 新加啟停腳本
  4. kibana監控Elasticsearch集群狀態
5分鐘學會快速搭建Elasticsearch集群

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

下載完成後解壓文件,得到目錄結構如下

5分鐘學會快速搭建Elasticsearch集群

Elasticsearch解壓目錄

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
5分鐘學會快速搭建Elasticsearch集群

java環境

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 &

5分鐘學會快速搭建Elasticsearch集群

kibana監控es集群狀態

歡迎關注筆者,每天分享架構乾貨。


分享到:


相關文章: