如何在 kafka.service 中为 Kafka 中的多个代理 运行 多个 ExecStart?

How to run multiple ExecStart in kafka.service for Multiple brokers in Kafka?

我想运行在一项服务中使用多个 ExecStart。

我是这样配置的,

[Unit]
Description=Apache Kafka Server
Documentation=http://kafka.apache.org/documentation.html
Requires=zookeeper.service

[Service]
Type=oneshot
Environment="JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64"
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server-1.properties
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server-2.properties
ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh

[Install]
WantedBy=multi-user.target

但是,当我运行时,它首先执行ExecStart。它不执行接下来的两个 ExecStart。

如何实现?

你不能。您可以使用多个相互依赖的 systemd 脚本,或者将所有三个脚本包含在一个命令中(例如,docker-compose -f kafka-cluster.yaml up

FWIW,这绝不是容错的,或者真的不是一个好主意,除非你有至少 18G 内存(每个 6G RAM)并且该机器上至少有 3 个可用机械 HDD(三个或更多) log.dirs) 的 JBOD 池和至少 3 个独立的 CPU。

注意:ExecStop 也只停止了一个代理进程