本文首發于Ressmix個人站點:https://www.tpvlog.com
由于後續的應用服務依賴于分布式消息中間件和Zookeeper,是以本章我将先帶領大家搭建Zookeeper叢集和Kafka叢集。
本章搭建的Zookeeper和Kafka叢集都是3個節點,部署在ressmix-dsf01、ressmix-dsf02、ressmix-dsf03這三台機器上。
一、Zookeeper叢集
由于Kafka依賴于Zookeeper,是以我們先要搭建一個Zookeeper叢集。關于Kafka的基本架構,不了解的讀者可以先去看看我的分布式理論篇中的關于消息中間件的文章。下面所有的操作在ressmix-dsf01這台機器上進行,剩下兩台的操作類比進行。
1.1 安裝包下載下傳
首先,我們去Apache Zookeeper的官網下載下傳最新穩定版的Zookeeper安裝包,我這邊最新的是
apache-zookeeper-3.6.1-bin.tar.gz
,然後将安裝包拷貝到
/usr/local
目錄下,執行
tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz
解壓縮。
注意:Zookeeper 3.6+依賴JDK1.8+,請讀者自行安裝并配置Java環境變量。
1.2 配置環境變量
然後執行
source ~/.bashrc
立馬生效。
1.3 修改ZK配置
進入Zookeeper根目錄的
conf
子目錄中,執行:
然後修改
zoo.cfg
,注意下面的
server.A=B:C:D
, A 表示這個是伺服器的編号,B是這個伺服器的 ip 位址,C是Leader選舉的端口,D是Zookeeper伺服器之間的通信端口:
建立資料目錄:
1.4 啟動Zookeeper
分别在三台伺服器上執行以下指令,啟動Zookeeper:
然後檢查下啟動後的狀态:
發現ressmix-dsf03為ZK的leader節點,其餘兩台為follower節點:
然後通過
jps
指令檢查下三個節點是否都有QuromPeerMain程序:
1.5 設定開機自啟
我們也可以将Zookeeper配置成開機自啟動,我這裡給出配置示例供大家參考:
Zookeeper檔案的内容如下,注意JDK路徑和Zookeeper安裝路徑:
然後添加到開機自啟動:
之後我們就可以通過如下指令啟停Zookeeper了:
二、Kafka叢集
首先,我們在Apache Kafka的官網下載下傳最新的Kafka,我這裡最新的版本是
2.12-2.5.0
。這裡解釋下Kafka的版本号命名機制:前面的版本号是編譯Kafka源代碼的Scala編譯器版本(Kafka源碼采用Scala編寫),後面的版本号才是Kafka真正的版本号。
下面所有的操作在ressmix-dsf01這台機器上進行,剩下兩台的操作類比進行。
2.1 配置Kafka
首先,我将壓縮包放到
/usr/local
目錄下,執行
tar -xzf kafka_2.12-2.5.0.tgz
解壓縮。然後修改Kafka的配置檔案
/usr/local/kafka_2.12-2.5.0/config/server.properties
:
2.2 啟動Kafka
配置完成後,我們可以通過以下指令啟動Kafka:
我們可以通過檢視
nohup.out
檢視啟動日志:
然後通過
jps
檢查下Kafka程序狀态:
2.3 測試Kafka
接着,我們往Kafka叢集裡寫入一些資料,來測試叢集的基本功能是否正常。
建立Topic
首先,我們建立一個測試Topic——test:
參數說明:
- --create:建立一個topic;
- --topic:指定topic的名稱;
- --zookeeper: 指定zookeeper叢集的主機清單;
- --replication-factor:指定這個topic的副本數;
- --partitions:指定該topic的分區數;
建立Producer
發送一些消息:
建立Consumer
會立即消費到消息:
2.4 設定開機自啟
我們也可以将Kafka配置成開機自啟動,我這裡給出配置示例供大家參考:
Kafka檔案的内容如下,注意JDK路徑和Zookeeper安裝路徑:
然後添加到開機自啟動:
之後我們就可以通過如下指令啟停Kafka了:
三、總結
本章,我帶領大家搭建了一個3節點的Kafka和Zookeeper叢集,更多關于Kafka和Zookeeper的操作,童鞋們可以參考Apache官網的API文檔和使用手冊。