Kafka クラスタのエラーをトラブルシューティングする

このページでは、Managed Service for Apache Kafka クラスタの作成または構成時に発生する問題を解決する方法について説明します。

Kafka クラスタの作成エラー

このセクションでは、Kafka クラスタの作成時に発生する可能性のあるエラーについて説明します。

サービスに Cloud KMS 鍵にアクセスする権限がない

Managed Service for Apache Kafka サービス エージェントに Cloud KMS 鍵にアクセスするための必要な権限がない場合、次の問題が発生します。

Service agent service-${PROJECT_NUMBER}@gcp-sa-managedkafka.iam.gserviceaccount.com
has not been granted the required role cloudkms.cryptoKeyEncrypterDecrypter to
encrypt data using the KMS key.`

この問題を解決するには、Cloud KMS 鍵に対する Cloud KMS CryptoKey の暗号化/復号ロールをサービス アカウントに付与します。詳細については、CMEK の構成に必要なロールをご覧ください。

サービスにサブネットを取得する権限がない

Managed Service for Apache Kafka サービス エージェントに、Kafka クライアントが実行されている VPC ネットワークでネットワーキングを構成するために必要なロールがない場合、次の問題が発生します。

Service does not have permission to retrieve subnet. Please grant
service-${PROJECT_NUMBER}@gcp-sa-managedkafka.iam.gserviceaccount.com the
managedkafka.serviceAgent role in the IAM policy of the project
${SUBNET_PROJECT} and ensure the Compute Engine API is enabled in project
${SUBNET_PROJECT}`

この問題を解決するには、サービス アカウントに Managed Kafka サービス エージェント ロールを付与します。詳細については、プロジェクト間でクラスタを接続するをご覧ください。

ネットワーク エラー

このセクションでは、Kafka クラスタのネットワーキングを構成するときに発生する可能性のあるエラーを一覧表示します。

サービスがネットワーキングを設定できませんでした

Managed Service for Apache Kafka が Kafka クラスタを Virtual Private Cloud サブネットに接続できない場合、次の問題が発生します。

Managed Service for Apache Kafka failed to set up networking in VPC subnet.

この問題を解決するには、次の操作を行います。

  • コンシューマー VPC ネットワークの親プロジェクトで Compute Engine API と Cloud DNS API を有効にします。

  • Managed Service for Apache Kafka クラスタとコンシューマー VPC ネットワークが異なるプロジェクトにある場合は、必要な権限を構成します。プロジェクト間でクラスタを接続するをご覧ください。

  • 組織のポリシーの制約によって、サービスがコンシューマー VPC ネットワークのプロジェクトに必要なリソースを作成できないことがないようにします。

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

クライアント アプリケーションが接続できない

クライアント アプリケーションがクラスタに接続できない場合は、次の問題を確認してください。

  • クライアントが正しいブートストラップ アドレスを使用していることを確認します。

  • Kafka クライアントが、Managed Service for Apache Kafka クラスタにアクセスするように構成された VPC ネットワークで実行されていることを確認します。

  • パソコンやノートパソコンで Kafka クライアントを実行する場合は、Managed Service for Apache Kafka クラスタへのアクセスにプロキシとして使用する Compute Engine インスタンスを設定できます。詳細については、クライアント マシンを設定するをご覧ください。

認証エラー

このセクションでは、クライアント アプリケーションが Kafka クラスタに対して認証を行うときに発生する可能性のあるエラーを一覧表示します。

SASL 認証が失敗する

次の問題は、クライアントが SASL 認証を使用してクラスタに接続できない場合に発生します。

Exception in thread "main" java.util.concurrent.ExecutionException:
org.apache.kafka.common.errors.SaslAuthenticationException:
Authentication failed: Invalid username or password

この問題を解決するには、次の原因を確認します。

  • パスワードの形式が正しくありません。base64 でデコードしても、有効なサービス アカウント キーの JSON BLOB または有効なアクセス トークンを表していません。

  • 認証プリンシパルにクラスタに対する managedkafka.clusters.connect 権限がありません。

  • 指定されたユーザー名が、認証情報のプリンシパルと一致しません。

