Kafka集群的搭建與批量啟停方式
什么是Kafka?
Kafka是一個(gè)分布式的基于發(fā)布/訂閱模式的消息隊(duì)列(MessageQueue),主要應(yīng)用于大數(shù)據(jù)實(shí)時(shí)處理領(lǐng)域。
最新官方給Kafka的定義是一個(gè)開源的分布式事件流平臺(tái)(Event Streaming Platform),被數(shù)千家公司用于高性能數(shù)據(jù)管道、流分析、數(shù)據(jù)集成和關(guān)鍵任務(wù)應(yīng)用。
Kafka集群的搭建
部署服務(wù)器發(fā)行版本為CentOS7 ?? 三臺(tái)(已安裝好Java環(huán)境),三臺(tái)服務(wù)器的IP為:
- 192.168.182.4
- 192.168.182.5
- 192.168.182.6
部署Kafka版本為kafka_2.12-3.1.0
下載安裝包、上傳服務(wù)器
https://kafka.apache.org/downloads

將下載好的安裝包上傳至每臺(tái)服務(wù)器的/opt/module/目錄下后解壓重命名為kafka。

修改server.properties
分別進(jìn)入三臺(tái)服務(wù)器kafka的配置文件目錄config,修改服務(wù)配置文件server.properties。
- 將broker.id分別修改為0、1、2(不可重復(fù))
- 添加
listeners=PLAINTEXT://192.168.182.4:9092配置,對(duì)應(yīng)好每個(gè)服務(wù)器的IP地址 - 修改
log.dirs=/opt/module/kafka/datas - 修改
zookeeper.connect=192.168.182.4:2181,192.168.182.5:2181,192.168.182.6:2181
主要修改部分
... broker.id=0 listeners=PLAINTEXT://192.168.182.4:9092 log.dirs=/opt/module/kafka/datas zookeeper.connect=192.168.182.4:2181,192.168.182.5:2181,192.168.182.6:2181 ...
... broker.id=1 listeners=PLAINTEXT://192.168.182.5:9092 log.dirs=/opt/module/kafka/datas zookeeper.connect=192.168.182.4:2181,192.168.182.5:2181,192.168.182.6:2181 ...
... broker.id=2 listeners=PLAINTEXT://192.168.182.6:9092 log.dirs=/opt/module/kafka/datas zookeeper.connect=192.168.182.4:2181,192.168.182.5:2181,192.168.182.6:2181 ...
修改zookeeper.properties
分別進(jìn)入三臺(tái)服務(wù)器kafka的配置文件目錄config,修改服務(wù)配置文件修改zookeeper.properties。
修改dataDir=/opt/module/kafka/zk-datas,后需要手動(dòng)創(chuàng)建該目錄,并創(chuàng)建myid文件,三臺(tái)服務(wù)器的myid不可重復(fù),分別為0,1,2
添加節(jié)點(diǎn)的配置:
server.0=192.168.182.4:2888:3888 server.1=192.168.182.5:2888:3888 server.2=192.168.182.6:2888:3888
添加配置:
initLimit=10 syncLimit=5 tickTime=2000
三臺(tái)服務(wù)器保持一致,像下面這樣
dataDir=/opt/module/kafka/zk-datas # the port at which the clients will connect clientPort=2181 # disable the per-ip limit on the number of connections since this is a non-production config initLimit=10 syncLimit=5 tickTime=2000 maxClientCnxns=0 # Disable the adminserver by default to avoid port conflicts. # Set the port to something non-conflicting if choosing to enable this admin.enableServer=false # admin.serverPort=8080 server.0=192.168.182.4:2888:3888 server.1=192.168.182.5:2888:3888 server.2=192.168.182.6:2888:3888
修改bin/kafka-server-stop.sh
官方的停止服務(wù)的腳本不太好用,將三臺(tái)服務(wù)器的kafka-server-stop修改成下面的內(nèi)容
#!/bin/sh
PIDS=$(jps -lm | grep -i "kafka.Kafka" | awk '{print $1}')
if [ -z "$PIDS" ]; then
echo "No kafka server to stop"
exit 1
else
kill -s TERM $PIDS
fi
注意:當(dāng)使用ssh來(lái)遠(yuǎn)程執(zhí)行此腳本的時(shí)候,可能會(huì)報(bào)jps命令找不到,但是在服務(wù)器本身上執(zhí)行是沒有問(wèn)題,原因是你服務(wù)器的jps命令不在Path中,加上去就行,或者使用jps的絕對(duì)路徑。
啟動(dòng)測(cè)試
一定要先啟動(dòng)zk再啟動(dòng)kafka,關(guān)閉的時(shí)候先關(guān)閉kafka,再關(guān)閉zk。
啟動(dòng)Zookerper
三臺(tái)服務(wù)器上分別執(zhí)行下面語(yǔ)句啟動(dòng)Zookerper
# 前臺(tái)啟動(dòng) /opt/module/kafka/bin/zookeeper-server-start.sh /opt/module/kafka/config/zookeeper.properties # 后臺(tái)啟動(dòng) /opt/module/kafka/bin/zookeeper-server-start.sh -daemon /opt/module/kafka/config/zookeeper.properties
jps -lm可以看到zk已經(jīng)啟動(dòng)成功。
啟動(dòng)Kafka
三臺(tái)服務(wù)器上分別執(zhí)行下面語(yǔ)句啟動(dòng)Kafka
# 前臺(tái)啟動(dòng) /opt/module/kafka/bin/kafka-server-start.sh /opt/module/kafka/config/server.properties # 后臺(tái)啟動(dòng) /opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties
jps -lm可以看到kafka已經(jīng)啟動(dòng)成功。

