在systemd(CentOS7)自启动zookeeper

zookeeper的自启动脚本,如果是 sysV 模式(CeontOS6或以下版本),可以直接使用下载版本中的 src 目录下对应的 sysV 自启动包,再chkconfig即可。老方法,简单,就不说了。
基于systemd的脚本搜了很多地方,都没有找到,就自己参考别人的写了一个。
参考1:https://github.com/felixonmars/aur-mirror/blob/fa864c9b4d1bf535e06c63169fb3bb0890a9cf7f/zookeeper/systemd_zookeeper.service
参考2:http://0pointer.de/public/systemd-man/

修正后的版本:使用了一个变量 ZHOME:

[root@master system]# vim /etc/systemd/system/zookeeper.service

[Unit]
Description=Zookeeper service
After=network.target

[Service]
User=hadoop
Group=hadoop
SyslogIdentifier=hadoop
Environment=ZHOME=%h/zookeeper/zookeeper-3.4.6
ExecStart=/usr/bin/java 
  -Dzookeeper.log.dir=${ZHOME}/logs/zookeeper.log 
  -Dzookeeper.root.logger=INFO,ROLLINGFILE 
  -cp ${ZHOME}/zookeeper-3.4.6.jar:${ZHOME}/lib/* 
  -Dlog4j.configuration=file:${ZHOME}/conf/log4j.properties 
  -Dcom.sun.management.jmxremote 
  -Dcom.sun.management.jmxremote.local.only=false 
  org.apache.zookeeper.server.quorum.QuorumPeerMain 
  ${ZHOME}/conf/zoo.cfg

[Install]
WantedBy=multi-user.target
使用:
重新加载配置信息:systemctl daemon-reload
启动zookeeper:systemctl start zookeeper.service
关掉zookeeper:systemctl stop zookeeper.service
查看进程状态及日志(重要):systemctl status zookeeper.service
开机自启动:systemctl enable zookeeper.service
关闭自启动:systemctl disable zookeeper.service

说明:

如果是要用到您自己的环境,请自己修改对应的地方:
User=hadoop           #Linux中启动zookeeper的用户名
Group=hadoop         #Linux中启动zookeeper的组名
SyslogIdentifier=hadoop  
Environment=ZHOME=%h/zookeeper/zookeeper-3.4.6    #zookeeper 的存放目录
-cp ${ZHOME}/zookeeper-3.4.6.jar:${ZHOME}/lib/*    #主jar文件,也可以将zookeeper-3.4.6.jar复制到 lib目录,那么这行就只写成 -cp ${ZHOME}/lib/* 即可。
%h表示User的Home目录。这里就代表 /home/hadoop

注:最新的文件,会放在 http://git.oschina.net/fkkeee/systemd_startup/ 中进行更新。github暂不更新。


本文链接: http://www.logme.cn/blog/30/zookeeper_start_in_systemd/

原文地址:https://www.cnblogs.com/duyinqiang/p/5696331.html