kafka集群搭建

MagaretBerg 8年前發布 | 39K 次閱讀 消息系統

來自: http://my.oschina.net/u/2000675/blog/607978


版本和集群環境

kafka版本:2.11

集群環境:兩臺虛擬機(我這里是一臺當producer,一臺當consumer)

官網:http://kafka.apache.org/
官方文檔:http://kafka.apache.org/documentation.html#quickstart

參考:https://kafka.apache.org/08/quickstart.html

基礎配置:已安裝jdk和zookeeper(zookeeper安裝參照http://blog.csdn.net/unix21/article/details/18990123

Step 1:下載kafka

到官網上下載穩定版本的kafka,解壓

tar -zxvf kafka_2.11-0.8.2.2.tgz

Step 2:修改配置文件

修改config下的server.properties就可以了。需要配置的屬性有:broker.id(標示當前server在集群中的id,從0開始),port,host.name(當前的server host name),zookeeper.connect(連接的zookeeper集群),log.dirs(log的存儲目錄,記得對應的去建立這個目錄)等,其他的一些配置可以看相應的注釋:(截圖不全,僅供參考)

Step 3:把配置好的kafka復制到其它server上

scp -r kafka_2.11-0.8.2.2 slave1:~

Step 4:修改每臺server的配置文件,主要是broker.id 和host.name

Step 5:先啟動zookeeper集群,再啟動kafka集群

啟動zookeeper集群:./zkServer.sh start

在每臺server上啟動kafka:./kafka-server-start.sh ../config/server.properties

Step 6:創建topic

./kafka-topics.sh --zookeeper master:2181 --topic test --replication-factor 2 --partitions 3 --create

Step 7:查看topic

查看所有topic:./kafka-topics.sh --list --zookeeper master:2181

查看一個topic詳情:./kafka-topics.sh --describe --zookeeper master:2181 --topic test

partiton:partion id從0開始
leader:當前負責讀寫的lead broker id
relicas:當前partition的所有replication broker  list
isr:relicas的子集,只包含出于活動狀態的broker

Step 8:創建producer

./kafka-console-producer.sh --broker-list master:9092,slave1:9092 --topic test

This is a message

注意,如果上述命令不能發送接收消息,報一下錯誤:

ERROR Failed to collate messages by topic, partition due to: fetching topic metadata for topics [Set(test)] from broker [ArrayBuffer(id:1,host:slave1,port:9092, id:0,host:master,port:9092)] failed (kafka.producer.async.DefaultEventHandler)

則說明broker的host.name屬性配置有問題,可以用ip或者是hosts里配好的域名

Step 9:創建consumer

./kafka-console-consumer.sh  --zookeeper master:2181 --from-beginning --topic test

就可以看到消息了。

如果要最新的數據,可以不帶--from-beginning參數即可。
最后測試容錯能力:
?如果broker 0作為leader運行,現在我們殺掉broker 0,在查看topic的詳細信息,發現leader都是broker 1了,并且consumer依然可以消費消息,

 

 本文由用戶 MagaretBerg 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!