關(guān)閉Kafka
三臺(tái)服務(wù)器上分別執(zhí)行下面語(yǔ)句關(guān)閉Kafka
/opt/module/kafka/bin/kafka-server-stop.sh
jps -lm可以看到kafka已經(jīng)關(guān)閉成功。
關(guān)閉Zookerper
三臺(tái)服務(wù)器上分別執(zhí)行下面語(yǔ)句關(guān)閉Zookerper
/opt/module/kafka/bin/kafka-server-stop.sh
jps -lm可以看到zookerper已經(jīng)關(guān)閉成功。
編寫集群?jiǎn)⑼D_本
剛才我們是分別在每臺(tái)服務(wù)器上執(zhí)行啟動(dòng)、停止的命令,這種方式不夠方便。所以我們可以通過(guò)ssh遠(yuǎn)程命令來(lái)遠(yuǎn)程在集群中的一臺(tái)服務(wù)器上遠(yuǎn)程執(zhí)行另外兩臺(tái)服務(wù)器的命令,前提是需要配置好ssh免密登陸,前面的文章與有介紹。
Zookerper的集群?jiǎn)⑼D_本
創(chuàng)建zk.sh文件,輸入以下內(nèi)容:
#!/bin/bash
# description: zk集群?jiǎn)?dòng)腳本
# author: 薛偉
case $1 in
"start"){
for i in 192.168.182.4 192.168.182.5 192.168.182.6
do
echo " --------啟動(dòng) $i Kafka-------"
ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"
done
};;
"stop"){
for i in 192.168.182.4 192.168.182.5 192.168.182.6
do
echo " --------停止 $i Kafka-------"
ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh"
done
};;
esac
賦予運(yùn)行權(quán)限chmod +x zk.sh
- 啟動(dòng)集群:./zk.sh start
- 關(guān)閉集群:./zk.sh stop
Kafka的集群?jiǎn)⑼D_本
創(chuàng)建kafka.sh文件,輸入以下內(nèi)容:
#!/bin/bash
# description: zk集群?jiǎn)?dòng)腳本
# author: 薛偉
case $1 in
"start"){
for i in 192.168.182.4 192.168.182.5 192.168.182.6
do
echo " --------啟動(dòng) $i Kafka-------"
ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"
done
};;
"stop"){
for i in 192.168.182.4 192.168.182.5 192.168.182.6
do
echo " --------停止 $i Kafka-------"
ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh"
done
};;
esac
賦予運(yùn)行權(quán)限chmod +x kafka.sh
- 啟動(dòng)集群:./kafka.sh start
- 關(guān)閉集群:./kafka.sh stop
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java實(shí)現(xiàn)新建有返回值的線程的示例詳解
本文主要介紹了一個(gè)Java多線程的例題,題目是:使用ThreadLocal管理一號(hào)和二號(hào)線程,分別存入100元,在三號(hào)線程中使用利用一號(hào)和二號(hào)的計(jì)算結(jié)果來(lái)算出賬戶的實(shí)際金額。感興趣的可以了解一下2022-09-09
SpringBoot詳解如何進(jìn)行整合Druid數(shù)據(jù)源
Druid是阿里開發(fā)的一款開源的數(shù)據(jù)源,被很多人認(rèn)為是Java語(yǔ)言中最好的數(shù)據(jù)庫(kù)連接池,本文主要介紹了SpringBoot整合Druid數(shù)據(jù)源的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
利用Kafka動(dòng)態(tài)調(diào)整topic分區(qū)partition
這篇文章主要介紹了利用Kafka動(dòng)態(tài)調(diào)整topic分區(qū)partition問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
SpringBoot集成Mybatis過(guò)程步驟圖解
這篇文章主要介紹了SpringBoot集成Mybatis過(guò)程步驟圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
springcloud項(xiàng)目占用內(nèi)存好幾個(gè)G導(dǎo)致服務(wù)器崩潰的問(wèn)題
這篇文章主要介紹了springcloud項(xiàng)目占用內(nèi)存好幾個(gè)G導(dǎo)致服務(wù)器崩潰的問(wèn)題,本文給大家分享解決方案供大家參考,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
SpringCloud整合Netty集群實(shí)現(xiàn)WebSocket的示例代碼
文章主要介紹了SpringCloud整合Netty集群實(shí)現(xiàn)WebSocket的相關(guān)內(nèi)容,包括服務(wù)注冊(cè)和發(fā)現(xiàn)中心的配置,如使用Nacos、CommandLineRunner啟動(dòng)Netty服務(wù)等,還介紹了通過(guò)Redis實(shí)現(xiàn)消息發(fā)布訂閱的機(jī)制,需要的朋友可以參考下2024-11-11
Linux下用java -jar運(yùn)行可執(zhí)行jar包的方法教程
這篇文章主要給大家介紹了在Linux下用java -jar運(yùn)行可執(zhí)行jar包的方法教程,文中介紹的非常詳細(xì),相信對(duì)大家的工作或者學(xué)習(xí)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-05-05

