我有一个 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 启动 /opt/zookeeper/conf/zoo.cfg
我怀疑这个问题可能与 systemd 服务文件中的 Type=forking 指令有关,但我不确定如何解决它。
有人以前遇到过这个问题或对如何解决它有建议吗?
该问题已获得许可,以下解决了该问题
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