天天看點

Kafka Eagle分布式模式

1.概述

最近有同學留言,Kafka Eagle的分布式模式功能怎麼使用,如何部署安裝?今天筆者就為大家來詳細介紹一下Kafka Eagle的分布式模式功能的安裝和使用。

2.内容

首先,這裡我們需要說明一下,Kafka Eagle已經更名為EFAK(Eagle For Apache Kafka)。感謝Apache Kafka PMC的認可,EFAK将繼續提供和開發新功能,來滿足Kafka叢集和應用的相關監控和管理功能。

2.1 背景

當我們管理Kafka多叢集或者一個規模較大的Kafka叢集時,單機模式的EFAK部署時,運作的多線程任務,相關消費者、Topic、生産者、Broker & Zookeeper的監控名額等内容排程時,部署EFAK的伺服器如果配置較低,會造成很大的負載,對CPU的負載會很高。為了解決這類問題,EFAK開發了分布式模式的部署,可由多個低配置的伺服器來元件一個EFAK叢集。來對Kafka多叢集進行監控和管理。

2.2 基礎環境

部署EFAK所需要的基礎環境如下:

2.2.1 硬體和作業系統

  • 作業系統:Linux系統即可(Ubuntu、CentOS等)
  • JDK:JDK8以上
  • CPU:1核以上
  • 記憶體:2GB以上

2.2.2 EFAK安裝包

EFAK安裝包,目前官網上以及釋出了最新的v2.0.9版本,支援分布式模式部署。可以直接下載下傳到Linux伺服器進行安裝和部署使用。如果需要自行編譯部署,可以到Github下載下傳源代碼進行編譯部署:

  • 方式一:官網下載下傳v2.0.9安裝包
  • 方式二:Github下載下傳源代碼,參考README說明進行編譯

2.3 安裝部署

EFAK分布式模式部署,這裡以5個節點為例子(1個Master和4個Slave),各個節點的角色如下如所示:

Kafka Eagle分布式模式

2.3.1 配置EFAK環境

首先,我們定義一個伺服器為Master節點,在Master節點上下載下傳EFAK安裝包,并配置EFAK所需要的環境變量,具體内容如下所示:

# 編輯環境變量檔案
vi ~/.bash_profile

# 添加如下内容

# 添加JDK環境,建議使用JDK8以上
export JAVA_HOME=/data/soft/new/jdk

# 添加EFAK環境
export KE_HOME=/data/soft/new/efak

export PATH=$PATH:$JAVA_HOME/bin:$KE_HOME/bin      

然後執行source ~/.bash_profile指令使配置環境變量立即生效。

2.3.2 配置EFAK系統檔案

在EFAK的conf目錄下有兩個配置系統的檔案,它們分别是:

  • system-config.properties:用來配置EFAK系統相關内容,比如啟動端口、Zookeeper位址、Kafka安全認證資訊、資料庫存儲位址等;
  • works:Slave節點位址(建議直接使用IP)。

1.配置works檔案

works存儲節點IP位址如下:

192.168.31.75
192.168.31.98
192.168.31.251
192.168.31.88      

2.配置system-config.properties檔案

EFAK配置資訊如下所示:

######################################
# 配置Kafka叢集别名和Zookeeper通路位址
######################################
efak.zk.cluster.alias=cluster1
cluster1.zk.list=192.168.31.127:2181

######################################
# Zookeeper是否啟用ACL
######################################
cluster1.zk.acl.enable=false
cluster1.zk.acl.schema=digest
cluster1.zk.acl.username=test
cluster1.zk.acl.password=test123

######################################
# 如果一個Kafka叢集規模較大,可以配置該參數
# 例如:配置閥值為20,若目前Kafka叢集節點超過20個,将啟用離線統計
######################################
cluster1.efak.broker.size=20

######################################
# Zookeeper用戶端線程數,單機模式設定16
# 分布式模式可以設定為4或者8(EFAK節點數大于5設定為4,若小于5設定為8即可)
######################################
kafka.zk.limit.size=8

######################################
# EFAK Web頁面啟動端口
######################################
efak.webui.port=8048

######################################
# EFAK 是否啟用分布式模式
######################################
efak.distributed.enable=true

# 在master節點上設定角色為master,其他節點設定為slave。
# 有個小技巧,就是從master節點同步配置到slave節點時,
# 将該屬性先設定為slave,然後同步完成後,
# 将master節點上的slave值修改為master即可
efak.cluster.mode.status=master

# 設定master節點的IP位址
efak.worknode.master.host=192.168.31.199

# 設定一個可用的端口供WorkNodeServer使用
efak.worknode.port=8085

######################################
# kafka jmx 是否啟用了ACL
######################################
cluster1.efak.jmx.acl=false
cluster1.efak.jmx.user=keadmin
cluster1.efak.jmx.password=keadmin123
cluster1.efak.jmx.ssl=false
cluster1.efak.jmx.truststore.location=/data/ssl/certificates/kafka.truststore
cluster1.efak.jmx.truststore.password=ke123456

######################################
# kafka offset 存儲方式,
# 目前Kafka基本都是存儲在Kafka的topic中,
# 可保留該預設值不變
######################################
cluster1.efak.offset.storage=kafka

