搭建Kafka集羣(3-broker)

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

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,寫入相應標識spa

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

3. 啓動Zookeeper集羣

逐漸啓動三臺機器的zookeeper構成一個集羣,即在三臺機器上運行.net

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

因爲節點Zookeeper啓動後,都會嘗試鏈接其餘節點,先啓動的確定連不上後啓動的節點,所以,此時打印的異常能夠忽略,當節點所有啓動,集羣在選出一個Leader後,異常就不會打印了。code

檢查Zookeeper有沒有啓動server

netstat -apn | grep 2181

搭建Kafka broker集羣

1. 修改配置文件

修改config/server.properties文件blog

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集羣就搭建起來了

相關文章
相關標籤/搜索