前言
本教程是在同一台Linux服務器上搭建三個節點Kafka集群,Zookeeper是使用單獨安裝的(安裝教程),同學們也可以使用Kafka中自帶的Zookeeper(可網上查詢)。
一.下載
wget https://mirrors.bfsu.edu.cn/apache/kafka/2.7.0/kafka_2.12-2.7.0.tgz
二.解壓並復制到指定目錄(通常放在/usr/local),並重命名為kafka0
tar -zvxf kafka_2.12-2.7.0.tgz -C /usr/local/ cd /usr/local mv kafka_2.12-2.7.0 kafka0
三.配置
kafka配置文件:/usr/local/kafka0/config/server.properties
vim /usr/local/kafka0/config/server.properties
broker.id是kafka broker的編號,集群里每個broker的id需不同,默認為0,如果使用集群,遞增該編號即可。
如果允許外網訪問,需要配置 advertised.listeners=PLAINTEXT://<公網IP>:9092
listeners=PLAINTEXT://<內網IP>:9092
注意:外網訪問
listeners=PLAINTEXT://<內網IP>:9092 advertised.listeners=PLAINTEXT://<公網IP>:9092
設置Zookeeper地址,如果Zookeeper采用了集群模式,多個地址間使用英文逗號隔開
num.partitions 為新建Topic的默認Partition(分區)數量,默認為1,partition數量提升,一定程度上可以提升並發性
日志存放位置,如果kafka集群分布在不同機器上,日志存在位置可以保持默認,如果同一機器,需要配置成不同的目錄
若目錄不存在,則創建相應的目錄
cd /usr/local/kafka0 mkdir logs
內部topic配置,為保證消息的高可用,建議副本集大於1(副本集數要<=broker數(集群),本案例是三節點,故設置為3)
default.replication.factor為kafka保存消息的副本數,如果一個副本失效了,另一個還可以繼續提供服務,是在自動創建topic時的默認副本數
四.其余兩個節點安裝配置
根據kafka0復制兩份,分別命名為kafka1,kafka2,並對配置文件做相應修改, 尤其是brokerid、IP地址和日志目錄。
五.啟動及停止(以kafka0為例,其余節點相似)
1.啟動:
cd /usr/local/kafka0 bin/kafka-server-start.sh -daemon config/server.properties
判斷是否啟動成功:
方法一:
查看啟動日志,如有started字樣說明啟動成功:
cat logs/kafkaServer.out
如果機器內存不夠,會報內存不足。
可以編輯
bin/kafka-server-start.sh
修改 export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
為 export KAFKA_HEAP_OPTS="-Xmx512M -Xms256M"
方法二:使用jps命令,如有kafka字樣,說明啟動成功。
2.停止
bin/kafka-server-stop.sh -daemon config/server.properties
六.測試(以下測試是在只有一個broker環境下進行,機器配置太低了,起不了三個broker)
1. 創建topic,名為test
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
2.查看主題列表
bin/kafka-topics.sh --list --zookeeper localhost:2181
3.查看特定主題
bin/kafka-topics.sh --zookeeper localhost:2181 --describe test
4.發消息
bin/kafka-console-producer.sh --broker-list 101.132.236.198:9092 --topic test
5.接收消息
kafka0]# bin/kafka-console-consumer.sh --bootstrap-server 101.132.236.198:9092 --topic test --from-beginning
6.刪除主題
bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic test