CentOS 7 systemd要求卡夫卡的值和之后值取决于当地动物园管理员?

CentOS 7 systemd要求卡夫卡的值和之后值取决于当地动物园管理员?,centos,apache-kafka,systemd,Centos,Apache Kafka,Systemd,我有5个带有CentOS 7的虚拟机,每个虚拟机都运行着卡夫卡及其嵌入式zookeeper 在我的systemd unit文件中,我尝试使用zookeeper.service作为kafka.service的Requires依赖项,但它似乎不起作用,文档也没有明确说明是否仅.target文件是Requires的有效值(我认为也是After/Before),或者.service文件本身也是允许的 我是否需要使用zookeeper.target作为目标 另外,我是否应该使用“需要”而不是“需要”,以防

我有5个带有CentOS 7的虚拟机,每个虚拟机都运行着卡夫卡及其嵌入式zookeeper

在我的systemd unit文件中,我尝试使用zookeeper.service作为kafka.service的Requires依赖项,但它似乎不起作用,文档也没有明确说明是否仅.target文件是Requires的有效值(我认为也是After/Before),或者.service文件本身也是允许的

我是否需要使用zookeeper.target作为目标

另外,我是否应该使用“需要”而不是“需要”,以防卡夫卡可以很好地开始,但当地的动物园管理员不能?这样的话,我假设卡夫卡会和其他的一个动物园管理员联系,因为它知道所有的5个,而当地的动物园管理员可以修复,然后开始重新加入这个团队。但动物园管理员至少会尝试在卡夫卡的任何时候开始

以下是我的.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 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,但它们只是显示为兄弟:

# systemctl --all list-dependencies | egrep '(kafka|zookeeper)'
● ├─kafka.service
● ├─zookeeper.service

.target或.service文件都可以是依赖项(.target优先作为分组单元,而不是leaf的.service文件)。在需要、想要、之后的情况下,两者都可以正常工作,例如:

Requires=network.target remote-fs.target zookeeper.service
After=network.target remote-fs.target zookeeper.service
我仍然不知道为什么它不显示zookeeper作为卡夫卡的依赖项,但当我这样做时,它的行为就像这样:

sudo systemctl start kafka