在 Debian 下启动 Kafka,一般有两种常见方式:手动启动(官方二进制包) 和 systemd 服务方式(推荐)。下面分别说明。
Kafka 依赖 Java 和 Zookeeper(Kafka 2.8+ 可用 KRaft 模式,不需要 Zookeeper)。
sudo apt update
sudo apt install default-jdk -y
java -version
wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz
tar -xzf kafka_2.13-3.6.1.tgz
mv kafka_2.13-3.6.1 /opt/kafka
cd /opt/kafka
bin/zookeeper-server-start.sh config/zookeeper.properties
新开一个终端继续
cd /opt/kafka
bin/kafka-server-start.sh config/server.properties
看到 started (kafka.server.KafkaServer) 表示启动成功。
sudo vim /etc/systemd/system/zookeeper.service
内容:
[Unit]
Description=Apache Zookeeper
After=network.target
[Service]
Type=simple
User=root
ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
sudo vim /etc/systemd/system/kafka.service
内容:
[Unit]
Description=Apache Kafka
After=zookeeper.service
[Service]
Type=simple
User=root
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start zookeeper
sudo systemctl start kafka
sudo systemctl enable zookeeper
sudo systemctl enable kafka
systemctl status kafka
journalctl -u kafka -f
如果你使用的是 Kafka 3.x 且不想用 Zookeeper:
# 生成集群 ID
bin/kafka-storage.sh random-uuid
# 格式化
bin/kafka-storage.sh format -t <cluster-id> -c config/kraft/server.properties
# 启动
bin/kafka-server-start.sh config/kraft/server.properties
bin/kafka-topics.sh --create --topic test --bootstrap-server localhost:9092
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
如果你告诉我:
我可以给你更精确的启动方式。