要配置kafka,首先要配置zookeeper保證集羣的高可用。所以本教程包含二者的配置。java
一、下載kafka:https://www.apache.org/dyn/closer.cgi?path=/kafka/2.1.0/kafka_2.11-2.1.0.tgzapache
二、下載zookeoper:http://mirror.bit.edu.cn/apache/zookeeper/bootstrap
一、目前配置三臺機器的集羣,配置好hosts文件:安全
192.168.102.131 h131 192.168.102.132 h132 192.168.102.133 h133
二、配置好三臺機器間的SSH無祕鑰登陸(雖然不是必須,可是做爲集羣間更好的管理,這是必要的步驟)服務器
三、關閉防火牆。固然,爲了安全起見,最好仍是不要偷懶,應該針對性的開啓須要開啓的端口。測試
四、配置java jdk環境。命令行
一、解壓安裝包並複製zoo.cfg模板文件爲zoo.cfg日誌
# cd /opt/module/zookeeper-3.4.10/conf # cp zoo_sample.cfg zoo.cfg
二、配置zoo.cfgcode
# vi zoo.cfg
zoo.cfg配置以下:server
#心跳間隔 tickTime=2000 #其餘服務器鏈接到Leader時,最長能忍受的心跳間隔數:10*2000 = 20秒 initLimit=10 #發送消息時,多長忍受心跳間隔數:5*2000 = 10秒 syncLimit=5 #快照日誌 dataDir=/opt/module/zookeeper-3.4.10/zkdata #事務日誌 dataLogDir=/opt/module/zookeeper-3.4.10/zkdatalog #客戶端鏈接zookeeper服務器的端口 clientPort=2181 #能夠待後續克隆完剩下兩臺後,再寫上其餘兩臺的ip server.1=192.168.102.131:2888:3888 server.2=192.168.102.132:2888:3888 server.3=192.168.102.133:2888:3888
三、分發到zookeeper到其餘兩臺機器
# scp -r zookeeper-3.4.10/ root@h132:/opt/module/ # scp -r zookeeper-3.4.10/ root@h133:/opt/module/
四、在三臺機器上的dataDir目錄/data/zookeeper/下寫一個myid文件,對應zoo.cfg裏的server.一、server.二、server.3
*** server一、2和3 # cd /opt/module/zookeeper-3.4.10/ # mkdir zkdata # mkdir zkdatalog *** server1 # echo "1" > /opt/module/zookeeper-3.4.10/zkdata/myid *** server2 # echo "2" > /opt/module/zookeeper-3.4.10/zkdata/myid *** server3 # echo "3" > /opt/module/zookeeper-3.4.10/zkdata/myid
五、啓動各臺服務
# ./bin/zkServer.sh start
六、查看狀態
# /bin/zkServer.sh status 2 follower, 1 leader.
X、其餘命令
*** 中止服務 # bin/zkServer.sh stop
一、解壓kafka。
二、進入安裝目錄修改配置文件
# cd /opt/module/kafka_2.12-2.1.0/config # vi server.properties
server.properties的配置信息以下,注意每臺機器略微不一樣,詳情見註釋
# 三臺機器分別是1,2以及3 broker.id=1 # 對應自身ip listeners=PLAINTEXT://192.168.102.131:9092 # 對應自身ip advertised.listeners=PLAINTEXT://192.168.102.131:9092 # zookeeper集羣地址 zookeeper.connect=192.168.102.131:2181,192.168.102.132:2181,192.168.102.133:2181
三、將安裝包分發到其餘兩臺機器
# scp -r kafka_2.12-2.1.0/ root@h132:/opt/module/ # scp -r kafka_2.12-2.1.0/ root@h133:/opt/module/
四、修改各自的IP配置:broker.id、listeners以及advertised。
# vi server.properties
具體見第2步中的註釋,例如,第二臺機器的配置應該是這樣
# 三臺機器分別是1,2以及3 broker.id=2 # 對應自身ip listeners=PLAINTEXT://192.168.102.132:9092 # 對應自身ip advertised.listeners=PLAINTEXT://192.168.102.132:9092 # zookeeper集羣地址 zookeeper.connect=192.168.102.131:2181,192.168.102.132:2181,192.168.102.133:2181
五、啓動集羣
bin/kafka-server-start.sh -daemon ./config/server.properties
若是正常的話,則應該不會有任何輸出信息;若是不正常,可查看詳細日誌文件:
tail -fn 100 logs/server.log
六、測試集羣
(1)任意一臺機器上建立話題,例如建立一個名爲zhaoyi
的話題(指定分區爲2):
# bin/kafka-topics.sh --create --zookeeper 192.168.102.131:2181,192.168.102.132:2181,192.168.102.133:2181 --replication-factor 2 --partitions 2 --topic zhaoyi
獲得以下的輸出
Created topic "zhaoyi".
(2)查看全部分區
# bin/kafka-topics.sh --zookeeper 192.168.102.131:2181 --list
獲得以下的輸出
__consumer_offsets zhaoyi
(3)啓動一個生產者(經過控制檯),往topic隊列(zhaoyi)中寫入數據,例如,咱們在192.168.102.133上執行:
# bin/kafka-console-producer.sh --broker-list 192.168.102.131:9092,192.168.102.132:9092,192.168.102.132:9092 --topic zhaoyi >
(4) (3)執行以後進入一個等待輸入命令行,即須要咱們輸入消息。這時候,咱們再從另外一臺機器,例如192.168.102.132上啓動一個消費者(經過控制檯)。)
bin/kafka-console-consumer.sh --bootstrap-server 192.168.102.131:9092,192.168.102.132:9092,192.168.102.133:9092 --topic zhaoyi
執行該命令以後,控制檯處於阻塞狀態,由於他已經進入了監聽模式,監聽zhaoyi話題的任何產出信息。
(5)回到建立生產者的機器上,往等待命令行輸入任何消息,敲擊回車
>I love you, deer! >
(6)這時候咱們觀察進入阻塞模式的消費者控制檯,即192.168.102.132服務器,能夠看到接收到了信息:
I love you, deer!
至此,配置結束。
X、其餘命令
*** 中止服務 # bin/kafka-server-stop.sh *** 查看某個topic的消息 # bin/kafka-topics.sh --zookeeper 192.168.102.131:2181 --describe --topic zhaoyi