######################################
# kafka jmx 位址,預設Apache釋出的Kafka基本是這個預設值,
# 對于一些公有雲Kafka廠商,它們會修改這個值,
# 比如會将jmxrmi修改為kafka或者是其它的值,
# 若是選擇的公有雲廠商的Kafka,可以根據實際的值來設定該屬性
######################################
cluster1.efak.jmx.uri=service:jmx:rmi:///jndi/rmi://%s/jmxrmi

######################################
# kafka監控是否開啟,以及存儲的監控資料保留時間天數
######################################
efak.metrics.charts=true
efak.metrics.retain=15

######################################
# kafka sql 查詢topic的單分區最近的條數,
# 以及在頁面預覽topic資料的最大記錄條數
######################################
efak.sql.topic.records.max=5000
efak.sql.topic.preview.records.max=10

######################################
# 删除topic的密鑰,僅供管理者角色使用
######################################
efak.topic.token=keadmin

######################################
# kafka sasl 安全認證是否開啟
######################################
cluster1.efak.sasl.enable=false
cluster1.efak.sasl.protocol=SASL_PLAINTEXT
cluster1.efak.sasl.mechanism=SCRAM-SHA-256
cluster1.efak.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="kafka" password="kafka-eagle";
cluster1.efak.sasl.client.id=
cluster1.efak.blacklist.topics=
cluster1.efak.sasl.cgroup.enable=false
cluster1.efak.sasl.cgroup.topics=

######################################
# kafka ssl 安全認證是否開啟
######################################
cluster1.efak.ssl.enable=false
cluster1.efak.ssl.protocol=SSL
cluster1.efak.ssl.truststore.location=
cluster1.efak.ssl.truststore.password=
cluster1.efak.ssl.keystore.location=
cluster1.efak.ssl.keystore.password=
cluster1.efak.ssl.key.password=
cluster1.efak.ssl.endpoint.identification.algorithm=https
cluster1.efak.blacklist.topics=
cluster1.efak.ssl.cgroup.enable=false
cluster1.efak.ssl.cgroup.topics=

######################################
# 生産環境建議使用MySQL來存儲相關資料
######################################
efak.driver=com.mysql.cj.jdbc.Driver
efak.url=jdbc:mysql://localhost:3306/ke_prd?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
efak.username=root
efak.password=123456      

2.3.3 分發EFAK安裝包和系統環境

1.同步EFAK系統環境

# 同步系統環境
for i in `cat $KE_HOME/conf/works`;do scp ~/.bash_profile $i:~/;done      

2.同步EFAK安裝包到Slave節點

# 如果你的$KE_HOME環境位址為/data/soft/new/efak
for i in `cat $KE_HOME/conf/works`;do scp -r $KE_HOME $i:/data/soft/new/;done      

然後,修改Master節點上的屬性值efak.cluster.mode.status,将Master節點上該屬性值slave修改為master即可。其他Slave節點無需改動。

2.3.4 啟動EFAK分布式叢集

EFAK分布式模式新增了ke.sh cluster指令,該指令支援如下參數:

  • ke.sh cluster start:啟動EFAK分布式叢集;
  • ke.sh cluster status:檢視EFAK分布式叢集狀态;
  • ke.sh cluster stop:停止EFAK分布式叢集
  • ke.sh cluster restart:重新開機EFAK分布式叢集

當我們完成EFAK系統環境和安裝包的分發後,就可以執行ke.sh cluster start啟動指令了。

# 啟動 EFAK 分布式模式
ke.sh cluster start      

具體啟動截圖如下所示:

Kafka Eagle分布式模式

 執行ke.sh cluster status指令檢視各個節點的狀态:

# 檢視節點狀态
ke.sh cluster status      

執行上述指令,具體截圖如下所示:

Kafka Eagle分布式模式

2.3.5 新增EFAK節點監控

在EFAK分布式模式下,新增監控EFAK各個節點的功能(單擊模式下也可以檢視Master節點相關名額),具體監控内容如下圖所示:

Kafka Eagle分布式模式

3.總結

如果是Kafka叢集規模較大或者管理的Kafka叢集有多個,可以使用EFAK的分布式模式部署。如果管理的Kafka叢集規模較小,Topic數量、消費者應用等較少,可以使用EFAK的單機模式部署即可。

4.結束語

這篇部落格就和大家分享到這裡,如果大家在研究學習的過程當中有什麼問題,可以加群進行讨論或發送郵件給我,我會盡我所能為您解答,與君共勉!

另外,部落客出書了《Kafka并不難學》和《Hadoop大資料挖掘從入門到進階實戰》,喜歡的朋友或同學, 可以在公告欄那裡點選購買連結購買部落客的書進行學習,在此感謝大家的支援。關注下面公衆号,根據提示,可免費擷取書籍的教學視訊。

聯系方式:

郵箱:[email protected]

Twitter:https://twitter.com/smartloli

QQ群(Hadoop - 交流社群1):424769183

QQ群(Kafka并不難學): 825943084

溫馨提示:請大家加群的時候寫上加群理由(姓名+公司/學校),友善管理者稽核,謝謝!

熱愛生活,享受程式設計,與君共勉!

公衆号:

Kafka Eagle分布式模式

作者:哥不是小蘿莉 [關于我][犒賞]

出處:http://www.cnblogs.com/smartloli/

轉載請注明出處,謝謝合作!