Apache Kafka Mirror Maker 2 を使用して Kafka クラスターから Event Hubs にデータをレプリケートする
このチュートリアルでは、Mirror Maker 2 を使用して、既存の Kafka クラスターから Azure 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 環境変数を設定してください。
- 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 ディストリビューションが含まれている必要があります)。
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 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 クラスター (ソース) と Event Hubs (宛先) に使用する予定のクラスター エイリアスを定義します。# 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>;
宛先 (作成した 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.>';
ソースの Kafka クラスターから宛先の Event Hubs 名前空間へのレプリケーション フローを有効にします。
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 ディストリビューションの構成ディレクトリにコピーして、次のコマンドを使用して Mirror Maker 2 スクリプトを実行できます。./bin/connect-mirror-maker.sh ./config/kafka-to-eh-connect-mirror-maker.properties
スクリプトが正常に実行されると、Kafka のトピックとイベントが Event Hubs 名前空間にレプリケートされることがわかります。
Kafka が有効なイベント ハブにイベントが届いていることを確認するには、Azure portal でイングレス統計を確認するか、Event Hubs に対してコンシューマーを実行します。
サンプル
GitHub の次のサンプルを参照してください。
CNCF Strimzi 演算子を使用して Kubernetes で Apache Kafka をホストしている場合は、Event Hubs 用の Strimzi Mirror Maker 2 のサンプルを使用できます。
次のステップ
Kafka 用 Event Hubs の詳細については、次の記事を参照してください。