Zookeeper+Kafka 高可用集群部署【保姆級(jí)教程】
Kafka 是一個(gè)消息隊(duì)列中間件,它可以結(jié)合 Flink、Spark、ELK、日志采集 等,構(gòu)建強(qiáng)大的實(shí)時(shí)數(shù)據(jù)處理平臺(tái)。
今天分享一下如何搭建一套zookeeper+Kafka的消息隊(duì)列集群。雖然Kafka在新版本已經(jīng)可以不通過zookeeper就可以實(shí)現(xiàn)高可用,但是企業(yè)中大多數(shù)還是zookeeper+Kafka這個(gè)黃金搭配。理論型的知識(shí)后續(xù)再展開講解,先將集群部署起來。
篇幅稍長,建議先收藏!

一、基礎(chǔ)環(huán)境準(zhǔn)備
1. 服務(wù)器規(guī)劃
建議準(zhǔn)備 3 臺(tái)服務(wù)器,做一個(gè)高可用集群。
節(jié)點(diǎn) | IP | 角色 | 操作系統(tǒng) |
node1 | 10.0.0.190 | Zookeeper + Kafka | RockyLinux 9.5 |
node2 | 10.0.0.191 | Zookeeper + Kafka | RockyLinux 9.5 |
node3 | 10.0.0.192 | Zookeeper + Kafka | RockyLinux 9.5 |
2. 環(huán)境依賴
三臺(tái)都需要操作:
(1) 修改主機(jī)名
# 節(jié)點(diǎn)1
hostnamectl set-hostname node1
# 節(jié)點(diǎn)2
hostnamectl set-hostname node2
# 節(jié)點(diǎn)3
hostnamectl set-hostname node3(2) 安裝 JDK 1.8+
下載jdk包:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
也可以直接yum安裝openjdk,更快速一點(diǎn)
# 將下載上傳三個(gè)服務(wù)器后解壓到/data盤
tar -xvf jdk-8u461-linux-x64.tar.gz -C /data配置環(huán)境變量:
vi /etc/profile在文件末尾添加下面內(nèi)容:
export JAVA_HOME=/data/jdk1.8.0_461
export JAVA_BIN=$JAVA_HOME/bin
export CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_BIN讓配置生效:
source /etc/profile
(3) 關(guān)閉防火墻
測試環(huán)境可關(guān)閉,生產(chǎn)需開放端口。
systemctl stop firewalld
systemctl disable firewalld(4) 配置主機(jī)名解析
cat >> /etc/hosts <<EOF
10.0.0.190 node1
10.0.0.191 node2
10.0.0.192 node3
EOF(5) 關(guān)閉SELinux
# 永久關(guān)閉
sed -i 's/enforcing/disabled/' /etc/selinux/config
# 臨時(shí)
setenforce 0二、部署 Zookeeper 集群
Kafka 依賴 Zookeeper 管理集群狀態(tài),所以需要先安裝 Zookeeper。可以先在一個(gè)節(jié)點(diǎn)下載,配置完復(fù)制過去就行
1. 下載并解壓(節(jié)點(diǎn)1操作)
# 下載,可以選擇合適的版本下載
wget https://downloads.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
# 解壓
tar -xvf apache-zookeeper-3.8.4-bin.tar.gz -C /data2. 配置 zoo.cfg
# 進(jìn)入配置文件目錄
cd /data/apache-zookeeper-3.8.4-bin/conf
# 復(fù)制參考配置文件
cp zoo_sample.cfg zoo.cfg
# 修改配置文件,主要修改下面兩項(xiàng)
dataDir=/data/zookeeper/data
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
參數(shù)解析:
- dataDir:存儲(chǔ)快照和 myid 文件的路徑。
- server.X:集群成員配置,其中
- 2888 端口:內(nèi)部通信端口, 與 Leader 通信
- 3888 端口:用于選舉 Leader
3. 拷貝到另外兩個(gè)節(jié)點(diǎn)
scp -r /data/apache-zookeeper-3.8.4-bin root@10.0.0.191:/data
scp -r /data/apache-zookeeper-3.8.4-bin root@10.0.0.192:/data4. 配置節(jié)點(diǎn) ID
# 每個(gè)節(jié)點(diǎn)新建文件夾
mkdir -p /data/zookeeper/data
# 節(jié)點(diǎn)1
echo 1 > /data/zookeeper/data/myid
# 節(jié)點(diǎn)2
echo 2 > /data/zookeeper/data/myid
# 節(jié)點(diǎn)3
echo 3 > /data/zookeeper/data/myid5. 配置環(huán)境變量
將zookeeper加入環(huán)境變量,方便后期啟動(dòng)。
vi /etc/profile
# 尾部添加
export ZOOKEEPER_HOME=/data/apache-zookeeper-3.8.4-bin
export PATH=$ZOOKEEPER_HOME/bin:$PATH
# 使配置文件生效
source /etc/profile6. 啟動(dòng) Zookeeper
zkServer.sh start
zkServer.sh status確認(rèn) 3 臺(tái)機(jī)器都正常啟動(dòng),其中兩臺(tái)為fllower,一臺(tái)為leader,則zookeeper集群安裝成功。

