Linux下搭建kafka和zk偽分散式叢集【附詳細步驟】
前言
Kafka使用zk的分散式協調服務,將生產者,消費者,訊息儲存(broker,用於儲存資訊,訊息讀寫等)結合在一起。同時藉助zk,kafka能夠將生產者,消費者和broker在內的所有元件在無狀態的條件下建立起生產者和消費者的訂閱關係,實現生產者的負載均衡。kafka搭載zk,通常有3種模式:
- 單機模式,只安裝部署一個server。
- 偽分散式叢集模式,一臺機器分別安裝部署3個zk和kafka節點server。
- 分散式叢集模式,3臺以上機器(以3臺為例),3臺機器上分別安裝部署3個zk和kafka節點server。
本文僅以第二種:偽分散式叢集模式講解,安裝部署為分散式叢集的詳細步驟。
一、環境和版本:
- linux
- Jdk 1.8
- Zookeeper-3.4.10
- Kafka-2.11
1、下載並安裝jdk1.8 ,此項略。
2、配置jdk環境變數
與windows環境下配置環境變數不同,Linux下非常簡單:在profile中進行修改配置,首先的etc的目錄下找到該檔案,右擊編輯,在檔案的最末尾住新增如下的文字:
Export JAVA_HOME=/usr/local/java/jdk1.8.0_11 Export JRE_HOME=/usr/local/java/jdk1.8.0_11/jre Export PATH=$PATH:/usr/local/java/jdk1.8.0_11/bin Export CLASSPATH=./:/usr/local/java/jdk1.8.0_11/lib:/usr/local/java/jdk1.8.0_11/jre/lib
如圖所示:
注:輸入wq! ,儲存關閉後:再重新載入下剛剛編輯的profile檔案。
命令:source profile (就在當前路徑下載入)
3、接著檢測是否安裝成功,Java –version如下:
如此,則安裝並配置成功。
二、安裝zookeeper偽叢集
1、官方下載zookeeper安裝包
2、建立叢集工作目錄並配置
- 先建立三個server資料夾用來解壓zookeeper檔案(3個server分別:server1、server2、server3)
- 分別解壓檔案到3個server資料夾下後,再在相應server資料夾下建立data和dataLog資料夾用來存放各伺服器的日誌和資料資訊等。
- 修改配置資訊
把/home/zookeeper/server*/zookeeper-3.4.10-alpha/conf/ 資料夾下的zoo_sample.cfg檔案重新命名為zoo.cfg。
分別在server1/conf/、server2/conf/、server3/conf/目錄下的zoo.cfg檔案。
主要修改如下圖中資訊:
先分別在3個server的data資料夾下建立myid檔案(不是資料夾),用命令: touch myid建立。
然後分別在server1 、server2、server3的myid檔案中編輯分別輸入:1、2、3。代表各個伺服器的編號。(是分別輸入1 2 3)
需要注意:
1.這一點很重要,以為設定好了之前etc/pforile檔案中的java_home環境變數就萬事大吉了,結果在啟動zookeeper的server時會報錯:
Error: JAVA_HOME is not set and java could not be found in PATH.
2.初一看以為是java_home環境變數沒設定好,但之前檢測過java –version本地jdk是安裝並配置成功了的。所以排除這個原因,經過網上查詢資料發現:在/home/zookeeper/server*/zookeeper-3.5.2-alpha/bin 下的zkEnv.sh檔案中存在報錯內容,所以手動在這個錯誤內容前面新增java_home配置(可能系統會找不到profile檔案中的java_home配置)
如出現上述報錯,則需配置:
啟動服務
-
接下來,分別啟動zookeeper(一下簡稱zk)3個server:分別到/home/zookeeper/server*/zookeeper-3.4.10/bin 3個server的這個目錄下,命令 ./ zkServer.sh start 啟動server
出現如上截圖資訊,表明啟動成功。3個server同樣操作啟動服務。
- 客戶端連線和狀態檢查
客戶端連線
bin/zkCli.sh -server 127.0.0.1:2181
檢視服務啟動狀態
zkServer.sh status
停止服務
命令 ./ zkServer.sh stop 停止server
三、kafka安裝部署
1、解壓和配置
1. 下載好壓縮包kafka_2.11-0.10.2.1.tgz,解壓到目錄:
/home/kafka/server/ 下面。
2. 到解壓後的kafka_2.11-0.10.2.1目錄下,/config下有個 server.properties 複製3份:分別作為3個server的配置檔案server1.properties server2.properties server3.properties
3. 修改server1.properties (3個都要,可先修改再複製)檔案的配置內容,主要有:
按照圖中資訊修改後(沒有的要新增),server.properties檔案就修改完畢了。
注意:這裡的127.0.0.1建議修改為各伺服器IP地址(如:17*.20.4.*0開發機)
2、注意事項
本文是講述安裝部署zk和kafka的偽分散式叢集,kafka叢集的啟動是在zookeeper的基礎上啟動並執行的。因此,上述配置的埠(2181/2182/2183)在zookeeper中3個server中的zoo.cfg的clientPort埠分別對應一致。
3、啟動服務
1.執行命令,啟動kafka偽叢集
2.到 ../bin 目錄下執行命令 ./kafka-server-start.sh ../config/server1.properties
3個server都要執行 分別 ./kafka-server-start.sh ../config/server2.propertie
./kafka-server-start.sh ../config/server3.propertie
3.如下:
一直拉到最後,看到started字樣,則kafka連線zookeeper並啟動成功。
到此:kafka偽叢集搭建成功
4、停止服務
../bin 目錄下執行命令 ./ kafka-server-stop.sh ../config/server1.properties
還有簡單方法,直接在執行的介面隨便輸入停止服務。
至此:Linux環境下,搭建kafka+zk偽分散式叢集服務完畢。這種模式一般為我們開發和測試環境所需,用來開發測試程式。如需要搭建分散式叢集服務(正式環境上),安裝部署步驟基本一樣,只是分別在3臺機器上安裝部署kafka和zk即可。另單機模式就不贅述了。
關注個人技術公眾號:nick_coding1024
不定期分享最新前沿技術框架和bat大廠常用技術等,加群不定期分享行業內大牛直播講課以及獲得內退一線網際網路公司機會。