我有一个Zookeeper服务,我试图用systemd管理。服务定义如下:
[Unit]
Description=Zookeeper Daemon
Documentation=http://zookeeper.apache.org
Requires=network.target
After=network.target
[Service]
Type=forking
WorkingDirectory=/opt/zookeeper
User=zookeeper
Group=zookeeper
ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper /conf/zoo.cfg
ExecStop=/opt/zookeeper/bin/zkServer.sh stop /opt/zookeeper/conf/zoo.cfg
ExecReload=/opt/zookeeper/bin/zkServer.sh restart /opt/zookeeper /conf/zoo.cfg
TimeoutSec=30
Restart=on-failure
[Install]
WantedBy=default.target
当我尝试使用systemctl启动服务时,我得到以下错误:zookeeper.service: Main process exited, code=exited, status=3/NOTIMPLEMENTED zookeeper.service: Failed with result 'exit-code'.
然而,当我手动运行zkServer.sh脚本时,Zookeeper启动时没有任何问题:/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg
我怀疑这个问题可能与systemd服务文件中的Type=forking指令有关,但我不确定如何解决它。
有没有人遇到过这个问题,或者有关于如何解决它的建议?
1条答案
按热度按时间jv4diomz1#
该问题是权限问题,以下内容解决了该问题
sudo chown zk:zk /data/zookeeper sudo chown -R zk:zk /data/zookeeper/version-2
sudo chown zk:zk /opt/zookeeper/logs/
sudo chown zk:zk /opt/zookeeper