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 と一致する必要があります。
  1. DC1 で実行中の MirrorMaker インスタンスを停止します。 <mm pid> は MirrorMaker のプロセス ID です。

    kill <mm pid>
    
  2. Replicator を構成して起動します。この例では、Replicator はコマンドラインまたは Docker イメージ から実行可能ファイルとして実行されます。

    1. 以下の値を <path-to-confluent>/etc/kafka-connect-replicator/replicator_consumer.properties に追加します。localhost:9082 を送信元クラスター DC1 の bootstrap.servers に置き換えます。

      bootstrap.servers=localhost:9082
      topic.preserve.partitions=true
      
    2. 以下の値を <path-to-confluent>/etc/kafka-connect-replicator/replicator_producer.properties に追加します。localhost:9092 を送信先クラスター DC2 の bootstrap.servers に置き換えます。

      bootstrap.servers=localhost:9092
      
    3. 本稼働環境用にレプリケーション係数を 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
      
    4. 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 と一致する必要があります。
  1. DC1 で実行中の MirrorMaker インスタンスを停止します。

  2. Replicator を構成して起動します。この例では、Replicator はコマンドラインまたは Docker イメージ から実行可能ファイルとして実行されます。

    1. 以下の値を <path-to-confluent>/etc/kafka-connect-replicator/replicator_consumer.properties に追加します。localhost:9082 を送信元クラスター DC1 の bootstrap.servers に置き換えます。

      bootstrap.servers=localhost:9082
      topic.preserve.partitions=false
      
    2. 以下の値を <path-to-confluent>/etc/kafka-connect-replicator/replicator_producer.properties に追加します。localhost:9092 を送信先クラスター DC2 の bootstrap.servers に置き換えます。

      bootstrap.servers=localhost:9092
      
    3. 本稼働環境用にレプリケーション係数を 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
      
    4. 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 へのメッセージのレプリケーションを開始します。