クライアントが 30 分ごとに頻繁に切断される場合は、クライアントが定期的な再認証をサポートしていないことが原因である可能性があります。Managed Service for Apache Kafka ブローカーでは、connections.max.reauth.ms ブローカー プロパティによって、クライアントが 30 分ごとに再認証を行う必要があります。Kafka クライアント ライブラリのバージョンが 2.2.0 以降で、再認証をサポートしていることを確認します。

詳細については、SASL 認証を構成するをご覧ください。

オペレーション エラー

このセクションでは、Kafka ワークロードの実行中に発生する可能性のあるエラーを一覧表示します。

ディスク容量不足エラー

ブローカーのディスク容量が不足すると、ブローカーはアクティブ セグメントのロールオーバーや新しいセグメントの書き込みができなくなり、クライアントがメッセージの生成や消費を行うことができなくなります。次のような症状が見られます。

  • クライアントのパフォーマンスが予期せず低下する。たとえば、プロデューサーでタイムアウト エラーが発生し、コンシューマーで遅延が着実に増加します。

  • ブローカーのディスク使用率が非常に高い(85% を超えている)。

  • 同期レプリカ(ISR)の数がレプリケーション係数を下回る。

  • クラスタログに次のようなエラーが表示されます。

    Error processing append operation on partition PARTITION_ID.
    org.apache.kafka.common.errors.NotEnoughReplicasException: The size of the current ISR Set(10)
    is insufficient to satisfy the min.isr requirement of 2 for partition PARTITION_ID
    

ディスク不足エラーを回避するには、クラスタ容量とパーティション レプリケーションをモニタリングします。詳細については、信頼性を確保するために Kafka クラスタをモニタリングするをご覧ください。

ブローカーのディスク容量が不足した場合は、ブローカーのディスクサイズを増やします。新しいブローカーを追加するには、クラスタをスケールアップすることも検討してください。

ログの圧縮と非常に大きなキー空間を組み合わせると、ディスク容量不足エラーが発生する可能性があります。ログ圧縮が有効になっている場合、Kafka は各キーの最新のメッセージをローカル ストレージに保存するため、ブローカーのディスク使用率は一意のキーの数とともに増加します。

クライアントで一時的な接続解除が発生する

Managed Service for Apache Kafka は、ブローカーのローリング再起動を必要とする更新を実行する場合があります。このプロセスでは、個々のブローカーへのリクエストが失敗する可能性がありますが、これらの障害は一時的なものです。詳細については、アップグレードとパッチをご覧ください。

ブローカーの再起動中に必要な操作はありません。ただし、次の点に注意してください。

  • パーティション リーダーとコンシューマー グループ コーディネーターが他のブローカーにフェイルオーバーしている間の処理の一時停止。

  • コンシューマー グループの再調整。消費を一時的に一時停止します。

  • オフセットのコミット時に一時的な接続エラーまたはタイムアウトが発生する。一般的に使用されるクライアント ライブラリは、これらのエラーを自動的に処理します。

  • ブローカーの再起動時に、レプリケーションが不足しているパーティションの数(broker/under_replicated_partitions)が一時的に急増します。

  • Under-MinISR Partitions 指標(broker/under_min_isr_partitions)の急増。この急増は、レプリケートされていない内部モニタリング トピックに対応している可能性があります。各ブローカーのカウントが 1 である限り、これは想定される動作です。値が 1 より大きい場合は、データまたはメタデータ トピックに問題がある可能性があります。

vCPU 数やメモリなどの特定のクラスタ プロパティを手動で更新すると、サービスがローリング再起動を実行することもあります。Managed Service for Apache Kafka クラスタを更新するをご覧ください。

次のステップ

Apache Kafka® は、Apache Software Foundation または米国その他の諸国における関連会社の商標です。