Kafka依賴Java運行時環境(JRE),推薦使用OpenJDK 8或11(兼容性更好)。
sudo apt update
sudo apt install openjdk-11-jdk -y # 推薦使用OpenJDK 11
java -version # 驗證安裝(輸出需包含Java版本信息)
注:若使用OpenJDK 8,將命令中的openjdk-11-jdk替換為openjdk-8-jdk。
從Apache Kafka官網下載最新穩定版本(如3.7.0),解壓至指定目錄(如/opt/kafka)。
wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz # 替換為最新版本鏈接
tar -xzvf kafka_2.13-3.7.0.tgz
sudo mv kafka_2.13-3.7.0 /opt/kafka # 移動至/opt目錄(系統級軟件推薦路徑)
Kafka通過Zookeeper實現集群管理和協調,需先配置Zookeeper。
sudo mkdir -p /opt/zookeeper/data # 存儲Zookeeper數據
sudo cp /opt/kafka/config/zoo_sample.cfg /opt/kafka/config/zoo.cfg # 復制模板
sudo vi /opt/kafka/config/zoo.cfg # 編輯配置
修改以下內容(根據實際路徑調整):dataDir=/opt/zookeeper/data # 數據存儲路徑
clientPort=2181 # 客戶端連接端口
tickTime=2000 # 心跳間隔(毫秒)
initLimit=10 # 初始化連接超時(心跳數)
syncLimit=5 # 同步超時(心跳數)
/opt/kafka/bin/zkServer.sh start # 啟動Zookeeper
netstat -nap | grep 2181 # 驗證端口(需顯示LISTEN狀態)
編輯Kafka主配置文件server.properties,設置關鍵參數:
sudo vi /opt/kafka/config/server.properties
修改以下核心配置(按需調整):
# Broker唯一標識(集群中需唯一)
broker.id=0
# 監聽地址(單機用localhost,集群用服務器IP)
listeners=PLAINTEXT://localhost:9092
# 對外公布的地址(集群中需指向服務器IP,供其他Broker訪問)
advertised.listeners=PLAINTEXT://your_server_ip:9092
# 日志存儲目錄(需提前創建)
log.dirs=/opt/kafka/logs
# Zookeeper連接地址(集群中需列出所有Zookeeper節點)
zookeeper.connect=localhost:2181
# 允許刪除Topic(生產環境建議關閉)
delete.topic.enable=true
# 日志保留時間(小時,默認168小時=7天)
log.retention.hours=168
將Kafka和Zookeeper路徑添加至系統環境變量,方便全局調用。
sudo vi /etc/profile # 編輯全局環境變量
在文件末尾添加:
export KAFKA_HOME=/opt/kafka
export PATH=$PATH:$KAFKA_HOME/bin
export ZOOKEEPER_HOME=/opt/kafka # Zookeeper與Kafka同目錄時無需額外配置
使配置生效:
source /etc/profile
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
ps aux | grep kafka # 查看是否有kafka進程
netstat -nap | grep 9092 # 驗證Kafka端口(需顯示LISTEN狀態)
/opt/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
/opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
輸入消息(如Hello Kafka),按Ctrl+D結束輸入。/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
應能看到生產者發送的消息,驗證Kafka通信正常。通過systemd創建服務單元,實現Kafka和Zookeeper開機自動啟動。
sudo vi /etc/systemd/system/zookeeper.service
添加以下內容:[Unit]
Description=Apache Zookeeper server
After=network.target
[Service]
Type=simple
User=root
ExecStart=/opt/kafka/bin/zkServer.sh start
ExecStop=/opt/kafka/bin/zkServer.sh stop
Restart=always
[Install]
WantedBy=multi-user.target
sudo vi /etc/systemd/system/kafka.service
添加以下內容:[Unit]
Description=Apache Kafka Server
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=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload # 重新加載systemd配置
sudo systemctl enable zookeeper # 開機自啟Zookeeper
sudo systemctl enable kafka # 開機自啟Kafka
sudo systemctl start zookeeper # 啟動Zookeeper
sudo systemctl start kafka # 啟動Kafka
以上步驟覆蓋了Ubuntu下Kafka的基礎配置流程,可根據實際需求調整參數(如集群配置、安全設置等)。配置完成后,即可通過Kafka API或命令行工具進行消息生產和消費。