排解 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 Encrypter/Decrypter」角色授予服務帳戶。詳情請參閱「設定 CMEK 的必要角色」。

服務沒有權限擷取子網路

如果 Managed Service for Apache Kafka 服務代理缺少在 Kafka 用戶端執行的虛擬私有雲網路中設定網路的必要角色,就會發生下列問題。

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}`

如要解決這個問題,請將「代管 Kafka 服務代理」角色授予服務帳戶。詳情請參閱「連結跨專案的叢集」。

網路錯誤

本節列出您在設定 Kafka 叢集的網路時可能會遇到的錯誤。

服務無法設定網路

如果 Managed Service for Apache Kafka 無法將 Kafka 叢集連線至虛擬私有雲子網路,就會發生下列問題。

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

如要解決這個問題,請按照下列步驟操作:

  • 在取用者虛擬私有雲網路的父項專案中,啟用 Compute Engine 和 Cloud DNS API。

  • 如果 Managed Service for Apache Kafka 叢集和消費者虛擬私有雲網路位於不同專案,請設定必要權限。請參閱「連結跨專案的叢集」。

  • 請確認沒有任何機構政策限制,會阻止服務在消費者 VPC 網路的專案中建立必要資源。

詳情請參閱「設定 Managed Service for Apache Kafka 的網路」。

用戶端應用程式無法連線

如果用戶端應用程式無法連線至叢集,請檢查下列問題:

  • 確認用戶端使用的是正確的啟動位址

  • 請確認 Kafka 用戶端是在設定為存取 Managed Service for Apache Kafka 叢集的虛擬私有雲網路中執行。

  • 如果您在電腦或筆記型電腦上執行 Kafka 用戶端,可以設定 Compute Engine 執行個體做為 Proxy,存取 Managed Service for Apache Kafka 叢集。詳情請參閱「設定用戶端電腦」。

驗證錯誤

本節列出用戶端應用程式向 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 驗證」。

後續步驟