Kafka4.0KRaft模式的“秒級啟動”,是不是很爽?但真正的考驗(yàn)現(xiàn)在才開始!今天,咱們就來點(diǎn)硬核的:親手搭建一個三節(jié)點(diǎn)的、準(zhǔn)生產(chǎn)級的Kafka4.0KRaft集群!
準(zhǔn)備好了嗎?系好安全帶,發(fā)車!
準(zhǔn)備工作:三臺服務(wù)器
在生產(chǎn)環(huán)境中,高可用是基本要求。我們將搭建一個包含3個節(jié)點(diǎn)的集群,這樣即使掛掉一臺,服務(wù)依然堅(jiān)挺。
服務(wù)器:3臺Linux服務(wù)器(虛擬機(jī)或物理機(jī)都行)kafka-1(IP:192.168.1.11)kafka-2(IP:192.168.1.12)kafka-3(IP:192.168.1.13)
軟件:OpenJDK11或更高版本
Kafka版本:當(dāng)然是最新的4.0.0!
運(yùn)維避坑指南#1:確保三臺服務(wù)器之間網(wǎng)絡(luò)互通,并且防火墻開放了Kafka需要的端口(默認(rèn)是9092和9093)。網(wǎng)絡(luò)問題是集群搭建中最常見的“攔路虎”!
第一步:下載并解壓Kafka
在所有三臺服務(wù)器上執(zhí)行以下操作:
#下載Kafka4.0.0wgethttps://downloads.apache.org/kafka/4.0.0/kafka_2.13-4.0.0.tgz#解壓tar-xzfkafka_2.13-4.0.0.tgzcdkafka_2.13-4.0.0
第二步:生成集群ID
KRaft模式需要一個唯一的集群ID。我們只需要在一臺服務(wù)器上生成它,然后所有節(jié)點(diǎn)共用。
#生成一個唯一的集群IDKAFKA_CLUSTER_ID="$(bin/kafka-storage.shrandom-uuid)"echo"你的集群ID是:$KAFKA_CLUSTER_ID"
記下這個ID,比如rQ8aQ9z1Tj-mN9yZ_wXb0w,我們馬上會用到。
第三步:配置server.properties(核心中的核心!)
這是最關(guān)鍵的一步!我們需要為每個節(jié)點(diǎn)創(chuàng)建獨(dú)立的配置文件。進(jìn)入config/kraft/目錄,這里有官方的模板。我們以kafka-1為例進(jìn)行修改:
#進(jìn)入配置目錄cdconfig/kraft/#復(fù)制一份模板進(jìn)行修改cpserver.propertiesserver-1.properties
打開server-1.properties,修改以下核心配置:
#【關(guān)鍵】節(jié)點(diǎn)角色:我們讓每個節(jié)點(diǎn)都既是broker也是controllerprocess.roles=broker,controller#【關(guān)鍵】節(jié)點(diǎn)ID,每個節(jié)點(diǎn)必須唯一!#kafka-1設(shè)置為1,kafka-2設(shè)置為2,以此類推node.id=1#【關(guān)鍵】Controller投票節(jié)點(diǎn)列表#把所有Controller節(jié)點(diǎn)的node.id和IP:端口都列出來controller.quorum.voters=1@192.168.1.11:9093,2@192.168.1.12:9093,3@192.168.1.13:9093#【關(guān)鍵】監(jiān)聽器配置#broker監(jiān)聽來自客戶端的連接,controller監(jiān)聽內(nèi)部Raft協(xié)議的連接listeners=PLAINTEXT://:9092,CONTROLLER://:9093#【關(guān)鍵】廣播給客戶端的地址#必須是客戶端能訪問到的地址!advertised.listeners=PLAINTEXT://192.168.1.11:9092#日志存儲目錄,建議使用獨(dú)立的高性能磁盤log.dirs=/var/lib/kafka/data
運(yùn)維避坑指南#2:advertised.listeners是新手的噩夢!如果你發(fā)現(xiàn)客戶端連接不上,99%是這里配錯了。它必須是你的生產(chǎn)者/消費(fèi)者能訪問到的IP或域名。如果是云服務(wù)器,這里通常要配置成公網(wǎng)IP。
為kafka-2和kafka-3創(chuàng)建server-2.properties和server-3.properties,內(nèi)容大部分相同,只需修改兩處:
node.id分別改為2和3。
advertised.listeners的IP分別改為192.168.1.12和192.168.1.13。
第四步:格式化存儲目錄
在所有三臺服務(wù)器上,使用我們之前生成的集群ID來格式化存儲目錄。
在kafka-1上執(zhí)行:
bin/kafka-storage.shformat-t-cconfig/kraft/server-1.properties
在kafka-2上執(zhí)行:
bin/kafka-storage.shformat-t-cconfig/kraft/server-2.properties
在kafka-3上執(zhí)行:
bin/kafka-storage.shformat-t-cconfig/kraft/server-3.properties
看到Formatting...的日志就表示成功了。
第五步:啟動集群
萬事俱備,只欠東風(fēng)!在所有三臺服務(wù)器上啟動Kafka服務(wù)。
在kafka-1上:
bin/kafka-server-start.sh-daemonconfig/kraft/server-1.properties
在kafka-2上:
bin/kafka-server-start.sh-daemonconfig/kraft/server-2.properties
在kafka-3上:
bin/kafka-server-start.sh-daemonconfig/kraft/server-3.properties
-daemon參數(shù)讓它在后臺運(yùn)行。
第六步:驗(yàn)證集群
怎么知道我們的集群是不是成功了?創(chuàng)建一個Topic試試!
在任意一臺Kafka服務(wù)器上執(zhí)行:
#創(chuàng)建一個名為"hello-kraft"的Topic,3個分區(qū),3個副本bin/kafka-topics.sh--create\--topichello-kraft\--bootstrap-server192.168.1.11:9092\--partitions3\--replication-factor3#查看Topic詳情bin/kafka-topics.sh--describe\--topichello-kraft\--bootstrap-server192.168.1.11:9092
如果你能看到Topic的分區(qū)信息,并且Leader和Replicas分布在不同的節(jié)點(diǎn)上,那么恭喜你!你的第一個生產(chǎn)級Kafka4.0KRaft集群已經(jīng)成功上線!
免責(zé)聲明:本文內(nèi)容由開放的智能模型自動生成,僅供參考。