

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon MSK Replicator とは
<a name="msk-replicator"></a>

Amazon MSK Replicator は、Amazon MSK の機能であり、異なる、または同じ AWS リージョン Amazon MSK クラスター間でデータを確実に複製することを可能にします。ソースクラスターおよびターゲットクラスターの両方が、同じ AWS アカウントアカウント内にある必要があります。MSK レプリケーターを使用すると、リージョンの障害に耐性のあるストリーミングアプリケーションを簡単に構築することができ、可用性と事業継続性を向上させることができます。MSK レプリケーターには、MSK クラスター間で自動非同期レプリケーションを行う機能が備わっているため、カスタムコードの作成、インフラストラクチャの管理、クロスリージョンネットワークの設定が不要になります。

MSK レプリケーターは、基盤となるリソースを自動的にスケーリングするため、容量のモニタリングやスケーリングを行わなくてもオンデマンドでデータをレプリケートできます。MSK レプリケーターは、トピック設定、アクセスコントロールリスト (ACL)、コンシューマーグループのオフセットなど、必要な Kafka メタデータもレプリケートします。リージョンで予期しないイベントが発生した場合は、他の AWS リージョンにフェイルオーバーして、シームレスに処理を再開できます。

MSK レプリケーターは、クロスリージョンレプリケーション (CRR) と同一リージョンレプリケーション (SRR) の両方をサポートします。クロスリージョンレプリケーションでは、ソース MSK クラスターとターゲット MSK クラスターは異なる AWS リージョンにあります。同じリージョンのレプリケーションでは、ソース MSK クラスターとターゲット MSK クラスターの両方が同じ AWS リージョンにあります。ソースとターゲットの MSK クラスターは、MSK レプリケーターで使用する前に作成する必要があります。

