Kafka Cluster由多個brokers組成,一個broker內儲存多個topics,一個topic又可以分成多個partitions。Kafka producer、consumer是向broker發送訊息、拉取訊息的client端。
部署一個Kafka cluster需耗費許多時間設置參數、測試與Zookeeper通訊是否正常。
此專案提供了一鍵部署Kafka broker的腳本,利用Docker將Kafka容器化,讓使用者在建置上能夠更容易、簡單,省去大量安裝環境的時間。腳本內還整合了JMX以及Prometheus exporter,讓使用者可以監控Mbeans、hardware、OS的metrics。
部署broker前請先確認Zookeeper已經部署成功,因為需要取得Zookeeper的host與port當作啟動broker腳本的參數。
成功部署Zookeeper後,可以利用Zookeeper腳本輸出的訊息來啟動broker
/home/username/Documents/astraea/docker/start_broker.sh zookeeper.connect=192.168.103.24:18098
若成功啟動broker,腳本會印出該broker的訊息。 例如:
=================================================
broker id: 1001
broker address: 192.168.103.24:19473
jmx address: 192.168.103.24:14597
exporter address: 192.168.103.24:15663
=================================================
broker address
: 供Client端連線使用,即bootstrap serverjmx address
: 可以透過JMX來監控一些狀態exporter address
: Prometheus exporter的address,可用來監控hardware及OS的metrics
此腳本提供啟動Confluent版本
的Kafka broker,可以將環境變數CONFLUENT_BROKER
設成true。 例如:
env CONFLUENT_BROKER=true /home/username/Documents/astraea/docker/start_broker.sh zookeeper.connect=192.168.103.24:18098
若成功啟動Confluent
版本的broker,腳本會印出該broker的訊息。
=================================================
broker id: 1001
broker address: 192.168.103.24:15230
exporter address: 192.168.103.24:18928
=================================================
有四個好用的 ENVs,它們可以修改 JVM/container的配置,使用者可隨著自己的需求改動
- VERSION : 設置Kafka版本,會去下載官方已經建置好的distribution
- REVISION : 設置Kafka source code版本,會去下載原始碼並編譯建置可執行檔後部署
- HEAP_OPTS : 設置 JVM memory options
- DATA_FOLDERS : 選擇broker要在host端使用的資料夾,如果關閉容器後還會用到broker儲存的資料,就要設置此環境變數
此腳本所建置的Kafka版本是先看使用者有無設置revision版本,若無設置revision版本才會去看version版本