极客小桑Redis系列讲解
1.centos7 redis-sentinel哨兵模式搭建
前言
上个博客讲解了centos下redis-sentinel哨兵模式的搭建,本次来说一下如何实现redis服务开机自启动
一、创建脚本
1.在/etc/init.d
目录下创建 myredis.sh脚本
#!/bin/sh
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
#启动命令位置
EXEC=/root/redis-6.2.5/bin/redis-server
#pid文件位置,可查看conf文件确认
PIDFILE=/var/run/redis_6379.pid
#客户端命令位置
CLIEXEC=/root/redis-6.2.5/bin/redis-cli
#因为采用bindIP方式,这里要制定HOST
HOST="192.168.45.47"
REDISPORT="6379"
CONF="/root/redis-6.2.5/etc/redis.conf"
case "$1" in
start)
if [ -f $PIDFILE ]
then echo "$PIDFILE exists, process is already running or crashed"
else echo "Starting Redis server..."
#执行开启服务命令
$EXEC $CONF
fi;;
stop)
if [ ! -f $PIDFILE ]
then echo "$PIDFILE does not exist, process is not running"
else PID=$(cat $PIDFILE)
echo "Stopping ..."
#执行关闭命令
$CLIEXEC -h $HOST -p $REDISPORT shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi;;
status)
PID=$(cat $PIDFILE)
if [ ! -x /proc/${PID} ]
then echo 'Redis is not running'
else echo "Redis is running ($PID)"
fi;;
restart)
$0 stop
$0 start
;;
*) echo "Please use start, stop, restart or status as first argument";;
esac
这里采用bash脚本的case语法进行创建
2.增加可执行权限
chmod +x /etc/init.d/myredis.sh
3.测试验证
3.1测试redis服务是否存在
./myredis.sh status
3.2关闭redis服务
./myredis.sh stop
3.3启动redis服务
./myredis.sh start
二、添加开机自启动服务
为了让服务看上去更合规一点,将myredis.sh
改名成myredis
mv /etc/init.d/myredis.sh /etc/init.d/myredis
chkconfig --add myredis
注:当执行chkconfig --add myredis如果报错的话,
service myredis does not support chkconfig
脚本中需要添加:
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
三.显示服务列表
chkconfig --list
如果看到myredis的服务如上图所示2,3,4,5都是开的话则成功,默认级别是2345
如果是关,则键入命令开启
chkconfig --level 2345 myredis on
四、将脚本拷贝到另外两台节点,并相同操作
scp root@192.168.45.47:/etc/init.d/myredis /etc/init.d/myredis
#要更改myredis中的host为各自的ip
五、chkconfig相关说明
运行级别就是操作系统当前正在运行的功能级别。这个级别从0到6 ,具有不同的功能。这些级别在/etc/inittab文件里指定。这个文件是init程序寻找的主要文件,最先运行的服务是那些放在/etc/rc.d 目录下的文件。
不同的运行级定义如下:(可以参考Linux里面的/etc/inittab)
–add:增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据;
–del:删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据;
–level<等级代号>:指定读系统服务要在哪一个执行等级中开启或关毕。
等级代号列表:
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
需要说明的是,level选项可以指定要查看的运行级而不一定是当前运行级。对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。