CentOS 7 systemd要求和Kafka的值取决于当地的Zookeeper吗?

时间:2017-07-20 18:32:17

标签: centos apache-kafka systemd

我有5个使用CentOS 7的虚拟机,每个虚拟机都运行kafka及其嵌入式zookeeper。

在我的systemd单元文件中,我尝试使用zookeeper.service作为kafka.service的Requires依赖,但它似乎不起作用,并且文档没有明确说明是否只有.target文件是Requires的有效值(我也假设After / Before)或.service文件本身也是允许的。

我是否必须使用zookeeper.target for Requires?

另外,我应该使用Wants而不是Requires,以防Kafka可以开始正常,但当地的Zookeeper不能吗?这样,我认为Kafka将连接到其他一个动物园管理员,因为它知道所有5个动物园管理员,而当地的动物园管理员可以修复并开始重新加入整个团体。但是,动物园管理员至少会尝试随时启动卡夫卡。

以下是我的.service文件:

kafka.service

# 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.service

# 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

1 个答案:

答案 0 :(得分:0)

.target或.service文件可以是依赖项(.target首选作为分组单元而不是叶子的.service文件)。要么在Requires,Wants,After中正常工作,例如:

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

我仍然不知道为什么它没有将zookeeper显示为kafka的依赖,但它确实像我一样:

sudo systemctl start kafka