**注記**  
MSK レプリケーターは、次の AWS リージョンをサポートしています。 米国東部 (us-east-1、 バージニア北部）、 米国東部 (us-east-2、 オハイオ）。 米国西部 (us-west-2、 オレゴン）。 欧州 (eu-west-1、 アイルランド）。 欧州 (eu-central-1、 フランクフルト）。 アジアパシフィック (ap-southeast-1、 シンガポール）。 アジアパシフィック (ap-southeast-2、 シドニー）。 欧州 (eu-north-1、 ストックホルム）。 アジアパシフィック (ap-south-1、 ムンバイ）。 欧州 (eu-west-3、 パリ）。 南米 (sa-east-1、 サンパウロ）。 アジアパシフィック (ap-northeast-2、 ソウル) 欧州 (eu-west-2、 ロンドン）。 アジアパシフィック (ap-northeast-1、 東京）。 米国西部 (us-west-1、 N. California)。 カナダ (ca-central-1、 中央）。 中国 (北京) (cn-north-1) 中国 (寧夏) (cn-northwest-1) アジアパシフィック (ハイデラバード) (ap-south-2)、 アジアパシフィック (マレーシア) (ap-southeast-5) アジアパシフィック (タイ) (ap-southeast-7) メキシコ (中部) (mx-central-1)、 アジアパシフィック (台北) (ap-east-2)、 カナダ西部 (カルガリー) (ca-west-1)、 欧州 (スペイン) (eu-south-2)、 中東 (バーレーン) (me-south-1)、 アジアパシフィック (ジャカルタ) (ap-southeast-3) アフリカ (ケープタウン) (af-south-1)、 中東 (アラブ首長国連邦) (me-central-1)、 アジアパシフィック (香港) (ap-east-1)、 アジアパシフィック (大阪) (ap-northeast-3)、 アジアパシフィック (メルボルン) (ap-southeast-4)、 欧州 (ミラノ) (eu-south-1)、 イスラエル (テルアビブ) (il-central-1) 欧州 (チューリッヒ) (eu-central-2) およびアジアパシフィック (ニュージーランド) (ap-southeast-6)

Amazon MSK Replicator の一般的な使用法をいくつかご紹介します。
+ マルチリージョンストリーミングアプリケーションの構築: 高い可用性と耐障害性を備えたストリーミングアプリケーションを構築し、カスタムソリューションの設定を必要とせずに、耐障害性の向上を実現します。
+ 低レイテンシーのデータアクセス: さまざまな地理的リージョンのコンシューマーに低レイテンシーのデータアクセスを提供します。
+ パートナーへのデータ配布: 1 つの Apache Kafka クラスターから多数の Apache Kafka クラスターにデータをコピーすることで、さまざまなチームやパートナーがそれぞれのデータコピーを持てるようにします。
+ 分析用データの集約: 複数の Apache Kafka クラスターから 1 つのクラスターにデータをコピーすることで、集約されたリアルタイムデータに関するインサイトを簡単に生成できます。
+ ローカルに書き込み、データにグローバルにアクセスする: マルチアクティブレプリケーションを設定して、1 つの AWS リージョンで実行された書き込みを他のリージョンに自動的に伝達し、低レイテンシーと低コストでデータを提供します。

# Amazon MSK Replicator の仕組み
<a name="msk-replicator-how-it-works"></a>

MSK レプリケーターの使用を開始するには、ターゲットクラスターの AWS リージョンに新しいレプリケーターを作成する必要があります。MSK レプリケーターは、*ソース*と呼ばれるプライマリ AWS リージョンのクラスターから*ターゲット*と呼ばれる送信先リージョンのクラスターに、すべてのデータを自動的にコピーします。ソースクラスターとターゲットクラスターは、同じリージョンでも異なる AWS リージョンでもかまいません。ターゲットクラスターがまだ存在しない場合は、作成する必要があります。

レプリケーターを作成すると、MSK レプリケーターはターゲットクラスターの AWS リージョンに必要なすべてのリソースをデプロイして、データレプリケーションのレイテンシーを最適化します。レプリケーションレイテンシーは、MSK クラスターの AWS リージョン間のネットワーク距離、ソースクラスターとターゲットクラスターのスループットキャパシティ、ソースクラスターとターゲットクラスターのパーティション数など、多くの要因によって異なります。MSK レプリケーターは、基盤となるリソースを自動的にスケーリングするため、容量のモニタリングやスケーリングを行わなくてもオンデマンドでデータをレプリケートできます。

## データレプリケーション
<a name="msk-replicator-data-replication"></a>

デフォルトでは、MSK Replicator は、すべてのデータを、ソースクラスターのトピックパーティション内の最新のオフセットからターゲットクラスターに非同期にコピーします。[新しいトピックを検出してコピーする] 設定がオンになっている場合、MSK Replicator は新しいトピックまたはトピックパーティションを自動的に検出してターゲットクラスターにコピーします。ただし、レプリケーターがターゲットクラスターの新しいトピックまたはトピックパーティションを検出して作成するまでに、最大 30 秒かかる場合があります。ターゲットクラスターでトピックが作成される前にソーストピックに生成されたメッセージはレプリケートされません。あるいは、トピックの既存のメッセージをターゲットクラスターにレプリケートする場合は、ソースクラスターのトピックパーティション内の最も古いオフセットからレプリケーションを開始するように、[作成時にレプリケーターを設定](msk-replicator-prepare-cluster.md)することができます。

MSK Replicator はデータを保存しません。データはソースクラスターから消費され、インメモリでバッファリングされ、ターゲットクラスターに書き込まれます。バッファは、データが正常に書き込まれるか、あるいは再試行後に失敗すると自動的にクリアされます。MSK Replicator とクラスター間のすべての通信とデータは、転送中では常に暗号化されます。`DescribeClusterV2`、 などのすべての MSK レプリケーター API コール`DescribeTopicDynamicConfiguration`は`CreateTopic`、 AWS CloudTrail にキャプチャされます。MSK ブローカーログにも同じ内容が反映されます。

MSK Replicator は、レプリケーション係数が 3 のターゲットクラスターにトピックを作成します。必要に応じて、ターゲットクラスターのレプリケーション係数を直接変更できます。

## メタデータレプリケーション
<a name="msk-replicator-metadata-replication"></a>

MSK Replicator は、ソースクラスターからターゲットクラスターへのメタデータのコピーもサポートしています。メタデータにはトピック設定、アクセスコントロールリスト (ACL)、およびコンシューマーグループのオフセットが含まれます。データレプリケーションと同様に、メタデータレプリケーションも非同期的に行われます。パフォーマンスを向上させるために、MSK Replicator はメタデータレプリケーションよりもデータレプリケーションを優先します。

次の表は、MSK Replicator がコピーできるアクセスコントロールリスト (ACL) の一覧です。


| 運用 | リソース | 許可される API | 
| --- | --- | --- | 
|  変更  |  Topic  |  CreatePartitions  | 
|  AlterConfigs  |  Topic  |  AlterConfigs  | 
|  作成  |  Topic  |  CreateTopics、Metadata  | 
|  Delete  |  Topic  |  DeleteRecords、DeleteTopics  | 
|  説明  |  Topic  |  ListOffsets、Metadata、OffsetFetch、OffsetForLeaderEpoch  | 
|  DescribeConfigs  |  Topic  |  DescribeConfigs  | 
|  読み取り  |  Topic  |  Fetch、OffsetCommit、TxnOffsetCommit  | 
|  書き込み (deny のみ)  |  Topic  |  Produce、AddPartitionsToTxn  | 

MSK Replicator は、リソースタイプがトピックの場合にのみ、LITERAL パターンタイプの ACL をコピーします。PREFIXED パターンタイプの ACL、およびその他のリソースタイプの ACL はコピーされません。MSK Replicator は、ターゲットクラスターの ACL を削除することもありません。ソースクラスターの ACL を削除する場合は、ターゲットクラスターの ACL も同時に削除する必要があります。Kafka ACL リソース、パターン、および操作の詳細については、「[https://kafka.apache.org/documentation/\$1security\$1authz\$1cli](https://kafka.apache.org/documentation/#security_authz_cli)」を参照してください。

MSK Replicator は、IAM アクセスコントロールでは使用されない Kafka ACL のみをレプリケートします。クライアントで IAM アクセスコントロールを使用して MSK クラスターへの読み込み/書き込みを行っている場合は、シームレスなフェイルオーバーを実現するために、ターゲットクラスターでも関連する IAM ポリシーを設定する必要があります。これは、プレフィックス付きトピック名レプリケーション設定と同一トピック名レプリケーション設定の両方にも当てはまります。

コンシューマーグループのオフセット同期の一環として、MSK Replicator は、ストリームの先端 (トピックパーティションの末尾) に近い場所から読み込みを行っているソースクラスターのコンシューマーを最適化します。ソースクラスターのコンシューマーグループが遅延している場合、ターゲットのコンシューマーグループの遅延はソースと比較して大きくなる可能性があります。つまり、ターゲットクラスターへのフェイルオーバー後、コンシューマーは重複したメッセージをさらに再処理しすることになります。この遅延を小さくするには、ソースクラスターのコンシューマーがストリームの先端 (トピックパーティションの末尾) にキャッチアップするように処理を行い、消費を開始する必要があります。コンシューマーによる処理がキャッチアップすると、MSK Replicator は自動的に遅延を小さくします。

![\[MSK レプリケーターのソースクラスターとターゲットクラスター\]](http://docs.aws.amazon.com/ja_jp/msk/latest/developerguide/images/msk-replicator-diagram.png)


## トピック名の設定
<a name="msk-replicator-topic-name-configuration"></a>

MSK Replicator には、*プレフィックス付き*トピック名レプリケーション (デフォルト) または*同一ト*ピック名レプリケーションの 2 つのトピック名設定モードが用意されています。

**プレフィックス付きトピック名レプリケーション**  
デフォルトでは、MSK Replicator は、自動生成されたプレフィックスをソースクラスターのトピック名に追加した新しいトピック (`<sourceKafkaClusterAlias>.topic` など) をターゲットクラスターに作成します。これは、レプリケートされたトピックをターゲットクラスターの他のトピックと区別し、クラスター間での循環レプリケーションを回避するためです。

例えば、MSK Replicator は、ソースクラスターから「topic」という名前のトピックのデータを、<sourceKafkaClusterAlias>.topic という名前のターゲットクラスターの新しいトピックにレプリケートします。ターゲットクラスターのトピック名に追加されるプレフィックスは、`DescribeReplicator` API を使用して **[sourceKafkaClusterAlias]** フィールドで確認するか、MSK コンソールの **[レプリケーター]** 詳細ページで確認することができます。ターゲットクラスターのプレフィックスは、<sourceKafkaClusterAlias> です。

コンシューマーがスタンバイクラスターから確実に処理を再開できるようにするには、ワイルドカード演算子 `.*` を使用してトピックからデータを読み取るようにコンシューマーを設定する必要があります。たとえば、コンシューマーは両方の AWS リージョンで `*topic1`を使用して を消費する必要があります。この例には `footopic1` などのトピックも含まれるため、必要に応じてワイルドカード演算子を調整してください。

アクティブ/アクティブクラスター設定など、レプリケーターデータをターゲットクラスター内の別のトピックに保持する場合は、プレフィックスを追加できる MSK レプリケーターを使用する必要があります。

**同一トピック名レプリケーション**  
デフォルト設定の代わりに、Amazon MSK Replicator では、トピックのレプリケーションを同一トピック名レプリケーション (コンソールで**同じトピック名を保持**) に設定したレプリケーターを作成できます。ターゲット MSK クラスターがある AWS リージョンに新しいレプリケーターを作成できます。同じ名前のレプリケートされたトピックを使用すると、レプリケートされたトピックから読み込むようにクライアントを再設定する必要がなくなります。

同一トピック名レプリケーション (コンソールで**同じトピック名を保持**) には、次の利点があります。
+ レプリケーション処理中に同一のトピック名を保持しながら、無限のレプリケーションループのリスクを自動的に回避できます。
+ レプリケートされたトピックから読み込むようにクライアントを再設定する必要がなくなるため、マルチクラスターストリーミングアーキテクチャの設定と運用が簡単になります。
+ アクティブ/パッシブクラスターアーキテクチャの場合、同一トピック名レプリケーション機能によってフェイルオーバープロセスも効率化されるため、トピック名の変更やクライアントの再設定を必要とすることなく、アプリケーションをスタンバイクラスターにシームレスにフェイルオーバーできるようになります。
+ 複数の MSK クラスターからのデータを 1 つのクラスターに簡単に統合して、データの集約や集中分析を行うことができます。そのためには、ソースクラスターおよび同じターゲットクラスターごとに別個のレプリケーターを作成する必要があります。
+ ターゲットクラスター内の同一の名前のトピックにデータをレプリケートすることで、ある MSK クラスターから別の MSK クラスターへのデータ移行を効率化できます。

Amazon MSK Replicator は、Kafka ヘッダーを使用して、データが元のトピックにレプリケートされることを自動的に回避し、レプリケーション中に無限サイクルが発生するリスクを排除します。ヘッダーは、各 Kafka メッセージ内のキー、値、およびタイムスタンプに含めることができるキーと値のペアです。MSK Replicator は、レプリケートされる各レコードのヘッダーにソースクラスターとトピックの識別子を埋め込みます。MSK Replicator は、ヘッダー情報を使用して無限のレプリケーションループを回避します。クライアントがレプリケートされたデータを期待どおりに読み込めることを確認する必要があります。

# チュートリアル: Amazon MSK Replicator のソースクラスターとターゲットクラスターを設定する
<a name="msk-replicator-getting-started"></a>

このチュートリアルでは、ソースクラスターとターゲットクラスターを同じ AWS リージョンまたは異なる AWS リージョンに設定する方法を示します。次に、それらのクラスターを使用して Amazon MSK Replicator を作成します。

# Amazon MSK ソースクラスターを準備する
<a name="msk-replicator-prepare-cluster"></a>

MSK レプリケーター用の MSK ソースクラスターを既に作成している場合は、このセクションで説明する要件を満たしていることを確認してください。それ以外の場合は、次のステップを実行して MSK プロビジョンドソースクラスターまたはサーバーレスソースクラスターを作成してください。

クロスリージョンと同一リージョンの MSK レプリケーターのソースクラスターを作成するプロセスは類似しています。相違点については次の手順で説明します。

1. ソースリージョンで、[IAM アクセスコントロールを有効にした](create-iam-access-control-cluster-in-console.md) MSK プロビジョンドクラスターまたはサーバーレスクラスターを作成します。ソースクラスターには、少なくとも 3 つのブローカーが必要です。

1. クロスリージョン MSK レプリケーターでは、ソースがプロビジョンドクラスターの場合は、IAM アクセスコントロールスキーム用にマルチ VPC プライベート接続を有効にして設定します。マルチ VPC を有効にした場合、認証されていない認証タイプはサポートされないので注意してください。他の認証スキーム (mTLS や SASL/SCRAM) では、マルチ VPC プライベート接続を有効にする必要はありません。MSK クラスターに接続する他のクライアントに、mTLS または SASL/SCRAM 認証スキームを同時に使用することは可能です。マルチ VPC プライベート接続は、コンソールのクラスター詳細の **[ネットワーク設定]** で、または `UpdateConnectivity` API を使用して設定できます。「[クラスター所有者がマルチ VPC を有効にする](mvpc-cluster-owner-action-turn-on.md)」を参照してください。ソースクラスターが MSK サーバーレスクラスターの場合、マルチ VPC プライベート接続を有効にする必要はありません。

   同一リージョン MSK レプリケーターの場合、MSK ソースクラスターにマルチ VPC プライベート接続は必要なく、認証されていない認証タイプを使用する他のクライアントからでもそのソースクラスターにアクセスできます。

1. クロスリージョン MSK レプリケーターの場合、ソースクラスターにリソースベースのアクセス許可ポリシーをアタッチする必要があります。これにより、MSK がこのクラスターに接続してデータをレプリケートできます。これを行うには、以下の CLI または AWS コンソールの手順を使用します。「[Amazon MSK のリソースベースのポリシー](security_iam_service-with-iam.md)」も参照してください。同一リージョン MSK レプリケーターの場合は、このステップを実行する必要はありません。

------
#### [ Console: create resource policy ]

次の JSON でソースクラスターポリシーを更新します。プレースホルダーは、ソースクラスターの ARN に置き換えてください。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "Service": [
                "kafka.amazonaws.com"
            ]
        },
        "Action": [
            "kafka:CreateVpcConnection",
            "kafka:GetBootstrapBrokers",
            "kafka:DescribeClusterV2"
        ],
        "Resource": "arn:aws:kafka:us-east-1:123456789012:cluster/myCluster/abcd1234-5678-90ab-cdef-1234567890ab-1"
    }
  ]
}
```

クラスター詳細ページの **[アクション]** メニューにある **[クラスターポリシーの編集]** オプションを使用します。

![\[コンソールでのクラスターポリシーの編集\]](http://docs.aws.amazon.com/ja_jp/msk/latest/developerguide/images/edit-cluster-policy.png)


------
#### [ CLI: create resource policy ]

注: AWS コンソールを使用してソースクラスターを作成し、新しい IAM ロールを作成するオプションを選択した場合、 は必要な信頼ポリシーをロールに AWS アタッチします。MSK で既存の IAM ロールを使用する場合、または独自にロールを作成する場合は、MSK レプリケーターがロールを引き受けることができるように、次の信頼ポリシーをそのロールにアタッチします。ロールの信頼関係を変更する方法については、「[ロールの修正](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html)」を参照してください。

1. このコマンドを使用して、MSK クラスターポリシーの現在のバージョンを取得します。プレースホルダーは、実際のクラスター ARN に置き換えてください。

   ```
   aws kafka get-cluster-policy —cluster-arn <Cluster ARN>
   {
   "CurrentVersion": "K1PA6795UKM GR7",
   "Policy": "..."
   }
   ```

1. MSK レプリケーターがソースクラスターにアクセスすることを許可するリソースベースのポリシーを作成します。次の構文をテンプレートとして使用します。プレースホルダーは、実際のソースクラスター ARN に置き換えてください。

   ```
   aws kafka put-cluster-policy --cluster-arn "<sourceClusterARN>" --policy '{
   "Version": "2012-10-17", 		 	 	 
   "Statement": [
   {
   "Effect": "Allow",
   "Principal": {
   "Service": [
   "kafka.amazonaws.com"
   ]
   },
   "Action": [
   "kafka:CreateVpcConnection",
   "kafka:GetBootstrapBrokers",
   "kafka:DescribeClusterV2"
   ],
   "Resource": "<sourceClusterARN>"
   }
   ]
   ```

------

# Amazon MSK ターゲットクラスターを準備する
<a name="msk-replicator-prepare-target-cluster"></a>

IAM アクセスコントロールを有効にして、MSK ターゲットクラスター (プロビジョンドまたはサーバーレス) を作成します。ターゲットクラスターでは、マルチ VPC プライベート接続を有効にする必要はありません。ターゲットクラスターは、ソースクラスターと同じ AWS リージョンまたは別の リージョンにあることができます。ソースクラスターとターゲットクラスターの両方が同じ AWS アカウントにある必要があります。ターゲットクラスターには、少なくとも 3 つのブローカーが必要です。

# チュートリアル: Amazon MSK Replicator を作成する
<a name="msk-replicator-create"></a>

ソースクラスターとターゲットクラスターを設定したら、それらのクラスターを使用して Amazon MSK Replicator を作成できます。Amazon MSK Replicator を作成する前に、[MSK レプリケーターの作成に必要な IAM アクセス許可](msk-replicator-requirements.md#replicator-role-permissions-successful)を持っていることを確認してください。

**Contents**
+ [

# Amazon MSK Replicator を作成する際の考慮事項
](msk-replicator-requirements.md)
  + [

## MSK レプリケーターの作成に必要な IAM アクセス許可
](msk-replicator-requirements.md#replicator-role-permissions-successful)
  + [

# MSK Replicator でサポートされるクラスタータイプとバージョン
](msk-replicator-supported-clusters-versions.md)
  + [

# サポートされている MSK サーバーレスクラスター設定
](msk-replicator-serverless-requirements.md)
    + [

## クラスター設定の変更
](msk-replicator-serverless-requirements.md#msk-replicator-config-changes)
+ [

# ターゲットクラスターリージョンで AWS コンソールを使用してレプリケーターを作成する
](msk-replicator-create-console.md)
  + [

## ソースクラスターの選択
](msk-replicator-create-console.md#msk-replicator-create-console-choose-source)
  + [

## ターゲットクラスターの選択
](msk-replicator-create-console.md#msk-replicator-create-console-choose-target)
  + [

## レプリケータの設定とアクセス許可を設定します。
](msk-replicator-create-console.md#msk-replicator-create-settings)

# Amazon MSK Replicator を作成する際の考慮事項
<a name="msk-replicator-requirements"></a>

以下のセクションでは、MSK レプリケーター機能を使用するための前提条件、サポートされている設定、およびベストプラクティスの概要を説明します。ここでは、必要なアクセス許可、クラスターの互換性、サーバーレス固有の要件、および作成後のレプリケーターの管理に関するガイダンスについて説明します。

## MSK レプリケーターの作成に必要な IAM アクセス許可
<a name="replicator-role-permissions-successful"></a>

MSK レプリケーターの作成に必要な IAM ポリシーの例を次に示します。アクション `kafka:TagResource` は、MSK レプリケーターの作成時にタグを指定する場合にのみ必要です。レプリケーターの IAM ポリシーは、クライアントに対応する IAM ロールにアタッチする必要があります。承認ポリシーの作成に関する情報は、「[承認ポリシーの作成](https://docs.aws.amazon.com/msk/latest/developerguide/iam-access-control.html#create-iam-access-control-policies)」を参照してください。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "MSKReplicatorIAMPassRole",
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::123456789012:role/MSKReplicationRole",
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "kafka.amazonaws.com"
        }
      }
    },
    {
      "Sid": "MSKReplicatorServiceLinkedRole",
      "Effect": "Allow",
      "Action": "iam:CreateServiceLinkedRole",
      "Resource": "arn:aws:iam::123456789012:role/aws-service-role/kafka.amazonaws.com/AWSServiceRoleForKafka*"
    },
    {
      "Sid": "MSKReplicatorEC2Actions",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeSubnets",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeVpcs",
        "ec2:CreateNetworkInterface"
      ],
      "Resource": [
        "arn:aws:ec2:us-east-1:123456789012:subnet/subnet-0abcd1234ef56789",
        "arn:aws:ec2:us-east-1:123456789012:security-group/sg-0123abcd4567ef89",
        "arn:aws:ec2:us-east-1:123456789012:network-interface/eni-0a1b2c3d4e5f67890",
        "arn:aws:ec2:us-east-1:123456789012:vpc/vpc-0a1b2c3d4e5f67890"
      ]
    },
    {
      "Sid": "MSKReplicatorActions",
      "Effect": "Allow",
      "Action": [
        "kafka:CreateReplicator",
        "kafka:TagResource"
      ],
      "Resource": [
        "arn:aws:kafka:us-east-1:123456789012:cluster/myCluster/abcd1234-56ef-78gh-90ij-klmnopqrstuv",
        "arn:aws:kafka:us-east-1:123456789012:replicator/myReplicator/wxyz9876-54vu-32ts-10rq-ponmlkjihgfe"
      ]
    }
  ]
}
```

------

レプリケーターを記述する IAM ポリシーの例を次に示します。`kafka:DescribeReplicator` アクションおよび `kafka:ListTagsForResource` アクションは、いずれか一方が必要ですが、両方は必要ありません。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "kafka:DescribeReplicator",
                "kafka:ListTagsForResource"
            ],
            "Resource": "*"
        }
    ]
}
```

------

# MSK Replicator でサポートされるクラスタータイプとバージョン
<a name="msk-replicator-supported-clusters-versions"></a>

以下は、サポートされるインスタンスタイプ、Kafka バージョン、ネットワーク設定の要件です。
+ MSK レプリケーターは、MSK プロビジョンドクラスターと MSK サーバーレスクラスターの両方を、ソースクラスターとターゲットクラスターとしての任意の組み合わせでサポートします。現時点では、他のタイプの Kafka クラスターは MSK レプリケーターでサポートされていません。
+ MSK サーバーレスクラスターには IAM アクセスコントロールが必要で、Apache Kafka ACL レプリケーションはサポートされておらず、トピック固有の設定のレプリケーションは制限付きでサポートされています。「[MSK サーバーレスとは](serverless.md)」を参照してください。
+ MSK Replicator は、ソースクラスターおよびターゲットクラスターが同一か異なるかを問わず AWS リージョン、Apache Kafka 2.7.0 以降を実行しているクラスターでのみサポートされます。
+ MSK Replicator は、m5.large 以上のより大きいインスタンスタイプを使用するクラスターをサポートします。t3.small クラスターはサポートされていません。
+ MSK レプリケーターを MSK プロビジョンドクラスターで使用する場合、ソースクラスターとターゲットクラスターの両方に少なくとも 3 つのブローカーが必要です。2 つのアベイラビリティーゾーンのクラスター間でデータをレプリケートできますが、それらのクラスターには少なくとも 4 つのブローカーが必要です。
+ ソース MSK クラスターとターゲット MSK クラスターの両方が同じ AWS アカウントにある必要があります。異なるアカウントのクラスター間でのレプリケーションはサポートされません。
+ ソース MSK クラスターとターゲット MSK クラスターが異なる AWS リージョン (クロスリージョン) にある場合、MSK レプリケーターでは、IAM アクセスコントロールメソッドでマルチ VPC プライベート接続を有効にする必要があります。

  MSK のマルチ VPC 間レプリケーションにおいて AWS リージョン、ソースクラスターの他の認証方法にはマルチ VPC は不要です。

  同じ AWS リージョン VPC 内のクラスター間でデータを複製する場合、マルチ VPC も不要です。「[単一リージョンの Amazon MSK マルチ VPC プライベート接続](aws-access-mult-vpc.md)」を参照してください。
+ 同一トピック名レプリケーション (コンソールで**同じトピック名を保持**) には、Kafka バージョン 2.8.1 以降を実行する MSK クラスターが必要です。
+ 同一トピック名レプリケーション (コンソールで**同じトピック名を保持**) 設定では、循環レプリケーションのリスクを回避するために、MSK Replicator が作成するヘッダー (`__mskmr`) を変更しないでください。

# サポートされている MSK サーバーレスクラスター設定
<a name="msk-replicator-serverless-requirements"></a>
+ MSK サーバーレスは、トピックの作成中に MSK サーバーレスターゲットクラスターに対する次のトピック設定のレプリケートをサポートします: `cleanup.policy`、`compression.type`、`max.message.bytes`、`retention.bytes`、`retention.ms`。
+ MSK サーバーレスは、トピック設定の同期中に次のトピック設定のみをサポートします: `compression.type`、`max.message.bytes`、`retention.bytes`、`retention.ms`。
+ レプリケーターは、ターゲット MSK サーバーレスクラスター上の 83 個の圧縮パーティションを使用します。ターゲット MSK サーバーレスクラスターに十分な数の圧縮パーティションがあることを確認してください。「[MSK サーバーレス クォータ](limits.md#serverless-quota)」を参照してください。

## クラスター設定の変更
<a name="msk-replicator-config-changes"></a>
+ MSK レプリケーターの作成後は、階層型ストレージの有効/無効を変更しないことが推奨されます。ターゲットクラスターが階層化されていない場合、ソースクラスターが階層化されているかどうかに関係なく、MSK は階層型ストレージ設定をコピーしません。レプリケーターの作成後にターゲットクラスターの階層型ストレージを有効にする場合は、レプリケーターを再作成する必要があります。非階層型クラスターから階層型クラスターにデータをコピーする場合は、トピック設定をコピーしないでください。「[既存のトピックでの階層型ストレージの有効化と無効化](https://docs.aws.amazon.com/msk/latest/developerguide/msk-enable-disable-topic-tiered-storage-cli.html)」を参照してください。
+ MSK レプリケーターの作成後にクラスター設定の設定内容を変更しないでください。クラスター設定の設定内容は MSK レプリケーターの作成中に検証されます。MSK レプリケーターでの問題を回避するために、MSK レプリケーターの作成後に次の設定を変更しないでください。
  + MSK クラスターを t3 インスタンスタイプに変更する。
  + サービス実行ロールのアクセス許可を変更する。
  + MSK マルチ VPC プライベート接続を無効にする。
  + アタッチされたクラスターのリソースベースポリシーを変更する。
  + クラスターセキュリティグループルールを変更する。

# ターゲットクラスターリージョンで AWS コンソールを使用してレプリケーターを作成する
<a name="msk-replicator-create-console"></a>

次のセクションでは、レプリケーターを作成するためのステップごとのコンソールワークフローについて説明します。

**レプリケーターの詳細**

1. ターゲット MSK クラスターがある AWS リージョンで、[https://console.aws.amazon.com/msk/home?region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/) で Amazon MSK コンソールを開きます。

1. **[レプリケーター]** を選択すると、アカウント内のレプリケーターのリストが表示されます。

1. **[レプリケータの作成]** を選択します。

1. **[レプリケータの詳細]** ペインで、新しいレプリケーターに一意の名前を付けます。

## ソースクラスターの選択
<a name="msk-replicator-create-console-choose-source"></a>

ソースクラスターには、ターゲット MSK クラスターにコピーするデータが含まれています。

1. **[ソースクラスター]** ペインで、ソースクラスターが配置されている AWS リージョンを選択します。

   クラスターのリージョンを調べるには、**[MSK クラスター]** に移動し、**[クラスター]** の詳細で ARN を確認します。リージョン名は ARN 文字列に埋め込まれています。次の例の ARN では、`ap-southeast-2` がクラスターリージョンです。

   ```
   arn:aws:kafka:ap-southeast-2:123456789012:cluster/cluster-11/eec93c7f-4e8b-4baf-89fb-95de01ee639c-s1
   ```

1. ソースクラスターの ARN を入力するか、参照してソースクラスターを選択します。

1. ソースクラスターのサブネットを選択します。

   コンソールには、ソースクラスターのリージョンで使用可能なサブネットが表示され、そこから選択できます。少なくとも 2 つのサブネットを選択する必要があります。同一リージョン MSK レプリケーターの場合、ソースクラスターにアクセスするために選択するサブネットと、ターゲットクラスターにアクセスするためのサブネットが、同じアベイラビリティーゾーンにある必要があります。

1. MSK レプリケーターがソースクラスターにアクセスするためのセキュリティグループを選択します。
   + クロスリージョンレプリケーション (CRR) の場合、ソースクラスターのセキュリティグループを指定する必要はありません。
   + 同一リージョンレプリケーション (SRR) の場合は、Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) にアクセスし、レプリケーター用に指定するセキュリティグループに、ソースクラスターのセキュリティグループへのトラフィックを許可するアウトバウンドルールがあることを確認します。同様に、ソースクラスターのセキュリティグループに、ソース用に指定したレプリケーターセキュリティグループからのトラフィックを許可するインバウンドルールがあることを確認します。

      

**ソースクラスターのセキュリティグループにインバウンドルールを追加するには**

     1.  AWS コンソールで、クラスター**名を選択してソースクラスター**の詳細に移動します。

     1. **[プロパティ]** タブを選択し、**[ネットワーク設定]** ペインまで下にスクロールして、適用する**セキュリティグループ**の名前を選択します。

     1. インバウンドルールに移動し、**[インバウンドルールの編集]** を選択します。

     1. **[Add rule]** (ルールを追加) を選択します。

     1. 新しいルールの **[タイプ]** 列で、**[カスタム TCP]** を選択します。

     1. **[ポート範囲]** 列に「`9098`」と入力します。MSK Replicator は IAM アクセスコントロールを使用して、9098 番ポートを使用するクラスターに接続します。

     1. **[ソース]** 列に、レプリケーター作成時にソースクラスター用に指定するセキュリティグループの名前 (これは、MSK ソースクラスターのセキュリティグループと同じになる場合があります) を入力し、**[ルールの保存]** を選択します。

      

**ソース用に指定したレプリケーターのセキュリティグループにアウトバウンドルールを追加するには**

     1. Amazon EC2 の AWS コンソールで、ソースのレプリケーターの作成時に指定するセキュリティグループに移動します。

     1. アウトバウンドルールに移動し、**[アウトバウンドルールの編集]** を選択します。

     1. **[Add rule]** (ルールを追加) を選択します。

     1. 新しいルールの **[タイプ]** 列で、**[カスタム TCP]** を選択します。

     1. **[ポート範囲]** 列に「`9098`」と入力します。MSK Replicator は IAM アクセスコントロールを使用して、9098 番ポートを使用するクラスターに接続します。

     1. **[ソース]** 列に、MSK ソースクラスターのセキュリティグループの名前を入力し、**[ルールの保存]** を選択します。

**注記**  
あるいは、セキュリティグループを使用したトラフィックの制限を希望しない場合は、すべてのトラフィックを許可するインバウンドルールとアウトバウンドルールを追加できます。  
1. **[Add rule]** (ルールを追加) を選択します。  
2. **[タイプ]** 列で **[すべてのトラフィック]** を選択します。  
3. [ソース] 列に `0.0.0.0/0` と入力し、**[ルールの保存]** を選択します。

## ターゲットクラスターの選択
<a name="msk-replicator-create-console-choose-target"></a>

ターゲットクラスターは、ソースデータのコピー先となる、MSK プロビジョンドクラスターまたはサーバーレスクラスターです。

**注記**  
MSK レプリケーターは、ターゲットクラスターに新しいトピックを作成し、自動生成されたプレフィックスをトピック名に追加します。例えば、MSK レプリケーターは、ソースクラスターの「`topic`」内のデータをターゲットクラスターの `<sourceKafkaClusterAlias>.topic` という名前の新しいトピックにレプリケートします。これは、ソースクラスターからレプリケートされたデータを含むトピックを、ターゲットクラスターの他のトピックと区別し、データがクラスター間で循環的にレプリケートされないようにするためです。ターゲットクラスターでトピック名に追加されるプレフィックスは、`DescribeReplicator` API を使用して **sourceKafkaClusterAlias** フィールドで確認するか、または MSK コンソールの **[レプリケータの詳細]** ページで確認することができます。ターゲットクラスターのプレフィックスは `<sourceKafkaClusterAlias>` です。

1. **ターゲットクラスター**ペインで、ターゲットクラスターがある AWS リージョンを選択します。

1. ターゲットクラスターの ARN を入力するか、参照してターゲットクラスターを選択します。

1. ターゲットクラスターのサブネットを選択します。

   コンソールには、ターゲットクラスターのリージョンで使用可能なサブネットが表示され、そこから選択できます。少なくとも 2 つのサブネットを選択します。

1. MSK レプリケーターがターゲットクラスターにアクセスするためのセキュリティグループを選択します。

   ターゲットクラスターのリージョンで使用可能なセキュリティグループが表示され、そこから選択できます。選択したセキュリティグループは各接続に関連付けられます。セキュリティグループの使用の詳細については、*「Amazon VPC ユーザーガイド*」の[「セキュリティグループを使用して AWS リソースへのトラフィックを制御する](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html)」を参照してください。
   + クロスリージョンレプリケーション (CRR) と同一リージョンレプリケーション (SRR) のどちらの場合も、Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) にアクセスし、レプリケーター用に指定するセキュリティグループに、ターゲットクラスターのセキュリティグループへのトラフィックを許可するアウトバウンドルールがあることを確認します。また、ターゲットクラスターのセキュリティグループに、ターゲット用に指定されたレプリケーターセキュリティグループからのトラフィックを受け入れるインバウンドルールがあることを確認します。

      

**ターゲットクラスターのセキュリティグループにインバウンドルールを追加するには**

     1.  AWS コンソールで、クラスター**名を選択してターゲットクラスター**の詳細に移動します。

     1. **[プロパティ]** タブを選択し、[ネットワーク設定] ペインまで下にスクロールして、適用する**セキュリティグループ**の名前を選択します。

     1. インバウンドルールに移動し、**[インバウンドルールの編集]** を選択します。

     1. **[Add rule]** (ルールを追加) を選択します。

     1. 新しいルールの **[タイプ]** 列で、**[カスタム TCP]** を選択します。

     1. **[ポート範囲]** 列に「`9098`」と入力します。MSK Replicator は IAM アクセスコントロールを使用して、9098 番ポートを使用するクラスターに接続します。

     1. **[ソース]** 列に、レプリケーター作成時にターゲットクラスター用に指定するセキュリティグループの名前 (これは、MSK ターゲットクラスターのセキュリティグループと同じになる場合があります) を入力し、**[ルールの保存]** を選択します。

      

**ターゲット用に指定したレプリケーターのセキュリティグループにアウトバウンドルールを追加するには**

     1.  AWS コンソールで、ターゲットのレプリケーターの作成時に指定するセキュリティグループに移動します。

     1. **[プロパティ]** タブを選択し、[ネットワーク設定] ペインまで下にスクロールして、適用する**セキュリティグループ**の名前を選択します。

     1. アウトバウンドルールに移動し、**[アウトバウンドルールの編集]** を選択します。

     1. **[Add rule]** (ルールを追加) を選択します。

     1. 新しいルールの **[タイプ]** 列で、**[カスタム TCP]** を選択します。

     1. **[ポート範囲]** 列に「`9098`」と入力します。MSK Replicator は IAM アクセスコントロールを使用して、9098 番ポートを使用するクラスターに接続します。

     1. **[ソース]** 列で、MSK ターゲットクラスターのセキュリティグループの名前を入力し、**[ルールの保存]** を選択します。

**注記**  
あるいは、セキュリティグループを使用したトラフィックの制限を希望しない場合は、すべてのトラフィックを許可するインバウンドルールとアウトバウンドルールを追加できます。  
1. **[Add rule]** (ルールを追加) を選択します。  
2. **[タイプ]** 列で **[すべてのトラフィック]** を選択します。  
3. [ソース] 列に `0.0.0.0/0` と入力し、**[ルールの保存]** を選択します。

## レプリケータの設定とアクセス許可を設定します。
<a name="msk-replicator-create-settings"></a>

1. **[レプリケータ設定]** ペインで、レプリケートするトピックを、正規表現を使用して許可リストと拒否リストに指定します。デフォルトでは、すべてのトピックがレプリケートされます。
**注記**  
MSK Replicator は、ソート順に最大 750 のトピックのみをレプリケートします。より多くのトピックをレプリケートする必要がある場合は、別のレプリケーターを作成することをお勧めします。レプリケーターあたり 750 を超えるトピックのサポートが必要な場合は、 AWS コンソールサポートセンターに移動し[、サポートケースを作成します](https://console.aws.amazon.com/support/home#/)。レプリケートされるトピックの数は、「TopicCount」メトリクスを使用してモニタリングできます。「[Amazon MSK 標準 ブローカークォータ](limits.md#msk-provisioned-quota)」を参照してください。

1. デフォルトでは、MSK Replicator は、選択したトピックの*最も新しい*オフセットからレプリケーションを開始します。あるいは、トピックの既存のデータをレプリケートする場合は、選択したトピックの*最も古い*オフセットからレプリケーションを開始できます。レプリケーターが作成されると、この設定を変更することはできません。この設定は、 リクエスト[https://docs.aws.amazon.com/msk/1.0/apireference-replicator/v1-replicators-replicatorarn.html#DescribeReplicator](https://docs.aws.amazon.com/msk/1.0/apireference-replicator/v1-replicators-replicatorarn.html#DescribeReplicator) API および レスポンス API の [https://docs.aws.amazon.com/msk/1.0/apireference-replicator/v1-replicators-replicatorarn.html#v1-replicators-replicatorarn-model-replicationstartingposition](https://docs.aws.amazon.com/msk/1.0/apireference-replicator/v1-replicators-replicatorarn.html#v1-replicators-replicatorarn-model-replicationstartingposition)フィールドに対応[https://docs.aws.amazon.com/msk/1.0/apireference-replicator/v1-replicators.html#CreateReplicator](https://docs.aws.amazon.com/msk/1.0/apireference-replicator/v1-replicators.html#CreateReplicator)します。

1. トピック名の設定を選択します。
   + `PREFIXED` トピック名レプリケーション (コンソールで**トピック名にプレフィックスを追加**): デフォルト設定。MSK Replicator は、ソースクラスターの「topic1」をターゲットクラスター内の新しいトピックに `<sourceKafkaClusterAlias>.topic1` という名前でレプリケートします。
   + 同一トピック名レプリケーション (コンソールで**同じトピック名を保持**): ソースクラスターのトピックは、ターゲットクラスターに同一のトピック名でレプリケートされます。

   この設定は、`CreateReplicator` リクエスト API と `DescribeReplicator` レスポンス API の `TopicNameConfiguration` フィールドに対応します。「[Amazon MSK Replicator の仕組み](msk-replicator-how-it-works.md)」を参照してください。
**注記**  
デフォルトでは、MSK Replicator は、自動生成されたプレフィックスをトピック名に追加した新しいトピックをターゲットクラスターに作成します。これは、ソースクラスターからレプリケートされたデータを含むトピックを、ターゲットクラスターの他のトピックと区別し、データがクラスター間で循環的にレプリケートされないようにするためです。あるいは、同一トピック名レプリケーション (コンソールで**同じトピック名を保持**) を使用して MSK レプリケーターを作成し、レプリケーション中にトピック名が保持されるようにすることもできます。この設定により、セットアップ中にクライアントアプリケーションを再設定する必要性が減り、マルチクラスターストリーミングアーキテクチャの操作が簡単になります。

1. デフォルトでは、MSK レプリケーターは、トピック設定、アクセスコントロールリスト (ACL)、コンシューマーグループのオフセットを含むすべてのメタデータをコピーし、シームレスなフェイルオーバーを実現します。フェイルオーバー用にレプリケーターを作成しない場合は、オプションで、**[追加設定]** セクションで使用可能なこれらの設定の 1 つ以上を無効にすることができます。
**注記**  
MSK レプリケーターは書き込み ACL をレプリケートしません。これは、プロデューサーがターゲットクラスター内のレプリケートされたトピックに直接書き込みを行えないようにするためです。プロデューサーは、フェイルオーバー後にターゲットクラスターのローカルトピックに書き込む必要があります。詳細については、「[セカンダリ AWS リージョンへの計画的なフェイルオーバーを実行する](msk-replicator-perform-planned-failover.md)」を参照してください。

1. **[コンシューマーグループのレプリケーション]** ペインで、レプリケートするコンシューマーグループを、正規表現を使用して許可リストと拒否リストに指定します。デフォルトでは、すべてのコンシューマーグループがレプリケートされます。

1. **[圧縮]** ペインでは、オプションで、ターゲットクラスターに書き込まれたデータを圧縮することを選択できます。圧縮を使用する場合は、ソースクラスターのデータと同じ圧縮方式を使用することが推奨されます。

1. **[アクセス許可]** ペインで、次のいずれかを実行します。

   1. **[必要なポリシーで IAM ロールを作成または更新]** を選択します。MSK コンソールは、ソースおよびターゲット MSK クラスターに対する読み取りと書き込みに必要なサービス実行ロールに、必要なアクセス許可と信頼ポリシーを自動的にアタッチします。  
![\[レプリケーター IAM ロールを作成または更新するための MSK コンソール\]](http://docs.aws.amazon.com/ja_jp/msk/latest/developerguide/images/msk-replicator-ezCRC.png)

   1. **[Amazon MSK が引き受けることができる IAM ロールから選択]** を選択して、独自の IAM ロールを指定します。独自の IAM ポリシーを記述するのではなく、`AWSMSKReplicatorExecutionRole` マネージド IAM ポリシーをサービス実行ロールにアタッチすることをお勧めします。

      1. 信頼ポリシーの一部として以下の JSON を使用し、ロールに `AWSMSKReplicatorExecutionRole` をアタッチして、レプリケーターがソースおよびターゲット MSK クラスターへの読み込みと書き込みに使用する IAM ロールを作成します。す。信頼ポリシー内のプレースホルダー <yourAccountID> は、実際のアカウント ID に置き換えてください。

------
#### [ JSON ]

****  

        ```
        {
            "Version":"2012-10-17",		 	 	 
            "Statement": [
                {
                    "Effect": "Allow",
                    "Principal": {
                        "Service": "kafka.amazonaws.com"
                    },
                    "Action": "sts:AssumeRole",
                    "Condition": {
                        "StringEquals": {
                            "aws:SourceAccount": "<yourAccountID>"
                        }
                    }
                }
            ]
        }
        ```

------

1. **[レプリケータータグ]** ペインでは、オプションで、MSK レプリケーターリソースにタグを割り当てることができます。詳細については、「[Amazon MSK クラスターをタグ付ける](msk-tagging.md)」を参照してください。クロスリージョン MSK レプリケーターの場合、タグは、レプリケーターの作成時に自動的にリモートリージョンに同期されます。レプリケーターの作成後にタグを変更しても、その変更はリモートリージョンに自動的に同期されないため、ローカルレプリケーターとリモートレプリケーターのリファレンスを手動で同期する必要があります。

1. **[作成]** を選択します。

`kafka-cluster:WriteData` アクセス許可を制限する場合は、「[Amazon MSK の IAM アクセスコントロールの仕組み](https://docs.aws.amazon.com/msk/latest/developerguide/iam-access-control.html#how-to-use-iam-access-control)」の「*承認ポリシーの作成*」セクションを参照してください。ソースクラスターとターゲットクラスターの両方に `kafka-cluster:WriteDataIdempotently` アクセス許可を追加する必要があります。

MSK レプリケーターが正常に作成され、RUNNING ステータスに移行するまでに約 30 分かかります。

削除した MSK レプリケーターを置き換えるために新しい MSK レプリケーターを作成すると、新しいレプリケーターは最新のオフセットからレプリケーションを開始します。

MSK レプリケーターが FAILED ステータスに移行した場合は、トラブルシューティングのセクション「[Troubleshooting MSK Replicator](msk-replicator-troubleshooting.md)」を参照してください。

# MSK レプリケータ設定の編集
<a name="msk-replicator-edit-settings"></a>

MSK レプリケーターの作成後は、ソースクラスター、ターゲットクラスター、レプリケーターの開始位置、またはトピック名レプリケーション設定を変更することはできません。同一トピック名レプリケーション設定を使用するには、新しいレプリケーターを作成する必要があります。ただし、レプリケートするトピックやコンシューマーグループなど、その他のレプリケーター設定については編集が可能です。

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/msk/home?region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/) で Amazon MSK コンソールを開きます。

1. 左側のナビゲーションペインで、**[レプリケーター]** を選択してアカウント内のレプリケーターのリストを表示し、編集する MSK レプリケーターを選択します。

1. **[プロパティ]** タブを選択します。

1. **[レプリケータ設定]** セクションで、**[レプリケーターを編集]** を選択します。

1. これらの任意の設定を変更することで、MSK レプリケータ設定を編集できます。
   + 許可リストと拒否リストで、レプリケートするトピックを正規表現を使用して指定します。デフォルトでは、MSK レプリケーターは、トピック設定、アクセスコントロールリスト (ACL)、コンシューマーグループのオフセットを含むすべてのメタデータをコピーし、シームレスなフェイルオーバーを実現します。フェイルオーバー用にレプリケーターを作成しない場合は、オプションで、**[追加設定]** セクションで使用可能なこれらの設定の 1 つ以上を無効にすることができます。
**注記**  
MSK レプリケーターは書き込み ACL をレプリケートしません。これは、プロデューサーがターゲットクラスター内のレプリケートされたトピックに直接書き込みを行えないようにするためです。プロデューサーは、フェイルオーバー後にターゲットクラスターのローカルトピックに書き込む必要があります。詳細については、「[セカンダリ AWS リージョンへの計画的なフェイルオーバーを実行する](msk-replicator-perform-planned-failover.md)」を参照してください。
   + **[コンシューマーグループのレプリケーション]** では、レプリケートするコンシューマーグループを、正規表現を使用して許可リストと拒否リストに指定できます。デフォルトでは、すべてのコンシューマーグループがレプリケートされます。許可リストと拒否リストが空の場合、コンシューマーグループのレプリケーションは無効です。
   + **[ターゲット圧縮タイプ]** では、ターゲットクラスターに書き込まれるデータを圧縮するかどうかを選択できます。圧縮を使用する場合は、ソースクラスターのデータと同じ圧縮方式を使用することが推奨されます。

1. 変更内容を保存します。

   MSK レプリケーターが正常に作成され、実行中状態に移行するまでに約 30 分かかります。MSK レプリケーターが FAILED ステータスに移行した場合は、トラブルシューティングのセクション「[MSK Replicator のトラブルシューティング](msk-replicator-troubleshooting.md)」を参照してください。

# MSK レプリケーターの削除
<a name="msk-replicator-delete"></a>

作成に失敗した場合 (FAILED ステータス)、MSK レプリケーターは削除する必要がある場合があります。MSK レプリケーターに割り当てられたソースクラスターとターゲットクラスターは、レプリケーターの作成後に変更することはできません。既存の MSK レプリケーターを削除して、新しいレプリケーターを作成できます。新しい MSK レプリケーターを作成して、削除したレプリケーターと置き換える場合、新しいレプリケーターは最新のオフセットからレプリケーションを開始します。

1. ソースクラスターがある AWS リージョンで、 にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/msk/home?region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/) で Amazon MSK コンソールを開きます。

1. ナビゲーションペインで、**[レプリケーター]** を選択します。

1. MSK レプリケーターのリストから、削除するレプリケーターを選択し、**[削除]** を選択します。

# レプリケーションのモニタリング
<a name="msk-replicator-monitor"></a>

ターゲットクラスターリージョンで [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を使用すると、`ReplicationLatency`、`MessageLag`、`ReplicatorThroughput` のメトリクスを各 Amazon MSK Replicator のトピックレベルと集計レベルで表示できます。メトリクスは、「AWS/Kafka」名前空間の **[ReplicatorName]** の下に表示されます。また、`ReplicatorFailure`、`AuthError`、`ThrottleTime` メトリクスを参照して、問題がないかを確認することもできます。

MSK コンソールには、各 MSK レプリケーターの CloudWatch メトリクスのサブセットが表示されます。コンソールの **[レプリケーター]** リストから、レプリケーターの名前を選択し、**[モニタリング]** タブを選択します。

## MSK レプリケーターのメトリクス
<a name="msk-replicator-metrics"></a>

次のメトリクスは、MSK レプリケーターのパフォーマンスまたは接続のメトリクスを示しています。

AuthError メトリクスには、トピックレベルの認証エラーは含まれません。MSK レプリケーターのトピックレベルの認証エラーをモニタリングするには、レプリケーターの ReplicationLatency メトリクスとソースクラスターのトピックレベルのメトリクス MessagesInPerSec をモニタリングします。トピックの ReplicationLatency が 0 に低下してもトピックでまだデータが生成されている場合は、レプリケーターにそのトピックに関する認証の問題があることを示しています。レプリケーターのサービス実行 IAM ロールに、トピックにアクセスするための十分なアクセス許可があることを確認してください。


****  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/msk/latest/developerguide/msk-replicator-monitor.html)

# レプリケーションを使用してリージョン間の Kafka ストリーミングアプリケーションの耐障害性を高める
<a name="msk-replicator-increase-resiliency"></a>

MSK レプリケーターを使用して、アクティブ/アクティブまたはアクティブ/パッシブクラスタートポロジを設定し、 AWS リージョン間で Apache Kafka アプリケーションの耐障害性を高めることができます。アクティブ/アクティブ設定では、両方の MSK クラスターが読み取りと書き込みをアクティブに処理します。アクティブ/パッシブ設定では、一度に 1 つの MSK クラスターのみがストリーミングデータをアクティブに処理し、もう一方のクラスターはスタンバイ状態になります。

## マルチリージョン Apache Kafka アプリケーションを構築する際の考慮事項
<a name="msk-replication-multi-region-kafka-applications"></a>

コンシューマーは、ダウンストリームに影響を与えることなく、重複したメッセージを再処理できる必要があります。MSK レプリケーターは、少なくとも 1 回はデータをレプリケートするため、スタンバイクラスターで重複が発生する可能性があります。セカンダリ AWS リージョンに切り替えると、コンシューマーが同じデータを複数回処理することがあります。MSK レプリケーターは、パフォーマンスを向上させるために、コンシューマーオフセットよりもデータのコピーを優先します。フェイルオーバー後に、コンシューマーが以前のオフセットから読み取りを開始し、それによって重複処理が発生する可能性があります。

プロデューサーとコンシューマーは、最小限のデータ損失を許容する必要もあります。MSK レプリケーターはデータを非同期的にレプリケートするため、プライマリ AWS リージョンで障害が発生し始めると、すべてのデータがセカンダリリージョンにレプリケートされる保証はありません。レプリケーションのレイテンシーに基づいて、セカンダリリージョンにコピーされなかった最大データ量を判別できます。

## アクティブ/アクティブとアクティブ/パッシブのクラスタートポロジの使用
<a name="msk-replicator-active-versus-passive"></a>

アクティブ/アクティブのクラスタートポロジを使用すると、復旧時間がほぼゼロになり、ストリーミングアプリケーションを複数の AWS リージョンで同時に動作させることができます。一方のリージョンのクラスターに障害が発生しても、もう一方のリージョンのクラスターに接続されているアプリケーションがデータの処理を続行します。

アクティブ/パッシブ設定は、一度に 1 つの AWS リージョンでのみ実行できるアプリケーションや、データ処理順序をより細かく制御する必要があるアプリケーションに適しています。アクティブ/パッシブ設定では、アクティブ/アクティブ設定よりも復旧時間が長くなります。これは、フェイルオーバー後にデータのストリーミングを再開するには、プロデューサーとコンシューマーを含めて、アクティブ/パッシブ設定全体をセカンダリリージョンで開始する必要があるためです。

# 推奨されるトピック命名設定を使用してアクティブ/パッシブ Kafka クラスター設定を作成する
<a name="msk-replicators-active-passive-cluster-setup"></a>

アクティブ/パッシブ設定では、プロデューサー、MSK クラスター、コンシューマー (同じコンシューマーグループ名) の同様の設定を 2 つの異なる AWS リージョンで運用することをお勧めします。信頼性の高いデータレプリケーションを実現するには、2 つの MSK クラスターの読み取り容量と書き込み容量が同じであることが重要です。プライマリクラスターからスタンバイクラスターにデータを継続的にコピーするには、MSK レプリケーターを作成する必要があります。また、同じ AWS リージョンのクラスターのトピックにデータを書き込むようにプロデューサーを設定する必要があります。

アクティブ/パッシブ設定では、同一トピック名レプリケーション (コンソールで**同じトピック名を保持**) を使用して新しいレプリケーターを作成し、プライマリリージョンの MSK クラスターからセカンダリリージョンのクラスターへのデータのレプリケートを開始します。2 つの AWS リージョンで重複するプロデューサーとコンシューマーのセットを操作することをお勧めします。各リージョンは、ブートストラップ文字列を使用して独自のリージョンのクラスターに接続されます。これにより、ブートストラップ文字列の変更が不要になるため、フェイルオーバープロセスが簡素化されます。コンシューマーが中断した場所の近くから読み込みできるようにするには、ソースクラスターとターゲットクラスターのコンシューマーが同じコンシューマーグループ ID を持つ必要があります。

MSK レプリケーターに同一トピック名レプリケーション (コンソールで**同じトピック名を保持**) を使用した場合、トピックは対応するソーストピックと同じ名前でレプリケートされます。

ターゲットクラスターのクライアントに対してクラスターレベルの設定とアクセス許可を設定することをお勧めします。アクセスコントロールリストをコピーするオプションを選択した場合、MSK Replicator によってトピックレベルの設定とリテラル読み込み ACL が自動的にコピーされるため、ユーザーによる設定は必要ありません。「[メタデータレプリケーション](msk-replicator-how-it-works.md#msk-replicator-metadata-replication)」を参照してください。

# セカンダリ AWS リージョンへのフェイルオーバー
<a name="msk-replicator-when-planned-failover"></a>

Amazon CloudWatch を使用してセカンダリ AWS リージョンのレプリケーションレイテンシーをモニタリングすることをお勧めします。プライマリ AWS リージョンのサービスイベント中に、レプリケーションのレイテンシーが突然増加する可能性があります。レイテンシーが増加し続ける場合は、 AWS Service Health Dashboard を使用して、プライマリ AWS リージョンのサービスイベントを確認します。イベントが発生した場合は、セカンダリ AWS リージョンにフェイルオーバーできます。

# セカンダリ AWS リージョンへの計画的なフェイルオーバーを実行する
<a name="msk-replicator-perform-planned-failover"></a>

計画的なフェイルオーバーを実行して、ソース MSK クラスターがあるプライマリ AWS リージョンで予期しないイベントに対してアプリケーションの耐障害性をテストできます。計画的なフェイルオーバーによってデータが失われることはありません。

同一トピック名レプリケーション設定を使用している場合は、次の手順に従います。

1. ソースクラスターに接続しているすべてのプロデューサーとコンシューマーをシャットダウンします。

1. 同一トピック名レプリケーション (コンソールで**同じトピック名を保持**) を使用して新しい MSK レプリケーターを作成し、セカンダリリージョンの MSK クラスターからプライマリリージョンの MSK クラスターにデータをレプリケートします。これは、セカンダリリージョンに書き込むデータをプライマリリージョンにコピーバックするために必要です。これにより、予期しないイベントが終了した後にプライマリリージョンにフェイルバックできるようになります。

1. セカンダリ AWS リージョンでターゲットクラスターに接続されたプロデューサーとコンシューマーを起動します。

プレフィックス付きトピック名設定を使用している場合は、次の手順に従ってフェイルオーバーします。

1. ソースクラスターに接続しているすべてのプロデューサーとコンシューマーをシャットダウンします。

1. 新しい MSK レプリケーターを作成して、セカンダリリージョンの MSK クラスターからプライマリリージョンの MSK クラスターにデータをレプリケートします。これは、セカンダリリージョンに書き込むデータをプライマリリージョンにコピーバックするために必要です。これにより、予期しないイベントが終了した後にプライマリリージョンにフェイルバックできるようになります。

1. セカンダリ AWS リージョンのターゲットクラスターでプロデューサーを起動します。

1. アプリケーションのメッセージ順序要件に応じて、次のいずれかのタブのステップを実行します。

------
#### [ No message ordering ]

   アプリケーションでメッセージの順序付けが必要ない場合は、ワイルドカード演算子 ( など) を使用して、ローカルトピック ( トピックなど) とレプリケートされたトピック ( など`<sourceKafkaClusterAlias>.topic`) の両方から読み取るセカンダリ AWS リージョンでコンシューマーを起動します`.*topic`。

------
#### [ Message ordering ]

   アプリケーションでメッセージの順序付けが必要な場合は、ターゲットクラスター上のレプリケートされたトピック (`<sourceKafkaClusterAlias>.topic` など) のコンシューマーのみを起動し、ローカルトピック (`topic` など) のコンシューマーは起動しません。

------

1. ターゲット MSK クラスター上のレプリケートされたトピックのすべてのコンシューマーがすべてのデータの処理を終了して、コンシューマーラグが 0 になり、処理されたレコード数も 0 になるのを待ちます。次に、ターゲットクラスター上のレプリケートされたトピックのコンシューマーを停止します。この時点で、ソース MSK クラスターからターゲット MSK クラスターにレプリケートされたすべてのレコードが消費されました。

1. ターゲット MSK クラスター上のローカルトピック (`topic` など) のコンシューマーを起動します。

# セカンダリ AWS リージョンへの計画外のフェイルオーバーを実行する
<a name="msk-replicator-perform-unplanned-failover"></a>

ソース MSK クラスターがあるプライマリ AWS リージョンにサービスイベントがあり、ターゲット MSK クラスターがあるセカンダリリージョンにトラフィックを一時的にリダイレクトする場合は、予期しないフェイルオーバーを実行できます。MSK Replicator はデータを非同期的にレプリケートするため、計画外のフェイルオーバーが発生すると、データが失われる可能性があります。[レプリケーションのモニタリング](msk-replicator-monitor.md) のメトリクスを使用して、メッセージの遅延を追跡できます。

同一トピック名レプリケーション設定 (コンソールで**同じトピック名を保持**) を使用している場合は、次の手順に従います。

1. プライマリリージョンのソース MSK クラスターに接続しているすべてのプロデューサーとコンシューマーをシャットダウンしてみます。この操作は、そのリージョンの障害が原因で成功しない可能性があります。

1. セカンダリ AWS リージョンのターゲット MSK クラスターに接続するプロデューサーとコンシューマーを起動して、フェイルオーバーを完了します。MSK Replicator は、読み取り ACL やコンシューマーグループのオフセットなどのメタデータもレプリケートするため、プロデューサーとコンシューマーはフェイルオーバー前に中断した場所からシームレスに処理を再開します。

`PREFIX` トピック名設定を使用している場合は、次の手順に従ってフェイルオーバーします。

1. プライマリリージョンのソース MSK クラスターに接続しているすべてのプロデューサーとコンシューマーをシャットダウンしてみます。この操作は、そのリージョンの障害が原因で成功しない可能性があります。

1. セカンダリ AWS リージョンのターゲット MSK クラスターに接続するプロデューサーとコンシューマーを起動して、フェイルオーバーを完了します。MSK Replicator は、読み取り ACL やコンシューマーグループのオフセットなどのメタデータもレプリケートするため、プロデューサーとコンシューマーはフェイルオーバー前に中断した場所からシームレスに処理を再開します。

1. アプリケーションのメッセージ順序要件に応じて、次のいずれかのタブのステップを実行します。

------
#### [ No message ordering ]

   アプリケーションでメッセージの順序付けが必要ない場合は、ワイルドカード演算子 ( など`topic`) を使用して、ローカルトピック ( など) とレプリケートされたトピック ( など`<sourceKafkaClusterAlias>.topic`) の両方から読み取るターゲット AWS リージョンでコンシューマーを起動します`.*topic`。

------
#### [ Message ordering ]

   1. ターゲットクラスター上のレプリケートされたトピック (`<sourceKafkaClusterAlias>.topic` など) のコンシューマーのみを起動し、ローカルトピック (`topic` など) のコンシューマーは起動しません。

   1. ターゲット MSK クラスター上のレプリケートされたトピックのすべてのコンシューマーがすべてのデータの処理を終了して、オフセットラグが 0 になり、処理されたレコード数も 0 になるのを待ちます。次に、ターゲットクラスター上のレプリケートされたトピックのコンシューマーを停止します。この時点で、ソース MSK クラスターからターゲット MSK クラスターにレプリケートされたすべてのレコードが消費されました。

   1. ターゲット MSK クラスター上のローカルトピック (`topic` など) のコンシューマーを起動します。

------

1. プライマリリージョンでサービスイベントが終了したら、新しい MSK レプリケーターを作成し、レプリケーターの開始位置を *earliest* に設定して、セカンダリリージョンの MSK クラスターからプライマリリージョンの MSK クラスターにデータをレプリケートします。これは、セカンダリリージョンに書き込むデータをプライマリリージョンにコピーバックするために必要です。これにより、サービスイベントが終了した後にプライマリリージョンにフェイルバックできるようになります。レプリケーターの開始位置を *earliest* に設定しない場合、プライマリリージョンのサービスイベント中にセカンダリリージョンのクラスターに生成したデータは、プライマリリージョンのクラスターにコピーされません。

# プライマリ AWS リージョンへのフェイルバックを実行する
<a name="msk-replicator-perform-failback"></a>

その AWS リージョンのサービスイベントが終了したら、プライマリリージョンにフェイルバックできます。

同一トピック名レプリケーション設定を使用している場合は、次の手順に従います。

1. セカンダリクラスターをソース、プライマリクラスターをターゲットとし、開始位置を *earliest* に設定して、同一トピック名レプリケーション (コンソールで**同じトピック名を保持**) を使用して、新しい MSK レプリケーターを作成します。

   これにより、プライマリリージョンへのフェイルオーバー後にセカンダリクラスターに書き込まれたすべてのデータをコピーするプロセスが開始されます。

1. Amazon CloudWatch で、新しいレプリケーターの `MessageLag` メトリクスを、すべてのデータがセカンダリからプライマリにレプリケートされたことを示す `0` に達するまでモニタリングします。

1. すべてのデータがレプリケートされたら、セカンダリクラスターに接続しているすべてのプロデューサーを停止し、プライマリクラスターに接続しているプロデューサーを起動します。

1. セカンダリクラスターに接続しているコンシューマーの `MaxOffsetLag` メトリクスが `0` になるまで待機し、すべてのデータを処理されたことを確認します。「[コンシューマーラグをモニタリングする](consumer-lag.md)」を参照してください。

1. すべてのデータが処理されたら、セカンダリリージョンのコンシューマーを停止し、プライマリクラスターに接続しているコンシューマーを起動してフェイルバックを完了します。

1. セカンダリクラスターからプライマリにデータをレプリケートする最初のステップで作成したレプリケーターを削除します。

1. プライマリクラスターからセカンダリクラスターにデータをコピーしている既存のレプリケーターのステータスが「RUNNING」で、Amazon CloudWatch の `ReplicatorThroughput` メトリクスが `0` であることを確認します。

   フェイルバックの開始位置を *Earliest* として新しいレプリケーターを作成すると、そのレプリケーターはセカンダリクラスターのトピック内のすべてのデータの読み込みを開始します。データ保持設定によっては、トピックにソースクラスターから取得されたデータが含まれる場合があります。MSK Replicator はこれらのメッセージを自動的にフィルタリングしますが、セカンダリクラスター内のすべてのデータに対してデータ処理および転送料金が発生します。`ReplicatorBytesInPerSec` を使用して、レプリケーターによって処理されたデータの合計を追跡できます。「[MSK レプリケーターのメトリクス](msk-replicator-monitor.md#msk-replicator-metrics)」を参照してください。

プレフィックス付きトピック名設定を使用している場合は、次のステップに従います。

フェイルバックステップは、セカンダリリージョンのクラスターからプライマリリージョンのクラスターへのレプリケーションがキャッチアップし、Amazon CloudWatch の MessageLag メトリクスが 0 に近づいてから開始する必要があります。計画的なフェイルバックによってデータが失われることはありません。

1. セカンダリリージョンの MSK クラスターに接続しているすべてのプロデューサーとコンシューマーをシャットダウンします。

1. アクティブ/パッシブトポロジの場合は、セカンダリリージョンのクラスターからプライマリリージョンにデータをレプリケートしているレプリケーターを削除します。アクティブ/アクティブトポロジの場合は、レプリケーターを削除する必要はありません。

1. プライマリリージョンの MSK クラスターに接続しているプロデューサーを起動します。

1. アプリケーションのメッセージ順序要件に応じて、次のいずれかのタブのステップを実行します。

------
#### [ No message ordering ]

   アプリケーションでメッセージの順序付けが必要ない場合は、ワイルドカード演算子 ( など`topic`) を使用して、ローカルトピック ( など) とレプリケートされたトピック ( など`<sourceKafkaClusterAlias>.topic`) の両方から読み取るプライマリ AWS リージョンでコンシューマーを起動します`.*topic`。ローカルトピック (topic など) のコンシューマーは、フェイルオーバー前に消費した最後のオフセットから再開します。フェイルオーバー前に未処理のデータがあった場合は、この時点で処理されます。計画的なフェイルオーバーの場合は、そのようなレコードはないはずです。

------
#### [ Message ordering ]

   1. プライマリリージョンのレプリケートされたトピック (`<sourceKafkaClusterAlias>.topic` など) のコンシューマーのみを起動し、ローカルトピック (`topic` など) のコンシューマーは起動しません。

   1. プライマリリージョンのクラスター上のレプリケートされたトピックのすべてのコンシューマーがすべてのデータの処理を終了して、オフセットラグが 0 になり、処理されたレコード数も 0 になるのを待ちます。次に、プライマリリージョンのクラスター上のレプリケートされたトピックのコンシューマーを停止します。この時点で、フェイルオーバー後にセカンダリリージョンで生成されたすべてのレコードが、プライマリリージョンで消費されました。

   1. プライマリリージョンのクラスター上のローカルトピック (`topic` など) のコンシューマーを起動します。

------

1. `ReplicatorThroughput` とレイテンシーメトリクスを使用して、プライマリリージョンのクラスターからセカンダリリージョンのクラスターへの既存のレプリケーターが RUNNING 状態にあり、期待どおりに動作していることを確認します。

# MSK Replicator を使用したアクティブ/アクティブ設定の作成
<a name="msk-replicator-active-active"></a>

両方の MSK クラスターが読み込みと書き込みをアクティブに処理するアクティブ/アクティブ設定を作成する場合は、プレフィックス付きトピック名レプリケーション (コンソールで**トピック名にプレフィックスを追加**) が設定された MSK レプリケーターを使用することをお勧めします。ただし、レプリケートされたトピックを読み込むようにコンシューマーを再設定する必要があります。

次のステップを実行して、ソース MSK クラスター A とターゲット MSK クラスター B の間にアクティブ/アクティブトポロジを設定します。

1. MSK クラスター A をソース、MSK クラスター B をターゲットとして MSK レプリケーターを作成します。

1. 上記の MSK レプリケーターが正常に作成されたら、クラスター B をソース、クラスター A をターゲットとしてレプリケーターを作成します。

1. 2 組のプロデューサーを作成し、それぞれがプロデューサーと同じリージョン内のクラスターのローカルトピック (「topic」など) に同時にデータを書き込みます。

1. コンシューマーのセットを 2 つ作成します。各コンシューマーは、コンシューマーと同じ AWS リージョンの MSK クラスターからワイルドカードサブスクリプション (「.\$1topic」など) を使用してデータを読み込みます。これにより、コンシューマーはローカルトピック (`topic` など) からリージョン内でローカルに生成されたデータを自動的に読み取るだけでなく、他のリージョンからレプリケートされたデータ (トピック内でプレフィックス `<sourceKafkaClusterAlias>.topic` が付いているトピック) も自動的に読み取ります。これら 2 組のコンシューマーは、異なるコンシューマーグループ ID を持つ必要があります。これにより、MSK レプリケーターがコンシューマーグループのオフセットを他のクラスターにコピーしたときに、それらのオフセットが上書きされなくなります。

クライアントの再設定を避けたい場合は、プレフィックス付きトピック名レプリケーション (コンソールで**トピック名にプレフィックスを追加**) の代わりに、同一トピック名レプリケーション (コンソールで**同じトピック名を保持**) を使用して MSK レプリケーターを作成し、アクティブ/アクティブ設定を作成してください。ただし、レプリケーターごとに追加のデータ処理および転送料金が発生します。これは、各レプリケーターが通常の 2 倍のデータ量 (レプリケーションのために 1 回、無限ループを防ぐために 1 回) を処理する必要があるためです。`ReplicatorBytesInPerSec` メトリクスを使用して、各レプリケーターによって処理されるデータの合計量を追跡できます。「[レプリケーションのモニタリング](msk-replicator-monitor.md)」を参照してください。このメトリクスには、ターゲットクラスターにレプリケートされたデータと、データが元のトピックと同じトピックにコピーされないように MSK Replicator によってフィルタリングされたデータが含まれます。

**注記**  
同一トピック名レプリケーション (コンソールで**同じトピック名を保持**) を使用してアクティブ/アクティブトポロジを設定している場合は、トピックを削除した後に少なくとも 30 秒待ってから、同じ名前のトピックを再作成します。この待機期間は、重複したメッセージがソースクラスターにレプリケートされるのを防ぐのに役立ちます。コンシューマーは、ダウンストリームに影響を与えることなく、重複したメッセージを再処理できる必要があります。「[マルチリージョン Apache Kafka アプリケーションを構築する際の考慮事項](msk-replicator-increase-resiliency.md#msk-replication-multi-region-kafka-applications)」を参照してください。

# MSK Replicator を使用して、1 つの Amazon MSK クラスターから別のクラスターに移行する
<a name="msk-replicator-migrate-cluster"></a>

クラスターの移行には同一トピック名レプリケーションを使用できますが、コンシューマーはダウンストリームに影響を与えることなく重複したメッセージを処理できる必要があります。これは、MSK Replicator が少なくとも 1 回のレプリケーションを提供するため、まれに重複したメッセージが発生する可能性があるためです。コンシューマーがこの要件を満たしている場合は、以下の手順に従ってください。

1. レプリケーターの開始位置を *Earliest* に設定し、同一トピック名レプリケーション (コンソールで**同じトピック名を保持**) を使用して、古いクラスターから新しいクラスターにデータをレプリケートするレプリケーターを作成します。

1. 新しいクラスターに対してクラスターレベルの設定とアクセス許可を設定します。MSK Replicator によってトピックレベルの設定と「リテラル」読み取り ACL が自動的にコピーされるため、ユーザーによる設定は必要ありません。

1. Amazon CloudWatch で、`MessageLag` メトリクスを、すべてのデータがレプリケートされたことを示す 0 に達するまでモニタリングします。

1. すべてのデータがレプリケートされたら、プロデューサーが古いクラスターにデータを書き込まないようにします。

1. これらのプロデューサーを再設定して新しいクラスターに接続し、起動します。

1. 古いクラスターからデータを読み込んでいるコンシューマーの `MaxOffsetLag` メトリクスを、既存のすべてのデータが処理されたことを示す `0` になるまでモニタリングします。

1. 古いクラスターに接続しているコンシューマーを停止します。

1. コンシューマーを再設定して新しいクラスターに接続し、起動します。

# セルフマネージド型の MirrorMaker2 から MSK Replicator に移行する
<a name="msk-replicator-migrate-mirrormaker2"></a>

MirrorMaker (MM2) から MSK Replicator に移行するには、次の手順に従います。

1. ソース Amazon MSK クラスターに書き込みを行っているプロデューサーを停止します。

1. MM2 がソースクラスターのトピック上のすべてのメッセージをレプリケートできるようにします。ソース MSK クラスターで MM2 コンシューマーのコンシューマーラグをモニタリングし、すべてのデータがレプリケートされたタイミングを判断します。

1. 開始位置を *Latest* に設定し、トピック名設定を `IDENTICAL` (コンソールで**同じトピック名のレプリケーション**) に設定して、新しいレプリケーターを作成します。

1. レプリケーターが RUNNING 状態になったら、プロデューサーによるソースクラスターへの書き込みを再開できます。

# MSK Replicator のトラブルシューティング
<a name="msk-replicator-troubleshooting"></a>

次の情報は、MSK レプリケーターに関する問題のトラブルシューティングに役立ちます。他の Amazon MSK 機能に関する問題の解決情報については、「[Amazon MSK クラスターをトラブルシューティングする](troubleshooting.md)」を参照してください。[AWS re:Post](https://repost.aws/) に問題を投稿することもできます。

## MSK レプリケーターの状態が CREATING から FAILED に変わります。
<a name="msk-replicator-troubleshooting-failed-state"></a>

MSK レプリケーターの作成に失敗する一般的な原因には、次のようなものがあります。

1. ターゲットクラスターのセクションでレプリケーターの作成用に指定したセキュリティグループに、ターゲットクラスターのセキュリティグループへのトラフィックを許可するアウトバウンドルールがあることを確認します。また、ターゲットクラスターのセキュリティグループに、ターゲットクラスターのセクションでレプリケーターの作成用に指定するセキュリティグループからのトラフィックを受け入れるインバウンドルールがあることを確認します。「[ターゲットクラスターの選択](msk-replicator-create-console.md#msk-replicator-create-console-choose-target)」を参照してください。

1. クロスリージョンレプリケーション用にレプリケーターを作成する場合は、ソースクラスターで IAM アクセスコントロール認証方法に対してマルチ VPC 接続が有効になっていることを確認します。「[単一リージョンの Amazon MSK マルチ VPC プライベート接続](aws-access-mult-vpc.md)」を参照してください。また、MSK レプリケーターがソースクラスターに接続できるように、ソースクラスターでクラスターポリシーが設定されていることも確認します。「[Amazon MSK ソースクラスターを準備する](msk-replicator-prepare-cluster.md)」を参照してください。

1. MSK レプリケーターの作成時に指定した IAM ロールに、ソースクラスターとターゲットクラスターに対する読み取りと書き込みに必要なアクセス許可があることを確認します。また、IAM ロールに、トピックに書き込むアクセス許可があることも確認します。「[レプリケータの設定とアクセス許可を設定します。](msk-replicator-create-console.md#msk-replicator-create-settings)」を参照してください。

1. ネットワーク ACL が MSK レプリケーターとソースクラスターおよびターゲットクラスターの間の接続をブロックしていないことを確認します。

1. MSK レプリケーターが接続を試みたときに、ソースクラスターまたはターゲットクラスターが完全には利用できない可能性があります。これは、負荷、ディスク使用量、または CPU 使用率が高すぎるために、レプリケーターがブローカーに接続できなくなったことが原因である可能性があります。ブローカーの問題を修正し、レプリケーターの作成を再試行してください。

上記の検証を実行したら、MSK レプリケーターを再度作成します。

## MSK レプリケーターが CREATING 状態でスタックしているように見える
<a name="msk-replicator-troubleshooting-stuck-creating"></a>

MSK レプリケーターの作成には、最大 30 分かかる場合があります。30 分間待ってから、レプリケーターの状態を再度確認してください。

## MSK レプリケーターがデータをレプリケートしていない、または一部のデータしかレプリケートしていない
<a name="msk-replicator-troubleshooting-not-replicating"></a>

データレプリケーションの問題をトラブルシューティングするには、次のステップを実行します。

1. MSK Replicator が提供する Amazon CloudWatch の AuthError メトリクスを使用して、レプリケーターで認証エラーが発生していないことを確認します。このメトリクスが 0 より大きい場合は、レプリケーター用に指定した IAM ロールのポリシーが有効かどうかと、クラスターのアクセス許可に対して拒否アクセス許可が設定されていないかを確認します。clusterAlias ディメンションに基づいて、ソースクラスターまたはターゲットクラスターで認証エラーが発生しているかどうかを識別できます。

1. ソースクラスターとターゲットクラスターで問題が発生していないことを確認します。レプリケーターがソースクラスターまたはターゲットクラスターに接続できない可能性があります。これは、接続数が多すぎる、ディスクの容量が満杯である、または CPU 使用率が高いことが原因で発生する可能性があります。

1. Amazon CloudWatch の KafkaClusterPingSuccessCount メトリクスを使用して、ソースクラスターとターゲットクラスターに MSK Replicator からアクセスできることを確認します。clusterAlias ディメンションに基づいて、ソースクラスターまたはターゲットクラスターで認証エラーが発生しているかどうかを識別できます。このメトリクスが 0 またはデータポイントがない場合、接続は異常です。MSK レプリケーターがクラスターへの接続に使用しているネットワークと IAM ロールのアクセス許可を確認する必要があります。

1. Amazon CloudWatch の ReplicatorFailure メトリクスを使用して、トピックレベルのアクセス許可の欠落が原因でレプリケーターに障害が発生していないことを確認します。このメトリクスが 0 より大きい場合は、トピックレベルのアクセス許可に対して指定した IAM ロールを確認してください。

1. レプリケーターの作成時に許可リストに指定した正規表現が、レプリケートするトピックの名前と一致することを確認します。また、拒否リストの正規表現が原因でトピックがレプリケートから除外されていないことも確認します。

1. レプリケーターがターゲットクラスターの新しいトピックまたはトピックパーティションを検出して作成するまでに最大 30 秒かかる場合があります。レプリケーターの開始位置が latest (デフォルト) の場合、ターゲットクラスターでトピックが作成される前にソーストピックに生成されたメッセージはレプリケートされません。あるいは、ターゲットクラスター上のトピックの既存のメッセージをレプリケートする場合は、ソースクラスターのトピックパーティション内の最も古いオフセットからレプリケーションを開始できます。「[レプリケータの設定とアクセス許可を設定します。](msk-replicator-create-console.md#msk-replicator-create-settings)」を参照してください。

## メッセージのオフセットがターゲットクラスターとソースクラスターとで異なる
<a name="msk-replicator-troubleshooting-different-message-offsets"></a>

データのレプリケートの一環として、MSK Replicator はソースクラスターからのメッセージを消費し、ターゲットクラスターに生成します。これにより、ソースクラスターとターゲットクラスターでメッセージのオフセットが異なる場合があります。ただし、レプリケーターの作成中にコンシューマーグループのオフセットの同期をオンにした場合、MSK Replicator はメタデータをコピーしながらオフセットを自動的に変換するため、ターゲットクラスターにフェイルオーバーした後、コンシューマーはソースクラスターで中断した場所の近くから処理を再開できます。

## MSK Replicator がコンシューマーグループのオフセットを同期していない、またはコンシューマーグループがターゲットクラスターに存在しない
<a name="msk-replicator-troubleshooting-not-syncing-consumer-groups"></a>

メタデータレプリケーションの問題をトラブルシューティングするには、以下の手順を実行します。

1. データレプリケーションが期待どおりに機能していることを確認します。そうでない場合は、「[MSK レプリケーターがデータをレプリケートしていない、または一部のデータしかレプリケートしていない](#msk-replicator-troubleshooting-not-replicating)」を参照してください。

1. レプリケーターの作成時に許可リストに指定した正規表現が、レプリケートするコンシューマーグループの名前と一致することを確認します。また、拒否リストの正規表現が原因でコンシューマーグループがレプリケーションから除外されていないことも確認します。

1. MSK Replicator がターゲットクラスターにトピックを作成したことを確認します。レプリケーターがターゲットクラスター上の新しいトピックまたはトピックパーティションを検出して作成するまでに最大 30 秒かかる場合があります。レプリケーターの開始位置が *latest* (デフォルト) の場合、ターゲットクラスターでトピックが作成される前にソーストピックに生成されたメッセージはレプリケートされません。ソースクラスターのコンシューマーグループが MSK Replicator によってレプリケートされていないメッセージのみを消費した場合、コンシューマーグループはターゲットクラスターにレプリケートされません。トピックがターゲットクラスターに正常に作成されると、MSK Replicator はソースクラスターに新しく書き込まれたメッセージをターゲットクラスターにレプリケートし始めます。コンシューマーグループがソースからこれらのメッセージの読み込みを開始すると、MSK Replicator はコンシューマーグループをターゲットクラスターに自動的にレプリケートします。あるいは、ターゲットクラスター上のトピックの既存のメッセージをレプリケートする場合は、ソースクラスターのトピックパーティション内の最も古いオフセットからレプリケーションを開始できます。「[レプリケータの設定とアクセス許可を設定します。](msk-replicator-create-console.md#msk-replicator-create-settings)」を参照してください。

**注記**  
MSK Replicator は、トピックパーティションの末尾に近い場所から読み込みを行っているソースクラスター上のコンシューマーのコンシューマーグループのオフセット同期を最適化します。ソースクラスターのコンシューマーグループが遅延している場合、ターゲットのコンシューマーグループの遅延はソースと比較して大きくなる可能性があります。つまり、ターゲットクラスターへのフェイルオーバー後、コンシューマーは重複したメッセージをさらに再処理しすることになります。この遅延を小さくするには、ソースクラスターのコンシューマーがストリームの先端 (トピックパーティションの末尾) にキャッチアップするように処理を行い、消費を開始する必要があります。コンシューマーによる処理がキャッチアップすると、MSK Replicator は自動的に遅延を小さくします。

## レプリケーションのレイテンシーが高い、または増加し続けている
<a name="msk-replicator-troubleshooting-high-latency"></a>

レプリケーションレイテンシーが高くなる一般的な原因は次のとおりです。

1. ソースとターゲットの MSK クラスターに適切な数のパーティションがあることを確認します。パーティションが少なすぎたり多すぎたりすると、パフォーマンスに影響する可能性があります。パーティション数の選択に関するガイダンスについては、「[MSK レプリケーターの使用に関するベストプラクティス](msk-replicator-best-practices.md)」を参照してください。次の表は、MSK レプリケーターで必要なスループットを実現するために推奨される最小パーティション数を示しています。  
**スループットと推奨される最小パーティション数**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/msk/latest/developerguide/msk-replicator-troubleshooting.html)

1. ソースとターゲットの MSK クラスターに、レプリケーショントラフィックをサポートするのに十分な読み取りおよび書き込み容量があることを確認します。MSK レプリケーターは、ソースクラスター (エグレス) のコンシューマーとして、またターゲットクラスター (イングレス) のプロデューサーとして機能します。そのため、クラスター上の他のトラフィックに加えてレプリケーショントラフィックもサポートできるように、クラスター容量をプロビジョニングする必要があります。MSK クラスターのサイズ設定のガイダンスについては、「[MSK レプリケーターの使用に関するベストプラクティス](msk-replicator-best-practices.md)」を参照してください。

1. レプリケーションレイテンシーは、レプリケート元とレプリケート先の AWS リージョンのペアが異なる MSK クラスターでは、クラスター間の地理的な距離によって異なる場合があります。例えば、欧州 (アイルランド) リージョンと欧州 (ロンドン) リージョンのクラスター間でレプリケーションを行う場合、欧州 (アイルランド) リージョンとアジアパシフィック (シドニー) リージョンのクラスター間のレプリケーションと比較して、レプリケーションレイテンシーは一般的に低くなります。

1. ソースまたはターゲットのクラスターで過度に厳しいクォータが設定されているためにレプリケーターがスロットルされていないことを確認してください。MSK Replicator が提供する Amazon CloudWatch の ThrottleTime メトリクスを使用して、ソース/ターゲットクラスター上のブローカーによってリクエストがスロットルされた平均時間 (ミリ秒単位) を確認できます。このメトリクスが 0 より大きい場合は、レプリケーターがキャッチアップできるように、Kafka のクォータを調整してスロットリングを減らす必要があります。レプリケーターの Kafka クォータの管理については、「[Kafka クォータを使用した MSK レプリケータースループットの管理](msk-replicator-best-practices.md#msk-replicator-manage-throughput-kafka-quotas)」を参照してください。

1.  AWS リージョンが劣化すると、ReplicationLatency と MessageLag が増加する可能性があります。[AWS Service Health Dashboard](https://health.aws.amazon.com/health/status) を使用して、プライマリ MSK クラスターが配置されているリージョンで MSK サービスイベントがないかを確認します。サービスイベントが発生した場合は、一時的にアプリケーションの読み取りと書き込みを別のリージョンにリダイレクトできます。

## ReplicatorFailure メトリクスを使用した MSK レプリケーターの障害のトラブルシューティング
<a name="msk-replicator-troubleshooting-ReplicatorFailure"></a>

ReplicatorFailure メトリクスは、MSK Replicator のレプリケーション問題をモニタリングおよび検出するのに役立ちます。このメトリクスの 0 以外の値は、通常、レプリケーションの失敗の問題を示します。これは、次の要因が原因である可能性があります。
+ メッセージサイズの制限
+ タイムスタンプ範囲違反
+ レコードバッチサイズの問題

ReplicatorFailure メトリクスがゼロ以外の値を報告した場合は、以下の手順に従って問題をトラブルシューティングします。

**注記**  
このメトリクスの詳細については、「[MSK レプリケーターのメトリクス](msk-replicator-monitor.md#msk-replicator-metrics)」を参照してください。

1. ターゲット MSK クラスターに接続でき、Apache Kafka CLI ツールが設定されているクライアントを設定します。クライアントと Kafka CLI ツールの設定については、「[Amazon MSK プロビジョニングされたクラスターに接続する](client-access.md)」を参照してください。

1. [https://console.aws.amazon.com/msk/home?region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/) で Amazon MSK コンソールを開きます。

   次に、以下の操作を実行します。

   1. MSK レプリケーターとターゲット MSK クラスターの ARNs を取得します。

   1. 対象の MSK クラスターの [ブローカーエンドポイントを取得](get-bootstrap-console.md) します。これらのエンドポイントは、次のステップで使用します。

1. 次のコマンドを実行して、前のステップで取得した MSK レプリケーター ARN とブローカーエンドポイントをエクスポートします。

   次の例で使用されている <*ReplicatorARN*>、<*BootstrapServerString*>、<*ConsumerConfigFile*> のプレースホルダー値を実際の値に置き換えてください。

   ```
   export TARGET_CLUSTER_SERVER_STRING=<BootstrapServerString>
   ```

   ```
   export REPLICATOR_ARN=<ReplicatorARN>
   ```

   ```
   export CONSUMER_CONFIG_FILE=<ConsumerConfigFile>
   ```

1. `<path-to-your-kafka-installation>/bin` ディレクトリ内で、次の操作を行ってください。

   1. 次のスクリプトを保存し、 **query-replicator-failure-message.sh**という名前を付けます。

      ```
      #!/bin/bash
      
      # Script: Query MSK Replicator Failure Message
      # Description: This script queries exceptions from AWS MSK Replicator status topics
      # It takes a replicator ARN and bootstrap server as input and searches for replicator exceptions
      # in the replicator's status topic, formatting and displaying them in a readable manner
      #
      # Required Arguments:
      #   --replicator-arn: The ARN of the AWS MSK Replicator
      #   --bootstrap-server: The Kafka bootstrap server to connect to
      #   --consumer.config: Consumer config properties file
      # Usage Example:
      #   ./query-replicator-failure-message.sh ./query-replicator-failure-message.sh --replicator-arn <replicator-arn> --bootstrap-server <bootstrap-server> --consumer.config <consumer.config>
      
      print_usage() {
        echo "USAGE: $0 ./query-replicator-failure-message.sh --replicator-arn <replicator-arn> --bootstrap-server <bootstrap-server> --consumer.config <consumer.config>"
        echo "--replicator-arn <String: MSK Replicator ARN>      REQUIRED: The ARN of AWS MSK Replicator."
        echo "--bootstrap-server <String: server to connect to>  REQUIRED: The Kafka server to connect to."
        echo "--consumer.config <String: config file>            REQUIRED: Consumer config properties file."
        exit 1
      }
      
      # Initialize variables
      replicator_arn=""
      bootstrap_server=""
      consumer_config=""
      
      # Parse arguments
      while [[ $# -gt 0 ]]; do
        case "$1" in
          --replicator-arn)
            if [ -z "$2" ]; then
              echo "Error: --replicator-arn requires an argument."
              print_usage
            fi
            replicator_arn="$2"; shift 2 ;;
          --bootstrap-server)
            if [ -z "$2" ]; then
              echo "Error: --bootstrap-server requires an argument."
              print_usage
            fi
            bootstrap_server="$2"; shift 2 ;;
          --consumer.config)
            if [ -z "$2" ]; then
              echo "Error: --consumer.config requires an argument."
              print_usage
            fi
            consumer_config="$2"; shift 2 ;;
          *) echo "Unknown option: $1"; print_usage ;;
        esac
      done
      
      # Check for required arguments
      if [ -z "$replicator_arn" ] || [ -z "$bootstrap_server" ] || [ -z "$consumer_config" ]; then
        echo "Error: --replicator-arn, --bootstrap-server, and --consumer.config are required."
        print_usage
      fi
      
      # Extract replicator name and suffix from ARN
      replicator_arn_suffix=$(echo "$replicator_arn" | awk -F'/' '{print $NF}')
      replicator_name=$(echo "$replicator_arn" | awk -F'/' '{print $(NF-1)}')
      echo "Replicator name: $replicator_name"
      
      # List topics and find the status topic
      topics=$(./kafka-topics.sh --command-config client.properties --list --bootstrap-server "$bootstrap_server")
      status_topic_name="__amazon_msk_replicator_status_${replicator_name}_${replicator_arn_suffix}"
      
      # Check if the status topic exists
      if echo "$topics" | grep -Fq "$status_topic_name"; then
        echo "Found replicator status topic: '$status_topic_name'"
        ./kafka-console-consumer.sh --bootstrap-server "$bootstrap_server" --consumer.config "$consumer_config" --topic "$status_topic_name" --from-beginning | stdbuf -oL grep "Exception" | stdbuf -oL sed -n 's/.*Exception:\(.*\) Topic: \([^,]*\), Partition: \([^\]*\).*/ReplicatorException:\1 Topic: \2, Partition: \3/p'
      else
        echo "No topic matching the pattern '$status_topic_name' found."
      fi
      ```

   1. このスクリプトを実行して、MSK レプリケーターの失敗メッセージをクエリします。

      ```
      <path-to-your-kafka-installation>/bin/query-replicator-failure-message.sh --replicator-arn $REPLICATOR_ARN --bootstrap-server $TARGET_CLUSTER_SERVER_STRING --consumer.config $CONSUMER_CONFIG_FILE
      ```

      このスクリプトは、例外メッセージと影響を受けるトピックパーティションを含むすべてのエラーを出力します。この例外情報を使用して、「[MSK レプリケーターの一般的な障害とその解決策](#msk-replicator-ReplicatorFailure-error-mitigation)」で説明されているように障害を軽減できます。トピックには過去の失敗メッセージがすべて含まれているため、最後のメッセージを使用して調査を開始します。以下は、失敗メッセージの一例です。

      ```
      ReplicatorException: The request included a message larger than the max message size the server will accept. Topic: test, Partition: 1
      ```

### MSK レプリケーターの一般的な障害とその解決策
<a name="msk-replicator-ReplicatorFailure-error-mitigation"></a>

次のリストでは、発生する可能性のある MSK レプリケーターの障害とその軽減方法について説明します。

**max.request.size より大きいメッセージサイズ**  
**原因**  
このエラーは、個々のメッセージサイズが 10 MB を超えたために MSK レプリケーターがデータのレプリケートに失敗した場合に発生します。デフォルトでは、MSK レプリケーターは最大 10 MB のサイズのメッセージをレプリケートします。
以下は、この失敗メッセージの種類の例です。  

```
ReplicatorException: The message is 20635370 bytes when serialized which is larger than 10485760, which is the value of the max.request.size configuration. Topic: test, Partition: 1
```
**ソリューション**  
トピック内の個々のメッセージサイズを減らします。できない場合は、以下の手順に従って[制限の引き上げをリクエスト](limits.md#request-msk-quota-increase)してください。

**サーバーが受け入れるメッセージの最大サイズより大きいメッセージサイズ**  
**原因**  
このエラーは、メッセージサイズがターゲットクラスターの最大メッセージサイズを超えた場合に発生します。
以下は、この失敗メッセージの種類の例です。  

```
ReplicatorException: The request included a message larger than the max message size the server will accept. Topic: test, Partition: 1
```
**ソリューション**  
ターゲットクラスターまたは対応するターゲットクラスタートピックの `max.message.bytes` 設定を増やします。ターゲットクラスターの `max.message.bytes` 設定を、最大非圧縮メッセージサイズに合わせて設定します。これを行う方法については、[「max.message.bytes」](https://kafka.apache.org/documentation/#topicconfigs_max.message.bytes)を参照してください。

**タイムスタンプが範囲外です**  
**原因**  
このエラーは、個々のメッセージのタイムスタンプがターゲットクラスターの許容範囲外であるために発生します。
以下は、この失敗メッセージの種類の例です。  

```
ReplicatorException: Timestamp 1730137653724 of message with offset 0 is out of range. The timestamp should be within [1730137892239, 1731347492239] Topic: test, Partition: 1
```
**ソリューション**  
ターゲットクラスターの `message.timestamp.before.max.ms` 設定を更新して、古いタイムスタンプのメッセージを許可します。これを行う方法については、[message.timestamp.before.max.ms](https://kafka.apache.org/documentation/#topicconfigs_message.timestamp.before.max.ms) を参照してください。

**レコードバッチが大きすぎる**  
**原因**  
このエラーは、レコードバッチサイズがターゲットクラスターの トピックに設定されたセグメントサイズを超えているために発生します。MSK レプリケーターは、最大バッチサイズ 1 MB をサポートします。
以下は、この失敗メッセージの種類の例です。  

```
ReplicatorException: The request included message batch larger than the configured segment size on the server. Topic: test, Partition: 1
```
**ソリューション**  
レプリケーターがエラーなしで続行するには、ターゲットクラスターの segment.bytes 設定がバッチサイズ (1 MB) 以上である必要があります。ターゲットクラスターの segment.bytes を少なくとも 1048576 (1 MB) に更新します。この操作に関する情報は、[「segment.bytes 」](https://kafka.apache.org/documentation/#topicconfigs_segment.bytes)を参照してください。

**注記**  
これらのソリューションを適用した後に ReplicatorFailure メトリクスがゼロ以外の値を引き続き出力する場合は、メトリクスがゼロを出力するまでトラブルシューティングプロセスを繰り返します。

# MSK レプリケーターの使用に関するベストプラクティス
<a name="msk-replicator-best-practices"></a>

このセクションでは、Amazon MSK Replicator を使用する際の一般的なベストプラクティスと実装戦略について説明します。

**Contents**
+ [

## Kafka クォータを使用した MSK レプリケータースループットの管理
](#msk-replicator-manage-throughput-kafka-quotas)
+ [

## クラスターの保持期間の設定
](#msk-replicator-retention-period)

## Kafka クォータを使用した MSK レプリケータースループットの管理
<a name="msk-replicator-manage-throughput-kafka-quotas"></a>

MSK レプリケーターはソースクラスターのコンシューマーとして機能するため、レプリケーションによってソースクラスター上の他のコンシューマーがスロットルされる可能性があります。スロットリング量は、ソースクラスターの読み取り容量と、レプリケートするデータのスループットによって異なります。必要な容量を計算する際には、ソースクラスターとターゲットクラスターに同じ容量をプロビジョニングし、レプリケーションのスループットを考慮に入れることが推奨されます。

また、ソースクラスターとターゲットクラスターのレプリケーターに Kafka クォータを設定して、MSK レプリケーターが使用できる容量を制御することもできます。ネットワーク帯域幅クォータが推奨されます。ネットワーク帯域幅クォータは、クォータを共有する 1 つ以上のクライアントに対して、バイトレートのしきい値 (1 秒あたりのバイト数) を定義します。このクォータはブローカーごとに定義されます。

クォータを適用するには、次のステップを実行します。

1. ソースクラスターのブートストラップサーバー文字列を取得します。「[Amazon MSK クラスターのブートストラップブローカーを取得する](msk-get-bootstrap-brokers.md)」を参照してください。

1. MSK レプリケーターが使用するサービス実行ロール (SER) を取得します。これは `CreateReplicator` リクエストに使用した SER です。既存のレプリケーターからの DescribeReplicator レスポンスから SER をプルすることもできます。

1. Kafka CLI ツールを使用して、ソースクラスターに対して次のコマンドを実行します。

   ```
   ./kafka-configs.sh --bootstrap-server <source-cluster-bootstrap-server> --alter --add-config 'consumer_byte_
   rate=<quota_in_bytes_per_second>' --entity-type users --entity-name arn:aws:sts::<customer-account-id>:assumed-role/<ser-role-name>/<customer-account-id> --command-config <client-properties-for-iam-auth></programlisting>
   ```

1. 上記のコマンドを実行した後、`ReplicatorThroughput` メトリクスが設定したクォータを超えていないことを確認します。

複数の MSK レプリケーター間でサービス実行ロールを再利用する場合、それらはすべてこのクォータの対象となることに注意してください。レプリケーターごとに個別のクォータを維持する必要がある場合は、個別のサービス実行ロールを使用します。

MSK IAM 認証とクォータの使用に関する詳細については、「[Multi-tenancy Apache Kafka clusters in Amazon MSK with IAM access control and Kafka Quotas – Part 1](https://aws.amazon.com/blogs/big-data/multi-tenancy-apache-kafka-clusters-in-amazon-msk-with-iam-access-control-and-kafka-quotas-part-1/)」を参照してください。

**警告**  
consumer\$1byte\$1rate を極端に低く設定すると、MSK レプリケーターが予期しない動作をする可能性があります。

## クラスターの保持期間の設定
<a name="msk-replicator-retention-period"></a>

MSK プロビジョンドクラスターとサーバーレスクラスターのログの保持期間を設定できます。推奨される保持期間は 7 日間です。「[クラスター設定の変更](msk-replicator-serverless-requirements.md#msk-replicator-config-changes)」または「[サポートされている MSK サーバーレスクラスター設定](msk-replicator-serverless-requirements.md)」を参照してください。