MirrorMaker 2.0 コネクタのトラブルシューティング

このドキュメントでは、MirrorMaker 2.0 コネクタの使用時に発生する一般的な問題のトラブルシューティングについて説明します。

MirrorMaker 2.0 の一般的なエラー

このセクションでは、MirrorMaker 2.0 コネクタの使用時に表示される可能性のある一般的なエラーについて説明します。

ノードの割り当ての待機中にタイムアウトしました

Connect クラスタが Kafka クラスタにアクセスできない場合は、次のエラーが表示されます。

Timed out waiting for a node assignment.

このエラーの原因は次のとおりです。

DNS 解決に失敗しました

Connect クラスタがブートストラップ アドレスを解決できない場合は、次のエラーが表示されます。

No resolvable bootstrap urls given in bootstrap.servers

次のようなエラーが表示されることもあります。

Couldn't resolve server BOOTSTRAP_ADDRESS from bootstrap.servers as DNS resolution failed for BOOTSTRAP_ADDRESS

この問題を解決するには、まずブートストラップ アドレスが正しいことを確認します。その場合は、ドメイン名の解決のトラブルシューティングの手順に沿って操作します。

無効な認証情報

Connect クラスタが Kafka クラスタのいずれかで認証できない場合は、次のようなエラーが表示されます。

org.apache.kafka.clients.NetworkClient processDisconnection
SEVERE: [AdminClient clientId=source->target|mm2|offset-syncs-source-admin] Connection to
node 11 (broker-1.BOOTSTRAP_ADDRESS/IP_ADDRESS:9092) failed authentication due to: Authentication
failed during authentication due to invalid credentials with SASL mechanism OAUTHBEARER

このエラーの原因として考えられるのは次のとおりです。

  • 1 つまたは両方のクラスタの Managed Kafka サービス アカウントに、Managed Kafka サービス エージェント ロールがありません。

    Managed Service for Apache Kafka クラスタごとに、そのクラスタのプロジェクトのマネージド Kafka サービス アカウントに Managed Kafka サービス エージェントの IAM ロールを付与します。詳細については、Managed Service for Apache Kafka ネットワーキングを構成するをご覧ください。

  • セルフマネージド クラスタまたは外部クラスタへの認証に失敗しました。

    セルフマネージドまたは外部の Kafka クラスタの場合は、クラスタの認証プロパティが正しいことを確認してください。詳細はクラスタの設定によって異なります。詳細については、MirrorMaker 2 コネクタを作成するをご覧ください。

  • クラスタが同じ VPC Service Controls 境界内にない。

    VPC Service Controls を使用して Kafka クラスタを分離する場合は、クラスタが同じ境界内にあることを確認してください。詳細については、VPC Service Controls の概要をご覧ください。

プリンシパルはオペレーションを拒否されます

Apache Kafka のアクセス制御リスト(ACL)を作成し、その ACL で Managed Kafka サービス アカウントに読み取り / 書き込み権限が付与されていない場合は、次のようなエラーが表示されます。

Principal = User:SERVICE_ACCOUNT is Denied operation = OPERATION from host = HOST
on resource = Topic:LITERAL:TOPIC for request = TOPIC with resourceRefCount = 1 based on rule DefaultDeny

デフォルトでは、Managed Service for Apache Kafka クラスタは allow.everyone.if.no.acl.foundtrue に設定された状態で動作します。これにより、Managed Kafka サービス アカウントにクラスタ リソースに対する読み取り / 書き込みアクセス権が付与されます。

ただし、ACL を設定する場合は、その ACL でサービス アカウントに読み取り / 書き込み権限を付与する必要があります。そうしないと、Connect クラスタはすべてのトピックに対する読み取り / 書き込み権限を失い、すべてのコンシューマー グループに対する読み取り権限を失います。

この問題を解決するには、必要な権限をマネージド Kafka サービス アカウントに付与する ACL エントリを追加します。これを行うには、マネージド Kafka ACL に ACL エントリを追加するの手順に沿って操作します。

  • プリンシパルは User:service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com です。PROJECT_NUMBER は、使用する Google Cloud プロジェクト番号に置き換えます。

  • 特定のトピックに対する読み取り / 書き込みアクセス権を付与し、特定のコンシューマー グループに対する読み取りアクセス権を付与します。ACL のリソースを指定する方法については、ACL ID をご覧ください。

メッセージが重複しない

この問題を解決するには、コネクタの構成を確認します。プライマリ Kafka クラスタをソースクラスタとして使用している場合は、producer.override.bootstrap.servers をターゲット クラスタのブートストラップ アドレスに設定します。

ネットワーキングの問題のトラブルシューティング

MirrorMaker 2.0 コネクタの使用中にネットワークの問題が発生した場合は、次のトラブルシューティングの手順を行います。

  • Managed Service for Apache Kafka クラスタに接続する場合:

    1. Connect クラスタのワーカー サブネットを調べて、サブネットの VPC ネットワークを見つけます。

    2. プライマリ Kafka クラスタの構成を表示し、サブネットのリストを確認します。少なくとも 1 つのサブネットは、Connect クラスタのサブネットと同じ VPC ネットワークに存在する必要があります。

    3. セカンダリ Kafka クラスタに対して前の手順を繰り返します。

    4. ファイアウォール ルールで、Private Service Connect インターフェースが送信元と宛先の両方の Kafka クラスタに到達できることを確認します。

  • 外部またはセルフマネージドの Kafka クラスタに接続する場合:

    1. Connect クラスタのワーカー サブネットを調べて、サブネットの VPC ネットワークを見つけます。

    2. Kafka クラスタに VPC ネットワークからアクセスできることを確認します。たとえば、Kafka クラスタを同じ VPC ネットワークにデプロイしたり、共有 VPC または DNS ゾーンを使用して VPC ネットワークからクラスタにアクセスできるようにしたりできます。

    1 ソースまたはターゲットの Kafka クラスタにインターネット経由でアクセスする場合は、Connect クラスタ ワーカーがインターネットにアクセスできるように Cloud NAT を構成します。

Managed Service for Apache Kafka のネットワーキングの詳細については、Managed Service for Apache Kafka をご覧ください。

ドメイン名の解決に関するトラブルシューティング

MirrorMaker 2.0 コネクタの使用時にドメイン名の解決で問題が発生した場合は、次のトラブルシューティングの手順を行います。

  1. Connect クラスタのワーカー サブネットを調べて、サブネットの VPC ネットワークを見つけます。

  2. Google Cloud コンソールで、Cloud DNS の [ゾーン] ページに移動します。

    [DNS ゾーン] に移動

  3. VPC ネットワークを含む Google Cloud プロジェクトを選択します。

  4. [ゾーン] をクリックし、ドメイン名が DNS ゾーンのリストに表示されていることを確認します。

  5. Connect クラスタの構成を表示し、解決可能な DNS ドメインのリストを確認します。ドメイン名が一覧にない場合は、Connect クラスタを更新して DNS ドメインを追加します。Connect クラスタを更新するをご覧ください。

次のステップ