在前兩篇文章《大數據學習初級入門教程(三) —— Kafka 2.2.0 單節點的安裝、啓動和測試》和《大數據學習初級入門教程(四) —— Kafka 2.2.0 僞分佈的安裝、配置、啓動和測試》中,已經對 Kafka 集羣的單節點安裝和僞分佈式集羣安裝做了安裝、配置、啓動和測試,這篇文章主要對 Kafka 完全分佈式集羣安裝進行詳細的圖文說明。
在沒發表文章的這段時間,Kafka 最新版本已經從 2.2.0 升級到 2.3.0,所以這裏也以官網最新的版本進行集羣搭建。
一、環境說明
服務器:
CentOS release 6.9 (Final) x64,節點主機名分別爲:node19、node18、node11
Java 環境:
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)
Zookeeper 集羣:
zookeeper-3.4.6,節點分別爲:node19、node18、node11
Kafka 版本:
kafka_2.11-2.3.0.tgz
二、下載安裝包並上傳到測試服務器
下載地址爲官網地址:https://www.apache.org/dyn/closer.cgi?path=/kafka/2.3.0/kafka_2.11-2.3.0.tgz。
下載後上傳到一個節點服務器,這裏上傳到 node19 機器的路徑:/root 下。
三、解壓安裝包
# tar -xzvf kafka_2.11-2.3.0.tgz
四、移動目錄到部署集羣的目錄
一般安裝軟件會安裝在機器的 /usr、/opt 等目錄下,這裏我的集羣一般都安裝在 /home 下,所以把 Kafka 安裝目錄移動到 /home 下。
# mv kafka_2.11-2.3.0 /home/
# cd /home/kafka_2.11-2.3.0
五、啓動 ZooKeeper 集羣服務
Kafka 使用 ZooKeeper,如果 ZooKeeper 服務未啓動,則需要先啓動。在前兩篇 Kafka 安裝中,我們用的是 Kafka 安裝包中內含的一個單節點 Zookeeper 集羣,這裏我們直接用已經在服務器上安裝好的 Zookeeper 集羣,我這裏的版本是 zookeeper-3.4.6,具體 Zookeeper 的安裝及啓動測試等,參考其它一些相關文章。
# zkServer.sh start
JMX enabled by default
Using config: /home/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
# zkServer.sh status
JMX enabled by default
Using config: /home/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: leader
六、修改 Kafka 配置中 Zookeeper 相關的配置
修改文件 /home/kafka_2.11-2.3.0/config/server.properties 文件,修改如下:
Kafka 相關配置:
Zookeeper 集羣配置:
七、啓動 Kafka 服務
ZooKeeper 服務啓動後,可以啓動 Kafka 服務了。先啓動這一個機器節點上的 Kafka,查看是否能夠啓動正常。
# pwd
/home/kafka_2.11-2.3.0
# bin/kafka-server-start.sh config/server.properties
啓動信息如下:
則說明該節點 Kafka 啓動正常。
八、其它節點安裝 Kafka
停掉已經啓動的 Kafka 節點,把上一步中安裝的 Kafka 包,直接拷貝到其它要安裝 Kafka 集羣的機器節點,比如這裏拷貝到 node18 和 node11 上。
# scp -r kafka_2.11-2.3.0/ root@node18:/home/
# scp -r kafka_2.11-2.3.0/ root@node11:/home/
在 node18 和 node11 上創建日誌目錄,修改 Kafka 的配置文件,修改方式和第四步類似,只是 broker.id 分別爲 2 和 3。
九、啓動集羣
依次啓動 Kafka 各個節點上的 Kafka 服務,並查看日誌是否啓用成功。測試 Kafka 集羣的步驟,參考前兩篇文章,比如創建 Topic、生產數據、消費數據等。
十、腳本啓動集羣
由於一個個節點啓動集羣很麻煩,所以這裏在一個節點上創建腳本,每次運行該腳本,所有節點的 Kafka 服務依次啓動,當然前提是存放腳本的機器要到其它機器免密。
腳本 kafka_start.sh 內容如下:
#!/bin/bash
echo "Kafka 集羣啓動開始..."
for host in node19 node18 node11
do
echo "--------------------------------"
echo $host "節點 kafka 啓動開始..."
ssh $host "source /root/.bash_profile; kafka-server-start.sh /home/kafka_2.11-2.3.0/config/server.properties >/dev/null 2>&1 &"
echo $host "節點 kafka 啓動結束."
done
echo "Kafka 集羣啓動結束."
腳本 kafka_stop.sh 內容如下:
#!/bin/bash
echo "Kafka 集羣停止開始..."
for host in node19 node18 node11
do
echo "--------------------------------"
echo $host "節點 kafka 停止開始..."
ssh $host "source /root/.bash_profile; kafka-server-stop.sh >/dev/null 2>&1 &"
echo $host "節點 kafka 停止結束."
done
echo "Kafka 集羣停止結束."
Kafka 集羣的安裝就成功了,動手試驗一下吧。