搭建Kafka集群(3-broker)


Apache Kafka是一個分布式消息發布訂閱系統,而Kafka環境往往是在集群中配置的。本篇就對配置3個broker的Kafka集群進行介紹。

Zookeeper集群

Kafka本身提供了啟動了zookeeper的腳本和配置文件。

1. 修改配置文件

進入kafka主目錄,編輯文件config/zookeeper.properties,配置如下:

tickTime=2000 #心跳時間,毫秒
initLimit=5 #Follower在啟動是需要在5個心跳時間內從Leader同步數據
syncLimit=2   #超過兩個心跳時間收不到Follower的效應,就認為此Follower已經下線 
 
#zookeeper集群的三個服務器 server.
1=192.168.10.152:2888:3888 server.2=192.168.10.153:2888:3888 server.3=192.168.10.170:2888:3888

在三個機器進行同樣得配置,或者將配置文件傳到集群中其他機器上。

2. 配置主機標識

在三台機器dataDir目錄(zookeeper.properties配置)下,新建文件myid,寫入相應標識

echo 1 > /tmp/zookeeper/myid #1為標識,在其他機器上改為2或3

3. 啟動Zookeeper集群

逐漸啟動三台機器的zookeeper構成一個集群,即在三台機器上運行

bin/zookeeper-server-start.sh -daemon config/zookeeper.properties #-daemon以守護進程方式啟動zookeeper

由於節點Zookeeper啟動后,都會嘗試連接其他節點,先啟動的肯定連不上后啟動的節點,因此,此時打印的異常可以忽略,當節點全部啟動,集群在選出一個Leader后,異常就不會打印了。

檢查Zookeeper有沒有啟動

netstat -apn | grep 2181

搭建Kafka broker集群

1. 修改配置文件

修改config/server.properties文件

broker.id=0  #三個broker的id不能相同,因此改為不同的id
listeners=PLAINTEXT://192.168.10.152:9092 #服務器監聽的地址,如果不配置從java.net.InetAddress.getCanonicalHostName()獲得
host.name=192.168.10.152 #broker 機器ip
zookeeper.connect=192.168.10.152:2181,192.168.10.153:2181,192.168.10.170:2181

集群的其他機器也進行相應的配置

2. 啟動Kafka服務

在三個機器上啟動Kafka服務

bin/kafka-server-start.sh -daemon config/server.properties #-daemon以守護進程方式啟動kafka server

檢查服務是否啟動

ps -aux | grep config/server

測試

1. 創建topic

在任意一台機器上創建topic

bin/kafka-topics.sh --create --zookeeper 192.168.10.152:2181 --replication-factor 3 --partitions 3 --topic cluster-test 
#--zookeeper是集群列表,可以指定所有節點,也可以指定為部分列表
#--replication-factor 為復制數目,數據會自動同步到其他broker上,防止某個broker宕機數據丟失
#--partitions 一個topic可以切分成多個partition,一個消費者可以消費多個partition,但一個partition只能被一個消費者消費

查看topic詳情

bin/kafka-topics.sh --describe --zookeeper 192.168.10.153:2181 --topic cluster-test

2. 啟動生產者、消費者

啟動生產者

bin/kafka-console-producer.sh --broker-list 192.168.10.152:9092 --topic cluster-test

在三台機器上分別啟動消費者

bin/kafka-console-consumer.sh --zookeeper 192.168.10.152:2181 --topic cluster-test --from-beginning

3. 測試

在生產者console輸入消息進行發送

此時,消費者console可以收到消息了

至此,一個簡單的Kafka集群就搭建起來了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM