天天看點

kafka叢集管理工具kafka-manager部署安裝一、kafka-manager 簡介二、安裝三、測試 kafka-mamager

一、kafka-manager 簡介

為了簡化開發者和服務工程師維護Kafka叢集的工作,yahoo建構了一個基于Web的Kafka叢集管理工具,叫做 Kafka Manager。這個管理工具可以很容易地發現分布在叢集中的哪些topic分布不均勻,或者是分區在整個叢集分布不均勻的的情況。它支援管理多個叢集、選擇副本、副本重新配置設定以及建立Topic。同時,這個管理工具也是一個非常好的可以快速浏覽這個叢集的工具,有如下功能:

  1. 管理多個kafka叢集
  2. 便捷的檢查kafka叢集狀态(topics,brokers,備份分布情況,分區分布情況)
  3. 選擇你要運作的副本
  4. 基于目前分區狀況進行
  5. 可以選擇topic配置并建立topic(0.8.1.1和0.8.2的配置不同)
  6. 删除topic(隻支援0.8.2以上的版本并且要在broker配置中設定delete.topic.enable=true)
  7. Topic list會指明哪些topic被删除(在0.8.2以上版本适用)
  8. 為已存在的topic增加分區
  9. 為已存在的topic更新配置
  10. 在多個topic上批量重分區
  11. 在多個topic上批量重分區(可選partition broker位置)

kafka-manager 項目位址:https://github.com/yahoo/kafka-manager

二、安裝

1. 環境要求

  • Kafka 0.8.1.1 or 0.8.2.* or 0.9.0.*
  • Java 8+
  • zookeeper 2+

本次實驗所用的環境是kafka-0.9.1.0 , jdk-1.8.0_60 , zookeeper-3.4.7,下載下傳解壓安裝運作:

# start zookeeper
cd /usr/local/zookeeper-3.4.7
./bin/zkServer.sh start
#
# start kafka
cd /usr/local/kafka_2.11-0.9.0.0
./bin/kafka-server-start.sh ./config/server.properties 
           

2. 下載下傳安裝 kafka-manager

下載下傳編譯

git clone https://github.com/yahoo/kafka-manager
cd kafka-manager
# 因為要編譯。是以下面這步操作要等很久
sbt clean distcd target/ 
# 在target目錄下我們可以看到 kafka-manager
kafka-manager-1.3.0.8.zip
           

tips:使用sbt編譯打包的時候時間可能會比較長,如果你hang在Loading project definition from kafka-manager/project

可以修改project/plugins.sbt中的LogLevel參數将logLevel := Level.Warn修改為logLevel := Level.Debug 。

或者,簡單點直接下載下傳編譯好的安裝包,下面給出網友編譯好的 kafka-manager-1.3.3.7.zip 的網盤連結:https://pan.baidu.com/s/1qYifoa4 密碼:el4o

解壓

unzip kafka-manager-1.3.0.8.zip -d /usr/local
cd /usr/local/kafka-manager-1.3.0.8
           

修改配置

編輯 conf/application.properties 檔案,修改 Zookeeper 叢集位址。

# 如果zk是叢集,這裡填寫多個zk位址
kafka-manager.zkhosts="localhost:2181"
           

啟動

bin/kafka-manager
           

kafka-manager 預設的端口是9000,可通過 -Dhttp.port,指定端口; -Dconfig.file=conf/application.conf指定配置檔案:

nohup bin/kafka-manager -Dconfig.file=conf/application.conf -Dhttp.port=8080 &
           

我們用浏覽器通路試試,界面非常簡潔。

kafka叢集管理工具kafka-manager部署安裝一、kafka-manager 簡介二、安裝三、測試 kafka-mamager

這樣便安裝成功了。

三、測試 kafka-mamager

建立 Cluster

輸入要監控的Kafka叢集的名稱及Zookeeper叢集的位址。

kafka叢集管理工具kafka-manager部署安裝一、kafka-manager 簡介二、安裝三、測試 kafka-mamager

建好之後看到如下界面。

kafka叢集管理工具kafka-manager部署安裝一、kafka-manager 簡介二、安裝三、測試 kafka-mamager

在儲存Cluster時,若勾選了啟用 JMX 投票,如果 kafka 沒有設定 JMX_PORT, kafka manager 日志會出現如下錯誤資訊:

[error] k.m.a.c.BrokerViewCacheActor - Failed to get broker topic segment metrics for BrokerIdentity(1,192.168.118.15,9092,-1,false)
java.lang.IllegalArgumentException: requirement failed: No jmx port but jmx polling enabled!
           

解決辦法:

  修改 kafka-server-start.sh,增加 JMX 的端口資訊。

kafka叢集管理工具kafka-manager部署安裝一、kafka-manager 簡介二、安裝三、測試 kafka-mamager

修改kafka-run-class.sh,增加綠色部分,注意對應的 ip位址。

kafka叢集管理工具kafka-manager部署安裝一、kafka-manager 簡介二、安裝三、測試 kafka-mamager

三個節點都需要修改,修改完畢記得重新開機 kafka 服務。

建立topic

填寫分區和副本個數。

kafka叢集管理工具kafka-manager部署安裝一、kafka-manager 簡介二、安裝三、測試 kafka-mamager

檢視topic

在 Kafka-manager 中看到的topic如下:

kafka叢集管理工具kafka-manager部署安裝一、kafka-manager 簡介二、安裝三、測試 kafka-mamager

在伺服器上通過kafka-topics.sh指令查詢到的topic如下:

# bin/kafka-topics.sh --list --zookeeper localhost:2181
           
kafka叢集管理工具kafka-manager部署安裝一、kafka-manager 簡介二、安裝三、測試 kafka-mamager

啟動 consumer

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic test-a
           

啟動 producer

bin/kafka-console-producer.sh --broker-list 10.26.236.43:9092 --topic test-a
           

此時, 看到的Broker清單如下。

kafka叢集管理工具kafka-manager部署安裝一、kafka-manager 簡介二、安裝三、測試 kafka-mamager

輸入 message。

kafka叢集管理工具kafka-manager部署安裝一、kafka-manager 簡介二、安裝三、測試 kafka-mamager

可以看到 consumer 已經收到消息。

kafka叢集管理工具kafka-manager部署安裝一、kafka-manager 簡介二、安裝三、測試 kafka-mamager

到這裡,我們的kafka-manager已搭建測試成功,它的其他用法大家可自行測試。