为zookeeper增加守护进程
clickhouse 集群非常以来zookeeper集群,在实际生产环境中,会遇到zk进程异常停止的问题,为了保证zookeeper集群持续正常运行,需要为其添加守护进程
1. 创建service 文件
touch /usr/lib/systemd/system/zookeeper.service
# 在service文件中添加内容
[Unit]
Description=Zookeeper Service
After=network.target
ConditionPathExists=/usr/local/zookeeper/conf/zoo.cfg
[Service]
Type=forking
Environment=JAVA_HOME=/opt/jdk-11.0.14 注意java路径
ExecStart=/usr/local/zookeeper/zookeeper.service.run
ExecStop=/usr/local/zookeeper/zookeeper.service.stop
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
可以看到该需要用到一个 /usr/local/zookeeper/zookeeper.service.run和 /usr/local/zookeeper/zookeeper.service.stop文件,文件中的内容如下
2.创建启动停止文件
创建 zookeeper.service.run文件
touch /usr/local/zookeeper/zookeeper.service.run
写入下面的内容
#!/bin/bash
/usr/local/zookeeper/bin/zkServer.sh start
创建zookeeper.service.stop 文件
touch /usr/local/zookeeper/zookeeper.service.stop
写入下面的内容
#!/bin/bash
/usr/local/zookeeper/bin/zkServer.sh stop
添加可执行权限
chmod 754 /usr/lib/systemd/system/zookeeper.service
chmod 754 /usr/local/zookeeper/zookeeper.service.run
chmod 754 /usr/local/zookeeper/zookeeper.service.stop
使用重新加载
重新加载
systemctl daemon-reload
配置好上面的内容后,需要使用systemctl start zookeeper启动zk
,不能使用zkServer.sh start ,这样就能让zk进程持续运行
3.配置项释义
[Unit]
Description:描述,
After:在network.target,auditd.service启动后才启动
ConditionPathExists: 执行条件
[Service]
EnvironmentFile=变量所在文件
ExecStart=执行启动脚本
ExecReload=执行重启命令
ExecStop=执行停止命令
Environment=变量
User=服务运行的用户,
Group=服务运行的用户组
PIDFile=存放PID的文件路径
Restart=fail时重启
PrivateTmp=True表示给服务分配独立的临时空间
Restart=always: 只要不是通过systemctl stop来停止服务,任何情况下都必须要重启服务,默认值为no
RestartSec=5: 重启间隔,比如某次异常后,等待5(s)再进行启动,默认值0.1(s)
StartLimitInterval: 无限次重启,默认是10秒内如果重启超过5次则不再重启,设置为0表示不限次数重启
[Install]
Alias:服务别名
WangtedBy: 多用户模式下需要的