在Ubuntu上配置Kafka主要包括以下幾個步驟:
首先,確保你已經安裝了Java運行環境(推薦使用OpenJDK 8)和Zookeeper。
# 安裝Java
sudo apt update
sudo apt install openjdk-8-jdk
java -version
# 下載并解壓Zookeeper
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
tar xvf zookeeper-3.4.6.tar.gz
sudo mv zookeeper-3.4.6 /usr/local/zookeeper
編輯Zookeeper的配置文件 /usr/local/zookeeper/conf/zoo.cfg
,設置數據目錄和客戶端連接端口。
# 編輯Zookeeper配置文件
sudo nano /usr/local/zookeeper/conf/zoo.cfg
# 添加或修改以下行
dataDir /var/lib/zookeeper
clientPort 2181
啟動Zookeeper服務:
sudo /usr/local/zookeeper/bin/zkServer.sh start
下載并解壓Kafka。
# 下載Kafka
wget https://downloads.apache.org/kafka/3.5.2/kafka_2.12-3.5.2.tgz
tar -xzf kafka_2.12-3.5.2.tgz
sudo mv kafka_2.12-3.5.2 /usr/local/kafka
編輯Kafka的配置文件 /usr/local/kafka/config/server.properties
,設置以下參數:
# Kafka broker的唯一標識符
broker.id 0
# Kafka服務器監聽的地址和端口
listeners PLAINTEXT://your.server.ip:9092
# 對外暴露的地址和端口
advertised.listeners PLAINTEXT://your.server.ip:9092
# Zookeeper的地址和端口
zookeeper.connect localhost:2181
# Kafka日志目錄
log.dirs /tmp/kafka-logs
# Kafka主題的分區數
num.partitions 1
# 默認副本因子
default.replication.factor 1
在配置文件目錄中啟動Kafka服務:
sudo /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
創建一個Kafka主題來驗證配置是否生效:
/usr/local/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
啟動Kafka生產者命令示例:
/usr/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
啟動Kafka消費者命令示例:
/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
確保防火墻允許Kafka使用的端口(如9092)。
sudo ufw allow 9092
在 /lib/systemd/system/
目錄下創建 zookeeper
和 kafka
服務的配置文件。
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"
User=root
Group=root
ExecStart=/usr/local/zookeeper/bin/zkServer.sh start
ExecStop=/usr/local/zookeeper/bin/zkServer.sh stop
Restart=on-failure
[Install]
WantedBy=multi-user.target
kafka.service:
[Unit]
Description=Apache Kafka server (broker)
After=zookeeper.service network.target
[Service]
Type=simple
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
User=root
Group=root
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=on-failure
[Install]
WantedBy=multi-user.target
刷新配置并啟用服務:
sudo systemctl daemon-reload
sudo systemctl enable zookeeper
sudo systemctl enable kafka
sudo systemctl start zookeeper
sudo systemctl start kafka