在Ubuntu上配置Apache Kafka时,以下是一些最佳实践:
Kafka是用Scala编写的,运行在JVM上,因此需要先安装JDK。推荐使用JDK 1.8。
sudo apt update
sudo apt install openjdk-11-jdk -y
从Apache Kafka官网下载预编译的Kafka二进制文件,而不是源文件。例如,下载Kafka 3.6.2版本。
wget https://downloads.apache.org/kafka/3.6.2/kafka_2.12-3.6.2.tgz
tar -xzf kafka_2.12-3.6.2.tgz
sudo mv kafka_2.12-3.6.2 /usr/local/kafka
在/usr/local/kafka/config
目录下编辑zookeeper.properties
文件。
sudo vi /usr/local/kafka/config/zookeeper.properties
主要配置项包括:
dataDir
: Zookeeper数据目录。clientPort
: Zookeeper客户端端口(默认为2181)。在/usr/local/kafka/config
目录下编辑server.properties
文件。
sudo vi /usr/local/kafka/config/server.properties
主要配置项包括:
broker.id
: Kafka broker节点ID。listeners
: Kafka监听地址和端口(例如:PLAINTEXT://host_ip:9092
)。log.dirs
: Kafka日志文件目录。zookeeper.connect
: Zookeeper连接地址(例如:localhost:2181
)。使用systemd管理服务,创建并启动Zookeeper和Kafka服务。
# 创建并启动Zookeeper服务
sudo bash -c 'cat <<EOF > /etc/systemd/system/zookeeper.service
[Unit]
Description=Apache Zookeeper server
Documentation=http://zookeeper.apache.org
Requires=network.target
After=network.target
[Service]
Type=simple
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=always
User=kafka
Group=kafka
[Install]
WantedBy=multi-user.target
EOF'
sudo systemctl daemon-reload
sudo systemctl start zookeeper
sudo systemctl enable zookeeper
# 创建并启动Kafka服务
sudo bash -c 'cat <<EOF > /etc/systemd/system/kafka.service
[Unit]
Description=Apache Kafka Server
Documentation=http://kafka.apache.org/documentation.html
Requires=zookeeper.service
After=zookeeper.service
[Service]
Type=simple
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh
Restart=always
User=kafka
Group=kafka
[Install]
WantedBy=multi-user.target
EOF'
sudo systemctl daemon-reload
sudo systemctl start kafka
sudo systemctl enable kafka
开放Kafka需要的端口(例如:9092和9093)。
sudo firewall-cmd --zone=public --add-port=9092/tcp --permanent
sudo firewall-cmd --zone=public --add-port=9093/tcp --permanent
sudo firewall-cmd --reload
使用以下命令检查Kafka是否在监听端口9092。
netstat -tulnp | grep 9092
创建一个测试主题并测试生产者和消费者。
# 创建测试主题
/usr/local/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
# 列出主题
/usr/local/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092
# 生产消息
/usr/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
# 消费消息
/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
如果需要配置Kafka集群,可以参考以下步骤:
server.properties
文件中的broker.id
、listeners
和zookeeper.connect
配置正确。/usr/local/kafka/bin/kafka-storage.sh random-uuid
通过这些步骤,您可以在Ubuntu上成功配置和运行Apache Kafka。希望这些最佳实践对您有所帮助。