Apache Kafka Mirror Maker 2 を使用して Kafka クラスターから Event Hubs にデータをレプリケートする

このチュートリアルでは、Mirror Maker 2 を使用して、既存の Kafka クラスターから Azure Event Hubs にデータをレプリケートする方法について説明します。

Kafka MirrorMaker から Event Hubs へのデータのフローを示す画像。

Note

このサンプルは GitHub で入手できます。

このチュートリアルでは、以下の内容を学習します。

  • Event Hubs 名前空間を作成します
  • 既存の Kafka クラスターを設定または使用する
  • Kafka Mirror Maker 2 を構成する
  • Kafka Mirror Maker 2 を実行する

はじめに

Apache Kafka MirrorMaker 2.0 (MM2) は、Kafka クラスター間のトピックのミラーリングまたはレプリケーションを容易にするように設計されています。 Mirror Maker は、Kafka Connect フレームワークを使用して、構成とスケーリングを簡略化します。 Kafka MirrorMaker について詳しくは、Kafka ミラーリング/MirrorMaker ガイドに関するページをご覧ください。

Azure Event Hubs は Apache Kafka プロトコルと互換性があるため、Mirror Maker 2 を使用して、既存の Kafka クラスターと Event Hubs 名前空間の間でデータをレプリケートできます。

Mirror Maker 2 は、トピックに対する変更を動的に検出し、オフセットやパーティションなど、ソースとターゲットのトピックのプロパティが確実に同期されるようにします。 これを使用して、Kafka クラスターと Event Hubs 名前空間の間で双方向にデータをレプリケートできます。

前提条件

このチュートリアルを完了するには、以下のものが必要です。

  • Apache Kafka 用の Event Hubs に関する記事を読む。
  • Azure サブスクリプション。 お持ちでない場合は、開始する前に無料アカウントを作成してください。
  • Java Development Kit (JDK) 1.7 以降
    • Ubuntu で apt-get install default-jdk を実行して JDK をインストールします。
    • 必ず、JDK のインストール先フォルダーを指すように JAVA_HOME 環境変数を設定してください。
  • Maven バイナリ アーカイブのダウンロードインストール
    • Ubuntu で apt-get install maven を実行して Maven をインストールします。
  • Git
    • Ubuntu で sudo apt-get install git を実行して Git をインストールします。
  • Apache Kafka ディストリビューション
    • 推奨される Apache Kafka ディストリビューションをダウンロードします (Mirror Maker 2 ディストリビューションが含まれている必要があります)。

Event Hubs 名前空間を作成します

Event Hubs サービスとの間で送受信を行うには、イベント ハブの名前空間が必要です。 名前空間とイベント ハブを作成する手順については、イベント ハブの作成に関するページを参照してください。 後で使うので、イベント ハブの接続文字列をコピーしておきます。

サンプル プロジェクトを複製する

Event Hubs の接続文字列が用意できたので、Kafka 用 Azure Event Hubs リポジトリをクローンし、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 クラスターが既にある場合は、それを使用して、既存のデータを Event Hubs にレプリケートできます。

Kafka Mirror Maker 2 を構成する

Apache Kafka ディストリビューションには、分散 Mirror Maker 2 クラスターを実装する Kafka ライブラリにバンドルされている connect-mirror-maker.sh スクリプトが付属しています。 これは、構成ファイルに基づいて Connect ワーカーを内部的に管理します。 内部的に、MirrorMaker ドライバーによって、MirrorSource ConnectorMirrorSink ConnectorMirrorCheckpoint ConnectorMirrorHeartbeat Connector の各コネクタのペアが作成され、処理されます。

  1. データをレプリケートするように Mirror Maker 2 を構成するには、Mirror Maker 2 構成ファイル kafka-to-eh-connect-mirror-maker.properties を更新して、レプリケーション トポロジを定義する必要があります。

  2. kafka-to-eh-connect-mirror-maker.properties 構成ファイルで、Kafka クラスター (ソース) と Event Hubs (宛先) に使用する予定のクラスター エイリアスを定義します。

     # cluster aliases 
     clusters = source, destination
    
  3. 次に、ソース (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>;
    
  4. 宛先 (作成した Event Hubs 名前空間) の接続情報を指定します。

     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.>';
    
  5. ソースの Kafka クラスターから宛先の Event Hubs 名前空間へのレプリケーション フローを有効にします。

     source->destination.enabled = true
     source->destination.topics = .*
    
  6. 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
    
  7. 次に、kafka-to-eh-connect-mirror-maker.properties 構成ファイルを Kafka ディストリビューションの構成ディレクトリにコピーして、次のコマンドを使用して Mirror Maker 2 スクリプトを実行できます。

     ./bin/connect-mirror-maker.sh ./config/kafka-to-eh-connect-mirror-maker.properties
    
  8. スクリプトが正常に実行されると、Kafka のトピックとイベントが Event Hubs 名前空間にレプリケートされることがわかります。

  9. Kafka が有効なイベント ハブにイベントが届いていることを確認するには、Azure portal でイングレス統計を確認するか、Event Hubs に対してコンシューマーを実行します。

サンプル

GitHub の次のサンプルを参照してください。

次のステップ

Kafka 用 Event Hubs の詳細については、次の記事を参照してください。