【发布时间】:2017-12-26 14:53:40
【问题描述】:
我有 5 台使用 CentOS 7 的 VM,每台都运行 kafka 及其嵌入式 Zookeeper。
在我的 systemd 单元文件中,我尝试使用 zookeeper.service 作为 kafka.service 的 Requires 依赖项,但它似乎不起作用,并且文档没有明确说明是否只有 .target 文件是 Requires 的有效值(我认为 After/Before 也是如此),或者 .service 文件本身也是允许的。
我必须为 Requires 使用 zookeeper.target 吗?
另外,我应该使用 Wants 而不是 Requires,以防 Kafka 可以正常启动但本地 Zookeeper 不能?这样,我假设 Kafka 将连接到其他 Zookeeper 之一,因为它知道所有 5 个,而本地 Zookeeper 可以修复并稍后开始重新加入集合。但是 zookeeper 至少会尝试在 kafka 的任何时候启动。
这是我的 .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 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
【问题讨论】:
标签: centos apache-kafka systemd