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

一、基礎(chǔ)環(huán)境準(zhǔn)備
1. 服務(wù)器規(guī)劃
建議準(zhǔn)備 3 臺服務(wù)器,做一個高可用集群。
節(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)境依賴
三臺都需要操作:
(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)
# 將下載上傳三個服務(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  
# 臨時
setenforce 0二、部署 Zookeeper 集群
Kafka 依賴 Zookeeper 管理集群狀態(tài),所以需要先安裝 Zookeeper。可以先在一個節(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:存儲快照和 myid 文件的路徑。
 - server.X:集群成員配置,其中
 - 2888 端口:內(nèi)部通信端口, 與 Leader 通信
 - 3888 端口:用于選舉 Leader
 
3. 拷貝到另外兩個節(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
# 每個節(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)境變量,方便后期啟動。
vi /etc/profile 
# 尾部添加
export ZOOKEEPER_HOME=/data/apache-zookeeper-3.8.4-bin
export PATH=$ZOOKEEPER_HOME/bin:$PATH
# 使配置文件生效
source /etc/profile6. 啟動 Zookeeper
zkServer.sh start
zkServer.sh status確認(rèn) 3 臺機(jī)器都正常啟動,其中兩臺為fllower,一臺為leader,則zookeeper集群安裝成功。

三、部署 Kafka 集群
1. 下載并解壓
跟zookeeper一樣,在節(jié)點(diǎn)1先下載,配置完復(fù)制到另外兩個節(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ù),整個集群中唯一
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地址,每個節(jié)點(diǎn)填本機(jī)IP地址
 - log.dirs:存儲 Kafka 消息日志的目錄。建議掛載大容量磁盤。
 - num.partitions:Topic 默認(rèn)分區(qū)數(shù),決定并行消費(fèi)能力。
 - zookeeper.connect:連接zookeeper。
 
3. 配置拷貝到另外兩個節(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兩個配置

新建日志目錄(每個節(jié)點(diǎn)操作)
mkdir -p /data/kafka/logs4. 配置環(huán)境變量
將kafka加入環(huán)境變量,方便后期啟動。三個節(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. 啟動 Kafka
kafka-server-start.sh -daemon /data/kafka_2.13-3.9.1/config/server.properties三臺機(jī)器依次啟動 Kafka??梢钥吹絢afka進(jìn)程已正常啟動。

四、測試驗(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ù),保證容錯能力。
 
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
至此,集群搭建完成。















 
 
 















 
 
 
 