MirrorMaker から Replicator への移行¶
Kafka MirrorMaker は、2 つの Apache Kafka® クラスター間でデータをコピーするためのスタンドアロンツールです。これは、Kafka のコンシューマーとプロデューサーを 1 つにまとめたツールです。
重要
Confluent Replicator は、トピック構成とデータを処理するより包括的なソリューションです。また、Kafka Connect および Control Center との統合により、可用性、拡張性、および操作性を向上させます。
このトピックでは、MirrorMaker を使用している既存のデータセンターを Replicator に移行する方法について説明します。以下の例では、メッセージは最初からではなく特定の時点からレプリケートされます。これは、移行する必要のない既存のメッセージが大量にある場合に役立ちます。
2 つのデータセンター、DC1(アクティブ)と DC2(パッシブ)があり、それぞれが Apache Kafka® クラスターを実行していると仮定します。DC1 には単一のトピックがあり、同じトピック名で DC2 にレプリケートされています。トピック名は inventory
です。
例 1: DC1 と DC2 のパーティション数が同じ場合¶
この例では、MirrorMaker から Replicator に移行し、DC1 と DC2 にある inventory
の同じパーティション数を維持します。
- 前提条件:
- Confluent Platform 5.0.0 以降が インストール されている必要があります。
- この方法を使用するには、DC1 と DC2 にある
inventory
のパーティション数が同じである必要があります。 - Replicator の
src.consumer.group.id
が MirrorMaker のgroup.id
と一致する必要があります。
DC1 で実行中の MirrorMaker インスタンスを停止します。
<mm pid>
は MirrorMaker のプロセス ID です。kill <mm pid>
Replicator を構成して起動します。この例では、Replicator はコマンドラインまたは Docker イメージ から実行可能ファイルとして実行されます。
以下の値を
<path-to-confluent>/etc/kafka-connect-replicator/replicator_consumer.properties
に追加します。localhost:9082
を送信元クラスター DC1 のbootstrap.servers
に置き換えます。bootstrap.servers=localhost:9082 topic.preserve.partitions=true
以下の値を
<path-to-confluent>/etc/kafka-connect-replicator/replicator_producer.properties
に追加します。localhost:9092
を送信先クラスター DC2 のbootstrap.servers
に置き換えます。bootstrap.servers=localhost:9092
本稼働環境用にレプリケーション係数を
2
または3
に設定します(まだ設定していない場合)。echo "confluent.topic.replication.factor=3" >> ./etc/kafka-connect-replicator/quickstart-replicator.properties echo "offset.storage.replication.factor=3" >> ./etc/kafka-connect-replicator/quickstart-replicator.properties echo "config.storage.replication.factor=3" >> ./etc/kafka-connect-replicator/quickstart-replicator.properties echo "status.storage.replication.factor=3" >> ./etc/kafka-connect-replicator/quickstart-replicator.properties
Replicator を起動します。
<path-to-confluent>/bin/replicator --cluster.id <new-cluster-id> \ --producer.config replicator_producer.properties \ --consumer.config replicator_consumer.properties \ --replication.config ./etc/kafka-connect-replicator/quickstart-replicator.properties
Replicator は、DC1 の MirrorMaker によってコミットされたオフセットを使用し、これらのオフセットに基づいて DC1 から DC2 へのメッセージのレプリケーションを開始します。
例 2: DC1 と DC2 のパーティション数が異なる場合¶
この例では、MirrorMaker から Replicator に移行しますが、DC1 と DC2 にある inventory
のパーティション数が異なります。
- 前提条件:
- Confluent Platform 5.0.0 以降が インストール されている必要があります。
- Replicator の
src.consumer.group.id
が MirrorMaker のgroup.id
と一致する必要があります。
DC1 で実行中の MirrorMaker インスタンスを停止します。
Replicator を構成して起動します。この例では、Replicator はコマンドラインまたは Docker イメージ から実行可能ファイルとして実行されます。
以下の値を
<path-to-confluent>/etc/kafka-connect-replicator/replicator_consumer.properties
に追加します。localhost:9082
を送信元クラスター DC1 のbootstrap.servers
に置き換えます。bootstrap.servers=localhost:9082 topic.preserve.partitions=false
以下の値を
<path-to-confluent>/etc/kafka-connect-replicator/replicator_producer.properties
に追加します。localhost:9092
を送信先クラスター DC2 のbootstrap.servers
に置き換えます。bootstrap.servers=localhost:9092
本稼働環境用にレプリケーション係数を
2
または3
に設定します(まだ設定していない場合)。echo "confluent.topic.replication.factor=3" >> ./etc/kafka-connect-replicator/quickstart-replicator.properties echo "offset.storage.replication.factor=3" >> ./etc/kafka-connect-replicator/quickstart-replicator.properties echo "config.storage.replication.factor=3" >> ./etc/kafka-connect-replicator/quickstart-replicator.properties echo "status.storage.replication.factor=3" >> ./etc/kafka-connect-replicator/quickstart-replicator.properties
Replicator を起動します。
<path-to-confluent>/bin/replicator --cluster.id <new-cluster-id> \ --producer.config replicator_producer.properties \ --consumer.config replicator_consumer.properties \ --replication.config ./etc/kafka-connect-replicator/quickstart-replicator.properties
Replicator は、DC1 の MirrorMaker によってコミットされたオフセットを使用し、これらのオフセットに基づいて DC1 から DC2 へのメッセージのレプリケーションを開始します。