系統(tǒng):CentOS 6
ES版本:6.4.0
服務(wù)器三臺(tái)
172.16.0.8
172.16.0.6
172.16.0.22
部署jdk
解壓jdk放在/data目錄,/data/jdk
配置環(huán)境變量,/etc/proifle里面加入如下
export JAVA_HOME=/data/jdk
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
source /etc/profile生效,查看版本java -version
部署ES集群,三臺(tái)機(jī)器同樣的操作
1、添加普通用戶啟動(dòng)es
useradd elasticsearch
2、安裝ES
tar xf elasticsearch-6.4.0.tar.gz -C /data/
mv /data/elasticsearch-6.4.0/ /data/elasticsearch
mkdir /data/elasticsearch/startlogs
3、配置elasticsearch.yml文件內(nèi)容
cp /data/elasticsearch/config/elasticsearch.yml /data/elasticsearch/config/elasticsearch.yml.bak
cat elasticsearch.yml
cluster.name: escluster
node.name: es3
node.master: true
node.data: true
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
bootstrap.memory_lock: true
http.port: 9200
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping_timeout: 3000s
discovery.zen.ping.unicast.hosts: [“172.16.0.8:9300″,”172.16.0.6:9300″,”172.16.0.22:9300”]
bootstrap.system_call_filter: false
network.host: 0.0.0.0
4、配置文件重點(diǎn)參數(shù)解析
(1)cluster.name
集群名字,三臺(tái)集群的集群名字都必須一致
(2)node.name
節(jié)點(diǎn)名字,三臺(tái)ES節(jié)點(diǎn)字都必須不一樣
(3)node.master
該節(jié)點(diǎn)是否有資格選舉為master,默認(rèn)第一臺(tái)啟動(dòng)的為master角色,如果這臺(tái)服務(wù)器宕機(jī)會(huì)選舉新的master,三臺(tái)都可以設(shè)置為master
(4)node.data
存儲(chǔ)索引數(shù)據(jù),三臺(tái)都設(shè)為true即可
(5)bootstrap.memory_lock: true
鎖住物理內(nèi)存,不使用swap內(nèi)存,有swap內(nèi)存的可以開(kāi)啟此項(xiàng)
(6)discovery.zen.minimum_master_nodes:2
表示集群最少的master數(shù),如果集群的最少master數(shù)據(jù)少于指定的數(shù),將無(wú)法啟動(dòng)
(7)discovery.zen.ping_timeout: 3000s
自動(dòng)發(fā)現(xiàn)拼其他節(jié)點(diǎn)超時(shí)時(shí)間
(8)discovery.zen.ping.unicast.hosts: [“172.16.0.8:9300″,”172.16.0.6:9300″,”172.16.0.22:9300”]
設(shè)置集群的初始節(jié)點(diǎn)列表,集群互通端口為9300
5、jvm調(diào)優(yōu)
vim /data/elasticsearch/config/jvm.options
-Xms1g 修改為 ===> -Xms2g
-Xmx1g 修改為 ===> -Xmx2g
設(shè)置為物理內(nèi)存一半最佳,可根據(jù)服務(wù)器內(nèi)存去選擇調(diào),這里我Master設(shè)為2G
其他兩臺(tái)ES設(shè)為3G
6、設(shè)置權(quán)限
chown -R elasticsearch: /data/elasticsearch
7、操作系統(tǒng)調(diào)優(yōu)(必須配置,否則ES起不來(lái))
【1】?jī)?nèi)存優(yōu)化
在/etc/sysctl.conf添加如下內(nèi)容
fs.file-max=655360
vm.max_map_count=655360
sysctl -p生效
解釋:
(1)vm.max_map_count=655360
系統(tǒng)最大打開(kāi)文件描述符數(shù)
(2)vm.max_map_count=655360
限制一個(gè)進(jìn)程擁有虛擬內(nèi)存區(qū)域的大小
【2】修改vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
* soft memlock unlimited
* hard memlock unlimited
解釋:
(nofile)最大開(kāi)打開(kāi)文件描述符
(nproc)最大用戶進(jìn)程數(shù)
(memlock)最大鎖定內(nèi)存地址空間
【3】修改/etc/security/limits.d/90-nproc.conf
將1024修改為65536
* soft nproc 1024 修改前
* soft nproc 65536 修改后
ctrl +d從進(jìn)終端
ulimit -a查看
8、編寫(xiě)es啟動(dòng)腳本
#!/bin/bash
ROOT=/data
USER=elasticsearch
NAME=elasticsearch
DIR=${ROOT}/${NAME}
BIN=”${DIR}/bin/${NAME}”
PID=${DIR}/.${NAME}.pid
LOG=${DIR}/startlogs/${NAME}.log
start(){
ps -ef |grep ${DIR}|grep -v grep
PROC_STAT=$?
if [ ${PROC_STAT} != 0 ]
then
su – ${USER} -c “${BIN} > ${LOG} 2>&1 &”
sleep 1
PROC_PID=`ps -ef|grep ${DIR}|grep -v grep|awk ‘{print $2}’`
su – ${USER} -c “echo ${PROC_PID} > ${PID}”
else
echo “${NAME} start fail,please check it!”
fi
}
stop(){
if [ -f $PID ]
then
kill $(cat $PID)
rm -rf ${PID}
else
PROC_PID=`ps -ef |grep ${DIR}|grep -v grep|awk ‘{print $2}’`
if [ -n ${PROC_PID} ]
then
kill ${PROC_PID}
echo “${NAME} had close.”
else
echo “${NAME} maybe not run ,please check it!”
fi
fi
}
status(){
ps -ef |grep ${DIR}|grep -v grep
}
case “$1” in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
stop
sleep 5
start
;;
*)
echo “Usage: /etc/init.d/${NAME} {start|stop|restart}”
exit 1
esac
exit 0
查看啟動(dòng)
netstat -tlnp | egrep ‘9200|9300’
service elasticsearch status
9、集群驗(yàn)證
curl http://172.16.0.8:9200
curl http://172.16.0.6:9200
curl http://172.16.0.22:9200
ES主機(jī)1
ES主機(jī)2
ES主機(jī)3