關于kafka的工作機制,已經在上篇博文:Kafka原理及單機部署中詳細寫出來,這里只是將kafka的一個群集部署寫了出來。
創(chuàng)新互聯(lián)公司是一家集網站建設,張家界企業(yè)網站建設,張家界品牌網站建設,網站定制,張家界網站建設報價,網絡營銷,網絡優(yōu)化,張家界網站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網站。
博文大綱:
一、環(huán)境準備
二、部署zookeeper服務
三、部署kafka集群
部署kafka群集所需的安裝包,可以從我的網盤鏈接中下載。
#部署zookeeper
[root@kafka01 src]# tar zxf zookeeper-3.4.9.tar.gz
[root@kafka01 src]# mv zookeeper-3.4.9 /usr/local/zookeeper
#修改配置文件
[root@kafka01 src]# cd /usr/local/zookeeper/conf/
[root@kafka01 conf]# cp -p zoo_sample.cfg zoo.cfg
[root@kafka01 conf]# sed -i 's/dataDir=\/tmp\/zookeeper/dataDir=\/usr\/local\/zookeeper\/data/g' zoo.cfg
#直接群集節(jié)點信息,2888和3888端口用于群集內部通信
[root@kafka01 conf]# echo "server.1 192.168.20.2:2888:3888" >> zoo.cfg
[root@kafka01 conf]# echo "server.2 192.168.20.3:2888:3888" >> zoo.cfg
[root@kafka01 conf]# echo "server.3 192.168.20.4:2888:3888" >> zoo.cfg
[root@kafka01 conf]# egrep -v '^$|^#' zoo.cfg #更改后的配置文件如下
tickTime=2000 #節(jié)點之間的心跳檢測時間單位為毫秒
initLimit=10 #達到5個訪問進行同步數(shù)據
syncLimit=5 #節(jié)點之間檢查失敗次數(shù)超過后斷開相應的節(jié)點
dataDir=/usr/local/zookeeper/data #日志文件存放路徑
clientPort=2181
#聲明參與集群的主機
server.1 192.168.20.2:2888:3888
server.2 192.168.20.3:2888:3888
server.3 192.168.20.4:2888:3888
#創(chuàng)建所需目錄及設置節(jié)點的ID號
[root@kafka01 conf]# mkdir /usr/local/zookeeper/data
[root@kafka01 conf]# echo 1 > /usr/local/zookeeper/data/myid
#將配置好的zookeeper目錄復制到群集內的其他節(jié)點
[root@kafka01 conf]# scp -r /usr/local/zookeeper/ root@192.168.20.3:/usr/local/
[root@kafka01 conf]# scp -r /usr/local/zookeeper/ root@192.168.20.4:/usr/local/
#啟動zookeeper服務
[root@kafka01 conf]# /usr/local/zookeeper/bin/zkServer.sh start
[root@kafka01 bin]# netstat -antp | egrep '2181|2888|3888' #確認群集端口在監(jiān)聽
#修改ID號為2
[root@kafka02 ~]# echo 2 > /usr/local/zookeeper/data/myid
#啟動zookeeper
[root@kafka02 ~]# /usr/local/zookeeper/bin/zkServer.sh start
#修改ID號為3
[root@kafka03 ~]# echo 3 > /usr/local/zookeeper/data/myid
#啟動zookeeper
[root@kafka03 ~]# /usr/local/zookeeper/bin/zkServer.sh start
#kafka01上如下:
[root@kafka01 conf]# /usr/local/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower #角色為follower
#kafka02上如下:
[root@kafka02 ~]# /usr/local/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: leader #角色為leader
#kafka03上如下:
[root@kafka03 ~]# /usr/local/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower #角色為follower
#解壓至指定目錄
[root@kafka01 src]# tar zxf kafka_2.11-2.2.1.tgz
[root@kafka01 src]# mv kafka_2.11-2.2.1 /usr/local/kafka
#修改配置文件
[root@kafka01 src]# cd /usr/local/kafka/config/
[root@kafka01 config]# sed -i 's/broker.id=0/broker.id=1/g' server.properties
[root@kafka01 config]# sed -i 's/#listeners=PLAINTEXT:\/\/:9092/listeners=PLAINTEXT:\/\/192.168.20.2:9092/g' server.properties
[root@kafka01 config]# sed -i 's/#advertised.listeners=PLAINTEXT:\/\/your.host.name:9092/advertised.listeners=PLAINTEXT:\/\/192.168.20.2:9092/g' server.properties
[root@kafka01 config]# sed -i 's/log.dirs=\/tmp\/kafka-logs/log.dirs=\/usr\/local\/zookeeper\/data/g' server.properties
[root@kafka01 config]# sed -i 's/zookeeper.connect=localhost:2181/zookeeper.connect=192.168.20.2:2181,192.168.20.3:2181,192.168.20.4:2181/g' server.properties
[root@kafka01 config]# sed -i 's/zookeeper.connection.timeout.ms=6000/zookeeper.connection.timeout.ms=600000/g' server.properties
[root@kafka01 config]# egrep -v '^$|^#' server.properties #修改后的配置文件如下
broker.id=1 #kafka的ID號,這里為1,其他節(jié)點依次是2、3
listeners=PLAINTEXT://192.168.20.2:9092 #節(jié)點監(jiān)聽地址,填寫每個節(jié)點自己的IP地址
advertised.listeners=PLAINTEXT://192.168.20.2:9092
#集群中節(jié)點內部交流使用的端口,填寫每個節(jié)點自己的IP地址
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/usr/local/zookeeper/data
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
#聲明鏈接zookeeper節(jié)點的地址
zookeeper.connect=192.168.20.2:2181,192.168.20.3:2181,192.168.20.4:2181
zookeeper.connection.timeout.ms=600000 #修改這的時間,單位是毫秒,為了防止連接zookeeper超時
group.initial.rebalance.delay.ms=0
#將修改后的kafka目錄發(fā)送至其他節(jié)點
[root@kafka01 config]# scp -r /usr/local/kafka root@192.168.20.3:/usr/local/
[root@kafka01 config]# scp -r /usr/local/kafka root@192.168.20.4:/usr/local/
#啟動kafka
[root@kafka01 config]# cd ../bin/
[root@kafka01 bin]# ./kafka-server-start.sh ../config/server.properties &
#修改與kafka01沖突之處
[root@kafka02 ~]# cd /usr/local/kafka/
[root@kafka02 kafka]# sed -i 's/192.168.20.2/192.168.20.3/g' config/server.properties
[root@kafka02 kafka]# sed -i 's/broker.id=1/broker.id=2/g' config/server.properties
#啟動kafka服務
[root@kafka02 kafka]# cd bin/
[root@kafka02 bin]# ./kafka-server-start.sh ../config/server.properties &
[root@kafka02 bin]# netstat -anpt | grep 9092 #確定端口在監(jiān)聽
#修改kafka配置文件中沖突之處
[root@kafka03 ~]# cd /usr/local/kafka/
[root@kafka03 kafka]# sed -i 's/192.168.20.2/192.168.20.4/g' config/server.properties
[root@kafka03 kafka]# sed -i 's/broker.id=1/broker.id=3/g' config/server.properties
#啟動kafka服務
[root@kafka03 kafka]# cd bin/
[root@kafka03 bin]# ./kafka-server-start.sh ../config/server.properties &
[root@kafka03 bin]# netstat -anpt | grep 9092 #確定端口在監(jiān)聽
#創(chuàng)建名為my-replicated-topic的topic
[root@kafka01 bin]# ./kafka-topics.sh --create --bootstrap-server 192.168.20.2:9092 --replication-factor 3 --partitions 1 --topic my-replicated-topic
#查看topic的狀態(tài)和leader
[root@kafka01 bin]# ./kafka-topics.sh --describe --bootstrap-server 192.168.20.2:9092 --topic my-replicated-topic
Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:segment.bytes=1073741824
Topic: my-replicated-topic Partition: 0 Leader: 2 Replicas: 2,1,3 Isr: 2,1,3
#返回的信息表示partition數(shù)量為1,副本數(shù)量為3,segment字節(jié)數(shù)為1073741824
#名稱為“my-replicated-topic”,ID為2的節(jié)點為leader
[root@kafka01 bin]# ./kafka-console-producer.sh --broker-list 192.168.20.2:9092 --topic my-replicated-topic
#隨便寫入幾行數(shù)據
>aaaaa
>bbbbb
>ccccc
>ddddd
#在其他節(jié)點上訂閱消息
[root@kafka02 bin]# ./kafka-console-consumer.sh --bootstrap-server 192.168.20.3:9092 --from-beginning --topic my-replicated-topic
................#省略部分內容
aaaaa
bbbbb
ccccc
ddddd
#可以看到當前l(fā)eader是ID為2的節(jié)點
[root@kafka01 bin]# ./kafka-topics.sh --describe --bootstrap-server 192.168.20.2:9092 --topic my-replicated-topic
Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:segment.bytes=1073741824
Topic: my-replicated-topic Partition: 0 Leader: 2 Replicas: 2,1,3 Isr: 2,1,3
#到kafka02主機上停止kafka服務
[root@kafka02 bin]# ./kafka-server-stop.sh
#再次查看leader是哪個節(jié)點?(可以發(fā)現(xiàn)leader換成了ID為1的節(jié)點)
[root@kafka01 bin]# ./kafka-topics.sh --describe --bootstrap-server 192.168.20.2:9092 --topic my-replicated-topic
Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:segment.bytes=1073741824
Topic: my-replicated-topic Partition: 0 Leader: 1 Replicas: 2,1,3 Isr: 1,3
———————— 本文至此結束,感謝閱讀 ————————
網站題目:部署Kafka群集
URL網址:http://jinyejixie.com/article26/iehicg.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供品牌網站制作、網站策劃、網站維護、網站營銷、營銷型網站建設、域名注冊
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)