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),各個節點的角色如下如所示:
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
具體啟動截圖如下所示:
執行ke.sh cluster status命令檢視各個節點的狀態:
# 檢視節點狀態 ke.sh cluster status
執行上述命令,具體截圖如下所示:
2.3.5 新增EFAK節點監控
在EFAK分散式模式下,新增監控EFAK各個節點的功能(單擊模式下也可以檢視Master節點相關指標),具體監控內容如下圖所示:
3.總結
如果是Kafka叢集規模較大或者管理的Kafka叢集有多個,可以使用EFAK的分散式模式部署。如果管理的Kafka叢集規模較小,Topic數量、消費者應用等較少,可以使用EFAK的單機模式部署即可。
4.結束語
這篇部落格就和大家分享到這裡,如果大家在研究學習的過程當中有什麼問題,可以加群進行討論或傳送郵件給我,我會盡我所能為您解答,與君共勉!
另外,博主出書了《Kafka並不難學》和《Hadoop大資料探勘從入門到進階實戰》,喜歡的朋友或同學, 可以在公告欄那裡點選購買連結購買博主的書進行學習,在此感謝大家的支援。關注下面公眾號,根據提示,可免費獲取書籍的教學視訊。