【kafka】kafka集羣搭建

簡介

要配置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

0、準備工做

一、目前配置三臺機器的集羣,配置好hosts文件:安全

192.168.102.131 h131
192.168.102.132 h132
192.168.102.133 h133

二、配置好三臺機器間的SSH無祕鑰登陸(雖然不是必須,可是做爲集羣間更好的管理,這是必要的步驟)服務器

三、關閉防火牆。固然,爲了安全起見,最好仍是不要偷懶,應該針對性的開啓須要開啓的端口。測試

四、配置java jdk環境。命令行

一、安裝zookeeper

一、解壓安裝包並複製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

一、解壓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
相關文章
相關標籤/搜索