このドキュメントでは、MirrorMaker 2.0 コネクタの使用時に発生する一般的な問題のトラブルシューティングについて説明します。
MirrorMaker 2.0 の一般的なエラー
このセクションでは、MirrorMaker 2.0 コネクタの使用時に表示される可能性のある一般的なエラーについて説明します。
ノードの割り当ての待機中にタイムアウトしました
Connect クラスタが Kafka クラスタにアクセスできない場合は、次のエラーが表示されます。
Timed out waiting for a node assignment.
このエラーの原因は次のとおりです。
Connect クラスタが Kafka クラスタで認証できません。コネクタ構成の認証パラメータを確認します。詳細については、MirrorMaker 2.0 コネクタを作成するをご覧ください。
ネットワークの問題により、Connect クラスタが Kafka クラスタに到達できません。ネットワークの問題のトラブルシューティングの手順に沿って操作します。
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.found が true に設定された状態で動作します。これにより、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 クラスタに接続する場合:
Connect クラスタのワーカー サブネットを調べて、サブネットの VPC ネットワークを見つけます。
プライマリ Kafka クラスタの構成を表示し、サブネットのリストを確認します。少なくとも 1 つのサブネットは、Connect クラスタのサブネットと同じ VPC ネットワークに存在する必要があります。
セカンダリ Kafka クラスタに対して前の手順を繰り返します。
ファイアウォール ルールで、Private Service Connect インターフェースが送信元と宛先の両方の Kafka クラスタに到達できることを確認します。
外部またはセルフマネージドの Kafka クラスタに接続する場合:
Connect クラスタのワーカー サブネットを調べて、サブネットの VPC ネットワークを見つけます。
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 コネクタの使用時にドメイン名の解決で問題が発生した場合は、次のトラブルシューティングの手順を行います。
Connect クラスタのワーカー サブネットを調べて、サブネットの VPC ネットワークを見つけます。
Google Cloud コンソールで、Cloud DNS の [ゾーン] ページに移動します。
VPC ネットワークを含む Google Cloud プロジェクトを選択します。
[ゾーン] をクリックし、ドメイン名が DNS ゾーンのリストに表示されていることを確認します。
Connect クラスタの構成を表示し、解決可能な DNS ドメインのリストを確認します。ドメイン名が一覧にない場合は、Connect クラスタを更新して DNS ドメインを追加します。Connect クラスタを更新するをご覧ください。