ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ElasticSearch学习(八)—— 设置开机自启动

2021-03-09 16:04:10  阅读:309  来源: 互联网

标签:supervisor -- pid echo 开机 ElasticSearch conf 自启动 elasticsearch


ElasticSearch开机自动启动与访问控制配置

 

使用supervisor配置ES启动

supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。

supervisor安装

sudo apt-get install supervisor

 

supervisor配置

安装成功后,访问/etc/supervisor/ 目录下找到 supervisord.conf 配置文件并写入如下内容,

[unix_http_server]
file=/var/run/supervisor.sock  
chmod=0700                     

[supervisord]
logfile=/var/log/supervisor/supervisord.log 
pidfile=/var/run/supervisord.pid
childlogdir=/var/log/supervisor
minfds=65536 ; 可以打开的文件描述符的最小值,默认 1024
minprocs=1024 ; 可以打开的进程数的最小值,默认 200

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock 

[include]
files = /etc/supervisor/conf.d/*.conf

这里需要注意的是需要[supervisord]增加两个参数minfds(最小文件数)和minprocs(最小进程数)。分别设置成65536和1024。如果不设置文件数的ES启动日志会有这个提示。

[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]

 

$ supervisorctl status
$ supervisorctl stop elasticsearch
$ supervisorctl start elasticsearch
$ supervisorctl restart elasticsearch
$ supervisorctl reread
$ supervisorctl update

ES自动启动配置文件

在/etc/supervisor/conf.d目录新建配置文件elasticsearch.conf,增加如下配置。es和java的路径设置成你的。user设置成你的用户,注意es不能使用root启动

[program:elasticsearch] 
command=/bin/bash /usr/local/share/elasticsearch-6.1.1/bin/elasticsearch
directory=/usr/local/share/elasticsearch-6.1.1/bin/
autorestart=true
autostart=true
stderr_logfile=/var/log/supervisor/elasticsearch_err.log
stdout_logfile=/var/log/supervisor/elasticsearch_out.log
environment=JAVA_HOME=/usr/local/java/jdk1.8.0_241
user=es
password=espassword
stopsignal=INT
startsecs=10

使用sysv-rc-conf配置开机自动启动

安装sysv-rc-conf

sudo apt-get install sysv-rc-conf

如果安装sysv-rc-conf时,报了如下的错:
E: Unable to locate package sysv-rc-conf(无法定位sysv-rc-conf包)

sudo vim /etc/apt/sources.list

增加下面这个源,更新源后再次安装就可以了

deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse

配置supervisor开机启动

#! /bin/sh


. /lib/lsb/init-functions

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/supervisord
NAME=supervisord
DESC=supervisor

test -x $DAEMON || exit 0

RETRY=TERM/30/KILL/5
LOGDIR=/var/log/supervisor
PIDFILE=/var/run/$NAME.pid
DODTIME=5

if [ -f /etc/default/supervisor ] ; then
	. /etc/default/supervisor
fi
DAEMON_OPTS="-c /etc/supervisor/supervisord.conf $DAEMON_OPTS"

set -e

running_pid()
{
    # Check if a given process pid's cmdline matches a given name
    pid=$1
    name=$2
    [ -z "$pid" ] && return 1
    [ ! -d /proc/$pid ] &&  return 1
    (cat /proc/$pid/cmdline | tr "\000" "\n"|grep -q $name) || return 1
    return 0
}

running()
{
    # No pidfile, probably no daemon present
    [ ! -f "$PIDFILE" ] && return 1
    # Obtain the pid and check it against the binary name
    pid=`cat $PIDFILE`
    running_pid $pid $DAEMON || return 1
    return 0
}

case "$1" in
  start)
	echo -n "Starting $DESC: "
	start-stop-daemon --start --quiet --pidfile $PIDFILE \
		--startas $DAEMON -- $DAEMON_OPTS
	test -f $PIDFILE || sleep 1
        if running ; then
            echo "$NAME."
        else
            echo " ERROR."
        fi
	;;
  stop)
	echo -n "Stopping $DESC: "
	start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
	echo "$NAME."
	;;
  force-reload)

	start-stop-daemon --stop --test --quiet --pidfile $PIDFILE \
        --startas $DAEMON \
	&& $0 restart \
	|| exit 0
	;;
  restart)
    echo -n "Restarting $DESC: "
    start-stop-daemon --stop --retry=$RETRY --quiet --oknodo --pidfile $PIDFILE
	echo "$NAME."
	;;
  status)
    echo -n "$NAME is "
    if running ;  then
        echo "running"
    else
        echo " not running."
        exit 1
    fi
    ;;
  *)
	N=/etc/init.d/$NAME
	# echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
	echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
	exit 1
	;;
esac
exit 0

使用sysv-rc-conf配置supervisor启动

sudo sysv-rc-conf

出现开机启动配置页面,可以用空格或鼠标进行选中,将supervisor设置成启动(选中2,3,4,5)。
在这里插入图片描述
数字的含义:

  • 0:停机
  • 1:单用户,无网络连接,不能启动守护进程,不允许非root用户登录
  • 2:多用户,无网络连接,不能启动守护进程
  • 3:多用户,启动网络连接
  • 4:用户自定义
  • 5:多用户,带图形化界面
  • 6:重启

至此,elasticsearch开机自动启动配置完毕。

elasticsearch访问控制配置

因为涉及到了ES服务的安全性,如果未授权访问的ES,很容易被其他人恶意操作。ES登录账号和密码的设置是通过x-pack来实现的,官方只给了免费的30天的使用权,当然特可以查找x-pack的破解方法。这里介绍使用一种简单的方法,使用iptables做访问控制,只允许指定主机访问各个节点的ES服务。
在/etc/init.d/文件目录新建es-acl

vim es-acl

 

增加你需要的访问控制iptables规则

#!/bin/sh
sudo iptables -I INPUT -p tcp --dport 9200 -j DROP#限制所有人访问本机9200端口
sudo iptables -I INPUT -s 192.168.19.1 -p tcp --dport 9200 -j ACCEPT#允许指定IP访问
sudo iptables -I INPUT -s 192.168.8.0/24 -p tcp --dport 9200 -j ACCEPT#允许指定网段访问

增加文件的可执行权限后,使用sysv-rc-conf配置到开机自动启动

sudo chmod a+x es-acl

重启节点之后,ES会自动启动,并且做了访问控制,如果ES启动失败,可以查看日志文件/var/log/supervisor/elasticsearch_out.log

参考

https://www.jianshu.com/p/03619bf7d7f5
https://www.cnblogs.com/sundahua/p/9149692.html

标签:supervisor,--,pid,echo,开机,ElasticSearch,conf,自启动,elasticsearch
来源: https://blog.csdn.net/yilia_jia/article/details/114086671

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有