三、部署 Kafka 集群
1. 下載并解壓
跟zookeeper一樣,在節(jié)點(diǎn)1先下載,配置完復(fù)制到另外兩個(gè)節(jié)點(diǎn)
# 下載安裝包
wget https://downloads.apache.org/kafka/3.9.1/kafka_2.13-3.9.1.tgz
# 解壓到/data目錄
tar -xvf kafka_2.13-3.9.1.tgz -C /data2. 修改配置文件
進(jìn)入到安裝目錄,編輯配置文件server.properties
cd /data/kafka_2.13-3.9.1/config
vi server.properties修改下面信息
broker.id=1 # 不得重復(fù),整個(gè)集群中唯一
listeners=PLAINTEXT://10.0.0.190:9092 # 監(jiān)聽端口
log.dirs=/data/kafka/logs
zookeeper.cnotallow=node1:2181,node2:2181,node3:2181
num.partitinotallow=3參數(shù)解析:
- broker.id:Kafka Broker 唯一 ID。node1=1, node2=2, node3=3。
- listeners:服務(wù)監(jiān)聽地址和端口。需要換成真實(shí)的IP地址,每個(gè)節(jié)點(diǎn)填本機(jī)IP地址
- log.dirs:存儲(chǔ) Kafka 消息日志的目錄。建議掛載大容量磁盤。
- num.partitions:Topic 默認(rèn)分區(qū)數(shù),決定并行消費(fèi)能力。
- zookeeper.connect:連接zookeeper。
3. 配置拷貝到另外兩個(gè)節(jié)點(diǎn)
scp -r /data/kafka_2.13-3.9.1 root@10.0.0.191:/data
scp -r /data/kafka_2.13-3.9.1 root@10.0.0.192:/data注意:節(jié)點(diǎn)2和節(jié)點(diǎn)3需要修改broker.id和linsteners兩個(gè)配置

新建日志目錄(每個(gè)節(jié)點(diǎn)操作)
mkdir -p /data/kafka/logs4. 配置環(huán)境變量
將kafka加入環(huán)境變量,方便后期啟動(dòng)。三個(gè)節(jié)點(diǎn)都配置。
vi /etc/profile
# 尾部添加
export KAFKA_HOME=/data/kafka_2.13-3.9.1
export PATH=$KAFKA_HOME/bin:$PATH
# 使配置文件生效
source /etc/profile5. 啟動(dòng) Kafka
kafka-server-start.sh -daemon /data/kafka_2.13-3.9.1/config/server.properties三臺(tái)機(jī)器依次啟動(dòng) Kafka。可以看到kafka進(jìn)程已正常啟動(dòng)。

四、測試驗(yàn)證
1. 創(chuàng)建 Topic
kafka-topics.sh --create --topic test \
--bootstrap-server node1:9092,node2:9092,node3:9092 \
--partitions 3 --replication-factor 3參數(shù)解析:
- --partitions 3:分區(qū)數(shù),決定并發(fā)度。
- --replication-factor 3:副本數(shù),保證容錯(cuò)能力。
2. 查看 Topic
kafka-topics.sh --list --bootstrap-server node1:9092
3. 生產(chǎn)消息
kafka-console-producer.sh --broker-list node1:9092 --topic test
> hello lige
> hello kafka4. 消費(fèi)消息
kafka-console-consumer.sh --bootstrap-server node2:9092 --topic test --from-beginning
至此,集群搭建完成。


































