centos 7 systemd要求kafka依赖于本地Zookeeper的和之后的值?

c2e8gylq  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(330)

我有5个带有centos7的vm,每个vm都运行kafka和它的嵌入式zookeeper。
在我的systemd unit文件中,我尝试使用zookeeper.service作为kafka.service的requires依赖项,但它似乎不起作用,而且文档没有明确说明是否只.target文件是requires的有效值(我也假设after/before),或者.service文件本身也是允许的。
我是否必须使用zookeeper.target作为目标?
另外,我是否应该使用“想要”而不是“需要”,以防Kafka可以很好地开始,但当地的Zookeeper不能?这样的话,我假设Kafka会和另外一个Zookeeper联系,因为它知道所有的5个管理员,而当地的Zookeeper可能会被修复,然后开始重新加入团队。但Zookeeper至少会尝试在Kafka的任何时候开始。
以下是我的.service文件:
Kafka服务


# Kafka server (broker) management

[Unit]
Description=Apache Kafka server (broker)
Documentation=http://kafka.apache.org/documentation.html
Requires=network.target remote-fs.target zookeeper.service
After=network.target remote-fs.target zookeeper.service

[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Zookeeper服务


# Zookeeper server management (Kafka-embedded)

[Unit]
Description=Apache Zookeeper server (Kafka-embedded)
Documentation=http://zookeeper.apache.org
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties
ExecStop=/usr/local/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

编辑:我希望看到一个依赖层次结构显示zookeeper缩进在kafka下面,但它们只是显示为同级:


# systemctl --all list-dependencies | egrep '(kafka|zookeeper)'

● ├─kafka.service
● ├─zookeeper.service
dwthyt8l

dwthyt8l1#

.target或.service文件都可以是依赖项(.target优先作为分组单元,而不是.service文件作为leaf)。无论是在需要、想要、之后,都可以很好地工作,例如:

Requires=network.target remote-fs.target zookeeper.service
After=network.target remote-fs.target zookeeper.service

我仍然不知道为什么它没有显示zookeeper作为Kafka的依赖项,但是当我这样做时,它的行为确实是这样的:

sudo systemctl start kafka

相关问题