Zookeeper服务无法使用“Type=forking”使用systemd启动,而是手动运行

px9o7tmv  于 2023-09-28  发布在  Apache
关注(0)|答案(1)|浏览(171)

我有一个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指令有关,但我不确定如何解决它。
有没有人遇到过这个问题,或者有关于如何解决它的建议?

jv4diomz

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

相关问题