排解 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 叢集,將代管 Kafka 服務代理 IAM 角色授予該叢集專案的代管 Kafka 服務帳戶。詳情請參閱「設定 Managed Service for Apache Kafka 網路」。

  • 無法驗證自行管理或外部叢集。

    如果是自行管理或外部 Kafka 叢集,請確認叢集的驗證屬性正確無誤。詳細資料取決於叢集設定。詳情請參閱「建立 MirrorMaker 2 連接器」。

  • 叢集不在同一個 VPC Service Controls 範圍內。

    如果您使用 VPC Service Controls 隔離 Kafka 叢集,請確認叢集位於相同 perimeter 內。詳情請參閱「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 服務帳戶。請按照「在代管 Kafka ACL 中新增 ACL 項目」一文的步驟操作。

  • 主體為 User:service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com。將 PROJECT_NUMBER 替換為 Google Cloud 專案編號。

  • 授予特定主題的讀取和寫入權限,以及特定消費者群組的讀取權限。如要瞭解如何為 ACL 指定資源,請參閱「ACL ID」。

訊息不會重複

如要排解這個問題,請檢查以下幾點:

  • 目標主題名稱:根據預設,MirrorMaker 2.0 會使用 DefaultReplicationPolicy,並在目標叢集中的複製主題名稱前加上 source.cluster.alias。舉例來說,如果來源叢集別名為 source,來源叢集中名為 my-topic 的主題會複製到 source.my-topic。請確認消費者從前置主題名稱讀取,或在連接器設定中設定 replication.policy.class=org.apache.kafka.connect.mirror.IdentityReplicationPolicy,以保留原始主題名稱。

排解網路問題

如果在使用 MirrorMaker 2.0 連接器時遇到網路問題,請執行下列疑難排解步驟。

  • 連線至 Managed Service for Apache Kafka 叢集時:

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

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

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

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

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

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

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

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

如要進一步瞭解 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. 按一下「Zones」(區域),確認網域名稱顯示在 DNS 區域清單中。

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

後續步驟

Apache Kafka® 是 Apache Software Foundation 或其關係企業在美國和/或其他國家/地區的註冊商標。