本文搭建乙個三節點的kafka集群。該集群有三個zookeeper、三個kafka broker。
解壓kafka安裝包,獲得如下目錄:
unzip kafka_2.11-0.11.0.1.zip
kafka_2.11-0.11.0.1
kafka目錄結構:
cd kafka_2.11-0.11.0.1
tree -l 1
展示如下內容:
.
├── license
├── notice
├── bin
├── config
├── libs
├── logs
└── site-docs
將目錄切換到kafka
的config
目錄,要修改的主要是server.properties以及zookeeper.properties兩個配置檔案。
server.properties kafka配置檔案
zookeeper.properties zookeeper配置檔案
對kafka感興趣的童鞋們可前往 了解kafka常用配置屬性詳解。
修改zookeeper.properties
:
initlimit=10
synclimit=5
clientport=2181 # zookeeper埠
maxclientcnxns=0 # 單個客戶端與單台伺服器之間的連線數的限制
server.1=ip1:2888:3888 # server.x中的x要與myid中的數字一致,2888用於follower與leader之間的資料同步與其他通訊;3888用於leader選舉時的通訊。
server.2=ip2:2889:3889
server.3=ip3:2890:3890
zookeeper配置詳解可參考:
將目錄切換到datadir
目錄,並建立myid檔案,內容分別是1、2、3。注意myid的內容要與server.x
中的x相一致。
vim myid
三颱機器都配置好zookeeper.properties
並建立myid
檔案後,即可進行測試。依次在三颱機器上執行如下命令,即可啟動zookeeper集群。
cd kafka_2.11-0.11.0.1 # 切換到你的kafka目錄
nohup bin/zookeeper-server-start.sh config/zookeeper.properties &
觀察啟動日誌,確認啟動無誤。
搭建完zookeeper集群後,kafka集群的搭建就完成了一大半。下面我們來搭建kafka集群:
在kafka的config目錄下建立檔案server-cluster.properties
,在其中填寫如下內容:
broker.id=1 # kafka broker的id,三個節點不能相同
listeners=plaintext://:9094 # kafka所使用的埠
log.dir=/tmp/kafka-logs # kafka日誌路徑
zookeeper.connect=***,yyy,zzz # zookeeper集群的位址列表,ip:port的形式,多個用,分隔
當然,這裡server-cluster.properties
名稱不是強制的,你可以叫其他名字;不僅如此,也可直接修改server.properties
。
依次在三颱機器執行如下命令,啟動kafka
cd kafka_2.11-0.11.0.1 # 切換到你的kafka目錄
bin/kafka-server-start.sh config/server-cluster.properties &
觀察啟動日誌,確認啟動無誤。
建立乙個topic,其中的***、yyy、zzz是zookeeper的位址,形式為ip:port
bin/kafka-topics.sh --create --zookeeper ***,yyy,zzz --replication-factor 3 --partitions 1 --topic my-replicated-topic
我們現在已經搭建了乙個kafka集群,並建立了乙個topic,但我們如何知道每個broker在做什麼呢?可使用describe topics
命令:
bin/kafka-topics.sh --describe --zookeeper ***,yyy,zzz --topic my-replicated-topic
topic:my-replicated-topic partitioncount:1 replicationfactor:3 configs:
topic: my-replicated-topic partition: 0 leader: 1 replicas: 1,3,2 isr: 1,3,2
其中,第一行是對所有partition的摘要,每個附加行給出了每個partition的詳情,這裡只有乙個partition,所以只有一行。
leader是負責給定partition所有讀寫的節點,每個節點將稱為partition隨機選擇部分的leader。
replicas是複製此partition日誌的節點列表,無論它們是否leader,即使它們處於活動狀態。
isr是一組in-sync
副本,這是replicas列表的子集,這些副本當前活動,並被引導到leader。
筆者按:isr常被翻譯成「副本同步佇列」。建立乙個生產者:leader、replicas、isr可參考:
bin/kafka-console-producer.sh --broker-list kafka集群位址列表 --topic my-replicated-topic
位址為ip:port的形式,多個用逗號分隔
另啟乙個視窗,建立消費者:
bin/kafka-console-consumer.sh --bootstrap-server kafka位址 --from-beginning --topic my-replicated-topic
kafka位址為ip:port的形式,為kafka集群中的任意乙個節點。
在生產者視窗輸入任意文字,看在消費者視窗能否接收。如果能正常接收,說明kafka集群搭建成功。
參考筆者部落格kafka manager管理kafka集群:
kafka 2 11 0 10 2 0集群安裝
集群環境 spark1 ip 192.168.6.137 spark2 ip 192.168.6.138 spark3 ip 192.168.6.139 cd usr local wget kafka 0.10.2.0 kafka 2.11 0.10.2.0.tgz tar xzf kafka 2....
kafka2 3集群搭建
環境 3臺centos7.4 3臺zookeeper3.4.14 wget 解壓 tar zxvf kafka 2.11 2.3.0.tgz 進入kafka目錄,修改config server.properties,找到zookeeper.connect,修改zk集群的連線位址為 zookeeper...
kafka2 5 1集群部署
名稱 版本gcw1 kafka2.5.1 gcw2 kafka2.5.1 gcw3 kafka2.5.1 華為映象 解壓 創件軟連線vi etc profile新增 export path kafka home bin path 使配置檔案生效 source etc profile root gcw...