系统:CentOS 6 ES版本:6.4.0 服务器三台 172.16.0.8 172.16.0.6 172.16.0.22
部署jdk 解压jdk放在/data目录,/data/jdk 配置环境变量,/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集群,三台机器同样的操作 1、添加普通用户启动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文件内容
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、配置文件重点参数解析 (1)cluster.name 集群名字,三台集群的集群名字都必须一致
(2)node.name 节点名字,三台ES节点字都必须不一样
(3)node.master 该节点是否有资格选举为master,默认第一台启动的为master角色,如果这台服务器宕机会选举新的master,三台都可以设置为master
(4)node.data 存储索引数据,三台都设为true即可
(5)bootstrap.memory_lock: true 锁住物理内存,不使用swap内存,有swap内存的可以开启此项
(6)discovery.zen.minimum_master_nodes:2 表示集群最少的master数,如果集群的最少master数据少于指定的数,将无法启动
(7)discovery.zen.ping_timeout: 3000s 自动发现拼其他节点超时时间
(8)discovery.zen.ping.unicast.hosts: ["172.16.0.8:9300","172.16.0.6:9300","172.16.0.22:9300"] 设置集群的初始节点列表,集群互通端口为9300
5、jvm调优 vim /data/elasticsearch/config/jvm.options
-Xms1g 修改为 ===> -Xms2g -Xmx1g 修改为 ===> -Xmx2g
设置为物理内存一半最佳,可根据服务器内存去选择调,这里我Master设为2G 其他两台ES设为3G
6、设置权限 chown -R elasticsearch: /data/elasticsearch
7、操作系统调优(必须配置,否则ES起不来) 【1】内存优化 在/etc/sysctl.conf添加如下内容
fs.file-max=655360 vm.max_map_count=655360
sysctl -p生效
解释: (1)vm.max_map_count=655360 系统最大打开文件描述符数
(2)vm.max_map_count=655360 限制一个进程拥有虚拟内存区域的大小
【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)最大开打开文件描述符 (nproc)最大用户进程数 (memlock)最大锁定内存地址空间
【3】修改/etc/security/limits.d/90-nproc.conf 将1024修改为65536
* soft nproc 1024 修改前 * soft nproc 65536 修改后
ctrl +d从进终端 ulimit -a查看
8、编写es启动脚本
#!/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
查看启动
netstat -tlnp | egrep '9200|9300' service elasticsearch status
9、集群验证 curl http://172.16.0.8:9200 curl http://172.16.0.6:9200 curl http://172.16.0.22:9200
ES主机1
ES主机2
ES主机3