如何通过systemd管理Kafka Broker?

5

我正在尝试通过systemd管理kafka代理。这是一个unit文件:

[Unit]
Description=Kafka with broker id (%i)
After=network.target
After=zk.service

[Service]
Type=simple

SyslogIdentifier=kafka (%i)
WorkingDirectory=/opt/service/kafka_2.11-0.9.0.1
LimitNOFILE=16384:163840

ExecStart=/usr/bin/bash -c 'bin/kafka-server-start.sh /opt/service/units/kafka/%i.properties'
ExecStop=/usr/bin/bash -c 'bin/kafka-server-stop.sh /opt/service/units/kafka/%i.properties'

[Install]
WantedBy=multi-user.target

有了该文件,我可以使用命令systemctl --user start kafka@0.servicesystemctl --user start kafka@1.service启动kafka。

但是当我尝试通过systemctl --user stop kafka@0.service杀死这些守护进程时,两个守护进程都会停止!那么,为什么我不能只杀死一个broker呢?


请参见 https://gist.github.com/kwilczynski/6c6645dfdc8de4cd9ed1(未经测试) - Martin Schröder
1个回答

6

类似这样的:

[Unit]
Description=Kafka with broker id (%i)
After=network.target
After=zk.service

[Service]
Type=forking

SyslogIdentifier=kafka (%i)
Restart=on-failure
LimitNOFILE=16384:163840

ExecStart=/opt/service/kafka_2.11-0.9.0.1/bin/kafka-server-start.sh -daemon /opt/service/units/kafka/%i.properties

[Install]
WantedBy=multi-user.target

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接