使用 Apache Kafka Mirror Maker 2 將資料從 Kafka 叢集複寫至事件中樞
本教學課程顯示如何使用 Mirror Maker 2,將資料從現有的 Kafka 叢集複寫至 Azure 事件中樞。
注意
您可在 GitHub 上取得此範例
在本教學課程中,您會了解如何:
- 建立事件中樞命名空間
- 設定或使用現有的 Kafka 叢集
- 設定 Kafka Mirror Maker 2
- 執行 Kafka Mirror Maker 2
簡介
Apache Kafka MirrorMaker 2.0 (MM2) 的設計目的旨在更輕鬆地將某個 Kafka 叢集中的主題鏡像或複寫到另一個 Kafka 叢集。 Mirror Maker 使用 Kafka Connect 架構來簡化設定和調整。 如需有關 Kafka MirrorMaker 的詳細資訊,請參閱 Kafka 鏡像/MirrorMaker 指南。
由於 Azure 事件中樞與 Apache Kafka 通訊協定相容,因此您可以使用 Mirror Maker 2,在現有的 Kafka 叢集和事件中樞命名空間之間,複寫資料。
Mirror Maker 2 會動態偵測主題的變更,並確保來源和目標的主題屬性進行同步,包括位移和分割區。 其可用來在 Kafka 叢集和事件中樞命名空間之間雙向複寫資料。
必要條件
若要完成本教學課程,請確定您具有下列項目︰
- 請參閱適用於 Apache Kafka 的事件中樞一文。
- Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
- Java Development Kit (JDK) 1.7+
- 在 Ubuntu 上,執行
apt-get install default-jdk
來安裝 JDK。 - 務必設定 JAVA_HOME 環境變數,以指向 JDK 安裝所在的資料夾。
- 在 Ubuntu 上,執行
- 下載並安裝 Maven 二進位封存檔
- 在 Ubuntu 上,您可以執行
apt-get install maven
來安裝 Maven。
- 在 Ubuntu 上,您可以執行
- Git
- 在 Ubuntu 上,您可以執行
sudo apt-get install git
來安裝 Git。
- 在 Ubuntu 上,您可以執行
- Apache Kafka 散發套件
- 下載慣用的 Apache Kafka 散發套件 (應包含 Mirror Maker 2 散發套件)。
建立事件中樞命名空間
您需要事件中樞命名空間,才能從任何事件中樞服務傳送和接收。 請參閱建立事件中樞,以取得建立命名空間和事件中樞的指示。 請務必複製事件中樞連接字串以供稍後使用。
複製範例專案
既然您已經有事件中樞連接字串,請複製適用於 Kafka 的 Azure 事件中樞存放庫,並瀏覽至 mirror-maker-2
子資料夾:
git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/mirror-maker-2
設定或使用現有的 Kafka 叢集
如果您沒有現有的 Kafka 叢集,請使用 Kafka 快速入門指南來設定具有所需設定的 Kafka 叢集 (或使用現有的 Kafka 叢集)。 為了進行測試,您也可以在新建立的 Kafka 叢集中建立幾個主題,然後將資料發佈至其中。
如果您在內部部署或受控 Kafka 雲端服務中已有現有的 Kafka 叢集,則可以使用該叢集將現有的資料複寫至事件中樞。
設定 Kafka Mirror Maker 2
Apache Kafka 散發套件隨附的 connect-mirror-maker.sh
指令碼,與實作分散式 Mirror Maker 2 叢集的 Kafka 程式庫搭售。 它會根據設定檔在內部管理 Connect 背景工作角色。 在內部,MirrorMaker 驅動程式會建立並處理每個連接器配對-MirrorSource Connector、MirrorSink Connector、MirrorCheckpoint Connector 和 MirrorHeartbeat Connector。
若要設定 Mirror Maker 2 以複寫資料,您需要更新 Mirror Maker 2 設定檔
kafka-to-eh-connect-mirror-maker.properties
來定義複寫拓撲。在
kafka-to-eh-connect-mirror-maker.properties
設定檔中,定義您計劃用於 Kafka 叢集 (來源) 和事件中樞 (目的地) 的叢集別名。# cluster aliases clusters = source, destination
然後指定來源 (也就是 Kafka 叢集) 的連線資訊。
source.bootstrap.servers = your-kafka-cluster-hostname:9092 #source.security.protocol=SASL_SSL #source.sasl.mechanism=PLAIN #source.sasl.jaas.config=<replace sasl jaas config of your Kafka cluster>;
指定目的地 (您所建立的事件中樞命名空間) 的連線資訊。
destination.bootstrap.servers = <your-enventhubs-namespace>.servicebus.windows.net:9093 destination.security.protocol=SASL_SSL destination.sasl.mechanism=PLAIN destination.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username='$ConnectionString' password='<Your Event Hubs namespace connection string.>';
啟用從來源 Kafka 叢集到目的地事件中樞命名空間的複寫流程。
source->destination.enabled = true source->destination.topics = .*
更新 Mirror Maker 在目的地建立之遠端主題和內部主題的複寫因素。
replication.factor=3 checkpoints.topic.replication.factor=3 heartbeats.topic.replication.factor=3 offset-syncs.topic.replication.factor=3 offset.storage.replication.factor=3 status.storage.replication.factor=3 config.storage.replication.factor=3
然後將
kafka-to-eh-connect-mirror-maker.properties
設定檔複製到 Kafka 散發套件的 config 目錄,便可使用下列命令來執行 Mirror Maker 2 指令碼。./bin/connect-mirror-maker.sh ./config/kafka-to-eh-connect-mirror-maker.properties
成功執行指令碼時,您應該會看到 Kafka 主題和事件複寫至事件中樞命名空間。
若要確認事件會到達啟用 Kafka 的事件中樞,請查看 Azure 入口網站中的輸入統計資料,或對事件中樞執行取用者。
範例
請參閱 GitHub 上的下列範例:
如果您使用 CNCF Strimzi 運算子在 Kube 上裝載 Apache Kafka,則可使用適用於事件中樞的 Strimzi Mirror Maker 2 範例。
下一步
若要深入了解適用於 Kafka 的事件中樞,請參閱下列文章:
- 在 GitHub 上探索範例 \(英文\)