在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。希望這些最佳實踐對您有所幫助。