排解 MirrorMaker 2.0 連接器問題

本文提供疑難排解指引,協助解決使用 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

這項錯誤的可能原因包括:

  • 一或兩個叢集的代管 Kafka 服務帳戶缺少代管 Kafka 服務代理角色。

    針對每個 Managed Service for Apache Kafka 叢集,將 Managed Kafka 服務代理 IAM 角色授予該叢集專案的 Managed Kafka 服務帳戶。詳情請參閱「設定 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 集群會失去所有主題的讀取和寫入權限,以及所有消費者群組的讀取權限。

如要解決這個問題,請新增 ACL 項目,將必要權限授予代管 Kafka 服務帳戶。如要這麼做,請按照「將 ACL 項目新增至代管 Kafka 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 叢集的工作站子網路,然後找出子網路的虛擬私有雲網路。

    2. 查看主要 Kafka 叢集的設定,並找出子網路清單。至少一個子網路必須與 Connect 叢集的子網路位於相同的虛擬私有雲網路。

    3. 對次要 Kafka 叢集重複執行上一個步驟。

    4. 請確認防火牆規則允許 Private Service Connect 介面連線至來源和目標 Kafka 叢集。

  • 連線至外部或自行管理的 Kafka 叢集時:

    1. 查閱 Connect 叢集的工作站子網路,然後找出子網路的虛擬私有雲網路。

    2. 確認可從 VPC 網路存取 Kafka 叢集。舉例來說,您可以在同一個虛擬私有雲網路中部署 Kafka 叢集,也可以使用共用虛擬私有雲DNS 區域,讓叢集可從虛擬私有雲網路存取。

    1 如果透過網際網路存取來源或目標 Kafka 叢集,請設定 Cloud NAT,允許 Connect 叢集工作站存取網際網路。

如要進一步瞭解 Managed Service for Apache Kafka 中的網路,請參閱「Managed Service for Apache Kafka」。

排解網域名稱解析問題

如果使用 MirrorMaker 2.0 連接器時,網域名稱解析發生問題,請執行下列疑難排解步驟:

  1. 查閱 Connect 叢集的工作站子網路,然後找出子網路的虛擬私有雲網路。

  2. 前往 Google Cloud 控制台的「Cloud DNS zones」(Cloud DNS 區域) 頁面。

    前往「DNS Zones」(DNS 區域)

  3. 選取包含虛擬私有雲網路的 Google Cloud 專案。

  4. 按一下「區域」,確認網域名稱顯示在 DNS 區域清單中。

  5. 查看 Connect 叢集的設定,然後找出可解析的 DNS 網域清單。如果未列出網域名稱,請更新 Connect 叢集以新增 DNS 網域。請參閱「更新 Connect 叢集」。

後續步驟