在Debian上配置Kafka消息队列主要包括以下几个步骤:
Kafka是用Java编写的,因此需要先安装Java运行环境。可以使用以下命令在Debian上安装OpenJDK 8:
sudo apt update
sudo apt install openjdk-8-jdk
安装完成后,可以使用以下命令验证Java是否安装成功:
java -version
可以从Apache Kafka官网下载Kafka的安装包,然后使用tar
命令解压。例如,下载并解压Kafka 3.5.2版本:
wget https://downloads.apache.org/kafka/3.5.2/kafka_2.12-3.5.2.tgz
tar -zvxf kafka_2.12-3.5.2.tgz
为了方便使用Kafka命令,可以将Kafka的安装目录添加到系统的环境变量中。编辑/etc/profile
文件,在文件末尾添加以下两行:
export KAFKA_HOME=/path/to/your/kafka_2.12-3.5.2
export PATH=$PATH:$KAFKA_HOME/bin
然后,使配置生效:
source /etc/profile
在Kafka 2.8.0版本以后,Kafka可以独立于Zookeeper运行。但是,为了简化配置,通常还是会配置Zookeeper。可以创建并配置Zookeeper服务文件:
sudo vi /lib/systemd/system/zookeeper.service
添加以下内容:
[Unit]
Description=Zookeeper service
After=network.target
[Service]
Type=simple
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/jdk-16.0.1/bin"
User=root
Group=root
ExecStart=/home/kafka_2.12-2.8.0/bin/zookeeper-server-start.sh /home/kafka_2.12-2.8.0/config/zookeeper.properties
ExecStop=/home/kafka_2.12-2.8.0/bin/zookeeper-server-stop.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
然后,将Zookeeper服务加入到开机启动并启动测试:
sudo systemctl daemon-reload
sudo systemctl enable zookeeper
sudo systemctl start zookeeper
sudo systemctl status zookeeper
创建并配置Kafka服务文件:
sudo vi /lib/systemd/system/kafka.service
添加以下内容:
[Unit]
Description=Apache Kafka server (broker)
After=zookeeper.service
[Service]
Type=simple
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/jdk-16.0.1/bin"
User=root
Group=root
ExecStart=/home/kafka_2.12-2.8.0/bin/kafka-server-start.sh /home/kafka_2.12-2.8.0/config/server.properties
ExecStop=/home/kafka_2.12-2.8.0/bin/kafka-server-stop.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
然后,将Kafka服务加入到开机启动并启动测试:
sudo systemctl daemon-reload
sudo systemctl enable kafka
sudo systemctl start kafka
sudo systemctl status kafka
可以使用以下命令创建一个主题并发送一些消息来验证Kafka是否配置成功:
kafka-topics.sh --create --topic my-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
然后,创建一个生产者发送消息:
kafka-console-producer.sh --broker-list localhost:9092 --topic my-topic
在另一个终端中,创建一个消费者接收消息:
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my-topic --from-beginning
如果一切配置正确,消费者应该能够接收到生产者发送的消息。