前言
国庆放假后回公司,发现ES服务竟然挂了,导致出现服务不可用的问题。幸好是公司内部的自用服务,没造成什么不良影响。最后经过调查发现,是国庆期间公司整栋楼断电维护,导致所有服务器都重启了,而服务器上的ES服务并没有配置开机自启动。
翻看ES官网发现并没有对ES开机自启动做介绍,所以写篇文章补充一下。
这里演示采用chkconfig方式配置开机自启动。其他配置方式可以查看Centos中配置开机自启动的方式汇总
一、先查看当前的开机启动服务
chkconfig --list
chkconfig没有配置elasticsearch服务。
二、在/etc/init.d目录下创建启动文件
cd /etc/init.d vi elasticsearch
脚本内容如下:
#!/bin/bash #chkconfig: 2345 63 37 #description: elasticsearch #processname: elasticsearch-6.2.4 export ES_HOME=/usr/local/elasticsearch-6.2.4 case $1 in start) su esuser<<! cd $ES_HOME ./bin/elasticsearch -d -p pid exit ! echo "elasticsearch is started" ;; stop) ##也可以根据ps命令获取elasticsearch进程的pid ##es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'` ##kill -9 $es_pid pid=`cat $ES_HOME/pid` kill -9 $pid echo "elasticsearch is stopped" ;; restart) pid=`cat $ES_HOME/pid` kill -9 $pid echo "elasticsearch is stopped" sleep 1 su esuser<<! cd $ES_HOME ./bin/elasticsearch -d -p pid exit ! echo "elasticsearch is started" ;; *) echo "start|stop|restart" ;; esac exit 0
注意⚠️:
1、脚本中自动完成了用户的切换,在esuser用户下启动elasticsearch
2、采用./bin/elasticsearch -d -p pid命令启动,会在目录下生成pid文件,服务stop时可以直接读取pid文件获取pid。
说明:
每个被chkconfig管理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释。
第一行告诉chkconfig缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用 - 代替运行级。
第二行对服务进行描述,可以用\ 跨行注释。
#chkconfig: 2345 63 37指的是指定kibana服务在2、3、4、5的level等级下脚本执行顺序是63,1、6的level等级下脚本执行顺序是37。
三、增加脚本的可执行权限
chmod +x elasticsearch
四、把elasticsearch服务添加到chkconfig列表
chkconfig --add elasticsearch
五、设置elasticsearch服务自启动
chkconfig elasticsearch on //开启开机自动启动
六、查看elasticsearch服务自启动状态
chkconfig --list elasticsearch
如果2~5都是on,就表明会自动启动了
七、服务的启动、停止、重启
//服务启动 service elasticsearch start //服务停止 service elasticsearch stop //服务重启 service elasticsearch restart
总结
本文主要介绍了采用chkconfig方式配置elasticsearch服务,实现elasticsearch服务的启动、停止、重启和开机启动等功能。