Apache Kafka是一個分佈式消息發佈訂閱系統,而Kafka環境每每是在集羣中配置的。本篇就對配置3個broker的Kafka集羣進行介紹。java
Kafka自己提供了啓動了zookeeper的腳本和配置文件。服務器
進入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
在三個機器進行一樣得配置,或者將配置文件傳到集羣中其餘機器上。測試
在三臺機器dataDir目錄(zookeeper.properties配置)下,新建文件myid,寫入相應標識spa
echo 1 > /tmp/zookeeper/myid #1爲標識,在其餘機器上改成2或3
逐漸啓動三臺機器的zookeeper構成一個集羣,即在三臺機器上運行.net
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties #-daemon以守護進程方式啓動zookeeper
因爲節點Zookeeper啓動後,都會嘗試鏈接其餘節點,先啓動的確定連不上後啓動的節點,所以,此時打印的異常能夠忽略,當節點所有啓動,集羣在選出一個Leader後,異常就不會打印了。code
檢查Zookeeper有沒有啓動server
netstat -apn | grep 2181
修改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
集羣的其餘機器也進行相應的配置進程
在三個機器上啓動Kafka服務
bin/kafka-server-start.sh -daemon config/server.properties #-daemon以守護進程方式啓動kafka server
檢查服務是否啓動
ps -aux | grep config/server
在任意一臺機器上建立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
啓動生產者
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
在生產者console輸入消息進行發送
此時,消費者console能夠收到消息了
至此,一個簡單的Kafka集羣就搭建起來了