1.所需中间件
需要用到的中间件有zookeeper、kafka、kafka-manager、redis等,因为kafka依赖zookeeper,所以在做服务开机启动优先级时kafka的优先级要低于zookeeper。
先解释一下,后面的脚本中都会有 #chkconfig:2345 10 90 这样一串字符。
其中2345是默认启动级别,级别有0-6共7个级别。
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
10是启动优先级,90是停止优先级,优先级范围是0-100,数字越大,优先级越低。
2.zookeeper开机自启
-
第一步,需要进入到/etc/rc.d/init.d目录下,新建一个zookeeper脚本
[root@zookeeper ~]# cd /etc/rc.d/init.d/ [root@zookeeper init.d]# pwd /etc/rc.d/init.d [root@zookeeper init.d]# touch zookeeper
-
第二步,为zookeeper脚本添加执行权限
[root@zookeeper init.d]# chmod +x zookeeper
-
第三步,使用vi zookeeper 编辑该脚本,向文件中写入如下内容:
[root@zookeeper init.d]# vi zookeeper
#!/bin/bash #chkconfig:2345 10 90 #description:service zookeeper export JAVA_HOME=/home/gwi/tools/jdk/jdk1.8.0_171 export ZOO_LOG_DIR=/data/zookeeper/logs ZOOKEEPER_HOME=/home/gwi/tools/zookeeper/zookeeper-3.4.14 case "$1" in start) su root ${ZOOKEEPER_HOME}/bin/zkServer.sh start;; start-foreground) su root ${ZOOKEEPER_HOME}/bin/zkServer.sh start-foreground;; stop) su root ${ZOOKEEPER_HOME}/bin/zkServer.sh stop;; status) su root ${ZOOKEEPER_HOME}/bin/zkServer.sh status;; restart) su root ${ZOOKEEPER_HOME}/bin/zkServer.sh restart;; upgrade)su root ${ZOOKEEPER_HOME}/bin/zkServer.sh upgrade;; print-cmd)su root ${ZOOKEEPER_HOME}/bin/zkServer.sh print-cmd;; *) echo "requirestart|start-foreground|stop|status|restart|print-cmd";; esac
- 需要注意的是,这里一定要指定 “JAVA_HOME” 为java的安装目录,“ZOOKEEPER_HOME” 为zookeeper的安装目录。
- ZOO_LOG_DIR 为zookeeper的日志目录,建议在脚本中添加该行命令,以便在zookeeper服务启动失败时查看原因。如果没有手动创建它的目录也会自动生成。
-
使用 service zookeeper start/stop命令来尝试启动或关闭zookeeper,使用 service zookeeper status来查看zookeeper运行状态。
-
查看状态是否已启动
[root@zookeeper init.d]# service zookeeper status JMX enabled by default Using config: /home/gwi/tools/zookeeper/zookeeper-3.4.14/bin/../conf/zoo.cfg Mode: standalone [root@zookeeper init.d]#
-
可以看到zookeeper已经启动,再来测试一下是否可以正常关闭和启动
[root@zookeeper init.d]# service zookeeper stop JMX enabled by default Using config: /home/gwi/tools/zookeeper/zookeeper-3.4.10/bin/../conf/zoo.cfg Stopping zookeeper ... STOPPED [root@zookeeper init.d]# service zookeeper status JMX enabled by default Using config: /home/gwi/tools/zookeeper/zookeeper-3.4.10/bin/../conf/zoo.cfg Error contacting service. It is probably not running. [root@zookeeper init.d]# service zookeeper start JMX enabled by default Using config: /home/gwi/tools/zookeeper/zookeeper-3.4.14/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
-
可以看到启动和关闭都没问题,说明该脚本文件能够正常使用。接下来,完成最后一步,把该zookeeper服务添加到开机自启服务中。
[root@zookeeper init.d]# chkconfig --add zookeeper
-
添加完之后,我们查看一下自启动服务列表中有没有zookeeper服务。命令如下。
[root@zookeeper init.d]# chkconfig --list auditd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 blk-availability 0:关闭 1:启用 2:启用 3:启用 4:启用 5:启用 6:关闭 crond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 ip6tables 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 zookeeper 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
-
可以看到在开机自启服务列表中最后一行有zookeeper了,说明开机自启创建成功了。
-
接下来,如果需要测试,可以用 reboot 命令重启服务器,然后查看 zookeeper 是否已经成功启动。命令如下:
[root@home]# ps -ef | grep zookeeper
-
如果看到如下图所示的样子,说明自启动成功了!
-
3.kafka开机自启
-
第一步,需要进入到/etc/rc.d/init.d目录下,新建一个kafka脚本
[root@kafka ~]# cd /etc/rc.d/init.d/ [root@kafka init.d]# pwd /etc/rc.d/init.d [root@kafka init.d]# touch kafka
-
第二步,为kafka脚本添加执行权限
[root@kafka init.d]# chmod +x kafka
-
第三步,使用vi kafka编辑该脚本,向文件中写入如下内容:
[root@kafka init.d]# vi kafka
#!/bin/bash #chkconfig:2345 30 80 #description:kafka #processname:kafka export KAFKA_LOG=/data/kafka/logs export PATH=/home/gwi/tools/jdk/jdk1.8.0_171/bin:$PATH case $1 in start) /home/gwi/tools/kafka/kafka_2.11-2.1.1/bin/kafka-server-start.sh -daemon /home/gwi/tools/kafka/kafka_2.11-2.1.1/config/server.properties;; stop) /home/gwi/tools/kafka/kafka_2.11-2.1.1/bin/kafka-server-stop.sh;; status) jps;; restart) /home/gwi/tools/kafka/kafka_2.11-2.1.1/bin/kafka-server-stop.sh /home/gwi/tools/kafka/kafka_2.11-2.1.1/bin/kafka-server-start.sh -daemon /home/gwi/tools/kafka/kafka_2.11-2.1.1/config/server.properties;; *) echo "require start|stop|status|restart";; esac
-
第四步,使用service kafka start/stop命令来尝试启动关闭kafka,使用service kafka status查看kafka状态。效果同zookeeper,同时,查看kafka停止命令是否执行还应该在service kafka stop执行后,再执行 ps -ef | grep kafka来查看kafka的状态。如果停止成功,那么只能看到一行有关kafka的信息。这里不再详细演示。
-
第五步,启动和关闭都没问题,说明该脚本文件能够正常使用。接下来,完成最后一步,把该zookeeper服务添加到开机自启服务中。
[root@kafka init.d]# chkconfig --add kafka
-
添加完之后,我们查看一下自启动服务列表中有没有kafka服务。命令及详情如下。
[root@kafka init.d]# chkconfig --list auditd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 blk-availability 0:关闭 1:启用 2:启用 3:启用 4:启用 5:启用 6:关闭 crond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 ip6tables 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 kafka 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 zookeeper 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
-
可以看到在开机自启服务列表中有kafka了,说明开机自启也创建成功了。
-
接下来,如果需要测试,可以用 reboot 命令重启服务器,然后查看 kafka是否已经成功启动。命令如下:
[root@home]# ps -ef | grep kafka
-
如果看到如下图所示的样子,说明kafka自启动也成功了!
4.kafka-manage开机自启
-
第一步,需要进入到/etc/rc.d/init.d目录下,新建一个kafka-manage脚本
[root@kafka-manage ~]# cd /etc/rc.d/init.d/ [root@kafka-manage init.d]# pwd /etc/rc.d/init.d [root@kafka-manage init.d]# touch kafka-manage
-
第二步,为kafka-manage脚本添加执行权限
[root@kafka-manage init.d]# chmod +x kafka-manage
-
第三步,使用vi kafka-manage编辑该脚本,向文件中写入如下内容:
#!/bin/bash #chkconfig:2345 31 88 #description:kafka-manage #processname:kafka-manage export KAFKA_MANAGER_LOG=/data/kafka-manager/logs export PATH=/home/gwi/tools/jdk/jdk1.8.0_171/bin:$PATH case $1 in start) nohup /home/gwi/tools/kafka-manager/kafka-manager-2.0.0.2/bin/kafka-manager -Dconfig.file=/home/gwi/tools/kafka-manager/kafka-manager-2.0.0.2/conf/application.conf -Dhttp.port=9001 >/dev/null 2>&1 &;; status) jps;; *) echo "require start|status";; esac
-
第四步,还是用 service status/stop/start kafka-manage 命令查看kafka-manage脚本是否能够正常运行。方法与上者一致,不再赘述。
-
第五步,记得添加到开机自启服务列表。命令如下:
[root@kafka-manage init.d]# chkconfig --add kafka-manage
-
第六步,用 chkconfig --list 来查看开机自启动服务列表中是否有 kafka-manage 服务。如果有,然后可以用reboot重启服务器,并用 ps -ef | grep kafka-manage 来测试kafka-manage是否为启动状态。此处的结果与上两个服务的结果几乎一致。如下图。
5.redis开机自启
需要注意到是,redis服务需要gcc环境的支持,所以gcc一定要在redis安装之前安装到位。
-
第一步,需要进入到/etc/rc.d/init.d目录下,新建一个redis脚本
[root@redis ~]# cd /etc/rc.d/init.d/ [root@redis init.d]# pwd /etc/rc.d/init.d [root@redis init.d]# touch redis
-
第二步,为redis脚本添加执行权限
[root@redis init.d]# chmod +x redis
-
第三步,使用vi redis编辑该脚本,向文件中写入如下内容:
#!/bin/bash # chkconfig: 2345 90 10 # description: Redis is a persistent key-value database PATH=/usr/local/bin:/sbin:/usr/bin:/bin # 下面是redis的端口,必须要添加 REDISPORT=6379 EXEC=/home/gwi/tools/redis/redis-4.0.14/src/redis-server REDIS_CLI=/home/gwi/tools/redis/redis-4.0.14/src/redis-cli PIDFILE=/var/run/redis_6379.pid CONF="/home/gwi/tools/redis/redis-4.0.14/redis.conf" # AUTH="1234" 这句没什么用可以不要 export REDIS_LOG=/data/redis/logs 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 if [ "$?"="0" ] then echo "Redis is running..." fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE exists, process is not running." else PID=$(cat $PIDFILE) echo "Stopping..." $REDIS_CLI -a gwi123 -p $REDISPORT SHUTDOWN 2>/dev/null sleep 2 while [ -x $PIDFILE ] do echo "Waiting for Redis to shutdown..." sleep 1 done echo "Redis stopped" fi ;; restart|force-reload) ${0} stop ${0} start ;; *) echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2 exit 1 esac
-
第四步,还是用 service status/stop/start redis 命令查看 redis 脚本 是否能够正常运行。方法与上面一致,同样不再赘述。
-
第五步,记得添加到开机自启服务列表。命令如下:
[root@redis init.d]# chkconfig --add redis
-
第六步,用 chkconfig --list 来查看开机自启动服务列表中是否有 redis 服务。如果有,然后可以用reboot重启服务器,并用 ps -ef | grep redis 来测试 redis 是否为启动状态。如果状态显示如下图(有两行),说明redis是已启动的状态。如果最后面的那一行,说明redis未能成功启动,应该到/data/redis/logs处查看redis的日志分析错误原因并做相应的处理。
这样,centos 7下的中间件服务的开机自启就创建完成了。