Kafka+Zookeeper叢集搭建
環境準備
-
Kafka
版本:kafka_2.10-0.10.2.0(2.10表示Scala版本 0.10.2.0表示Kafka版本)
官方下載地址:ofollow,noindex">http://kafka.apache.org/downloads -
Zookeeper
版本:zookeeper-3.4.13
官方下載地址:http://zookeeper.apache.org/releases.html -
JDK
版本:jdk1.8.0_131
官方下載地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html -
虛擬機器
A:192.168.1.1
B:192.168.1.2
C:192.168.1.3
安裝步驟
一:配置JDK和環境變數
開啟當前使用者環境變數檔案
vi ~/.bash_profile // 這裡以當前使用者為例
配置當前使用者環境變數
export JAVA_HOME=/home/work/services/jdk1.8.0_131 export PATH=${JAVA_HOME}/bin:${PATH}
重新載入當前使用者環境變數檔案
source ~/.bash_profile
驗證
java -version
二:搭建Zookeeper叢集
以機器A為例
解壓包
cd /home/work/dcs // 切換到下載目錄 tar -zxvf zookeeper-3.4.13.tar.gz // 解壓包
建立日誌檔案目錄和資料檔案目錄
mkdir ./zookeeper-3.4.13/logs // 日誌存放目錄 mkdir ./zookeeper-3.4.13/data // 資料存放目錄
開啟配置檔案
cd zookeeper-3.4.13/conf // 切換到配置目錄 cp zoo_sample.cfg zoo.cfg // 根據樣例配置檔案複製出一個新的配置檔案 vi zoo.cfg
修改配置檔案
// 修改部分 dataDir=/home/work/dcs/zookeeper-3.4.13/data // 修改資料目錄 // 新增部分 dataLogDir=/home/work/dcs/zookeeper-3.4.13/logs // 增加日誌目錄配置 server.0=192.168.1.1:2888:3888 server.1=192.168.1.2:2888:3888 server.2=192.168.1.3:2888:3888
新建myid檔案
cd zookeeper-3.4.13/data // 切換到data目錄 echo "0" > myid // id內容與上方server.*中的*對應
啟動和關閉
// 啟動 ./bin/zkServer.sh start // 啟動 // 關閉 ./bin/zkServer.sh stop // 關閉
機器B、C配置和A一樣
三:搭建Kafka叢集
以機器A為例
解壓包
cd /home/work/dcs // 切換到下載目錄 tar -zxvf kafka_2.10-0.10.2.0.tgz // 解壓包
建立資料日誌檔案目錄
mkdir ./kafka_2.10-0.10.2.0/data // 資料日誌存放目錄
開啟配置檔案
cd kafka_2.10-0.10.2.0/config // 切換到配置檔案目錄 vi server.properties // 開啟配置檔案
修改配置檔案
// 修改部分(A:192.168.1.1) log.dirs=/home/work/dcs/kafka_2.10-0.10.2.0/data // 修改資料日誌目錄 broker.id=0 // 叢集中保證唯一 listeners=PLAINTEXT://192.168.1.1:9092 advertised.listeners=PLAINTEXT://192.168.1.1:9092 zookeeper.connect=192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 // zookeeper的地址
// 修改部分(B:192.168.1.2) log.dirs=/home/work/dcs/kafka_2.10-0.10.2.0/data // 修改資料日誌目錄 broker.id=1 // 叢集中保證唯一 listeners=PLAINTEXT://192.168.1.2:9092 advertised.listeners=PLAINTEXT://192.168.1.2:9092 zookeeper.connect=192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 // zookeeper的地址
// 修改部分(C:192.168.1.3) log.dirs=/home/work/dcs/kafka_2.10-0.10.2.0/data // 修改資料日誌目錄 broker.id=2 // 叢集中保證唯一 listeners=PLAINTEXT://192.168.1.3:9092 advertised.listeners=PLAINTEXT://192.168.1.3:9092 zookeeper.connect=192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 // zookeeper的地址
啟動和關閉
// 啟動 ./bin/kafka-server-start.sh config/server.properties // 啟動-常規模式 nohup ./bin/kafka-server-start.sh config/server.properties > /dev/null 2>&1 & // 啟動-守護程序模式 // 關閉 ./bin/kafka-server-stop.sh // 關閉
機器B、C配置和A一樣
驗證
jps // 檢驗程序是否存在
四:測試
// 建立topic sh kafka-topics.sh --create --zookeeper 192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 --replication-factor 1 --partitions 3 --topic test // 查詢topic list sh kafka-topics.sh --zookeeper 192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 --list // 查詢某topic詳情 sh kafka-topics.sh --zookeeper 10.101.22.182:8081,10.101.22.182:8082,10.101.22.182:8083 --describe --topic test // 模擬客戶端生產 bin/kafka-console-producer.sh --broker-list 192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 --topic test // 模擬客戶端訂閱 sh kafka-console-consumer.sh --zookeeper 192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 --topic test --from-beginning // 刪除topic sh kafka-topics.sh --delete --zookeeper 192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 --topic test
五:注意事項
- 啟動Zookeeper之前,確保機器安裝了JDK
- 開啟Kafka之前必須啟動所有的Zookeeper
- 啟動Kafka叢集時,最好使用守護程序模式,否則終端退出時,程式也會自動關閉