設定 Managed Service for Apache Kafka 的網路

用戶端可以從專案中的任何虛擬私有雲 (VPC) 網路連線至 Managed Service for Apache Kafka 叢集。 Google Cloud

本頁面說明如何在 Managed Service for Apache Kafka 中設定網路、如何啟用 Kafka 用戶端與叢集之間的連線,以及如何啟用跨專案連線。

總覽

建立叢集時,服務會將叢集放在 Google Cloud管理的虛擬私有雲網路中。這個網路稱為「租戶」網路。 每個 Managed Service for Apache Kafka 叢集都有自己的獨立租戶網路。如要讓用戶端應用程式與叢集通訊,請將虛擬私有雲網路中的子網路連線至租戶網路。

下圖顯示兩個 Google Cloud 專案:project-1project-2。Managed Service for Apache Kafka 叢集位於 project-1

具有三個已連線子網路的 Managed Service for Apache Kafka 叢集

下列子網路已連線至叢集:

  • subnet-1,位於虛擬私有雲網路 vpc-1project-1
  • subnet-2,位於虛擬私有雲網路 vpc-2project-1
  • subnet-3,位於虛擬私有雲網路 vpc-3project-2

將子網路連線至叢集

首次建立 Managed Service for Apache Kafka 叢集時,您至少必須指定一個子網路。之後,您可以更新叢集,新增或移除子網路。

連結的子網路可以隸屬於與叢集相同的 Google Cloud 專案,也可以隸屬於不同專案。連線的子網路必須與叢集位於相同區域,但相同 VPC 內任何區域的用戶端都可以連線至該子網路中的 IP 位址。每個虛擬私有雲網路最多只能有一個子網路連線至叢集。

如要查看連線至叢集的子網路,請參閱「查看叢集的子網路」。

叢集 DNS 項目

將子網路連線至叢集時,服務會在該子網路網路中,為叢集的啟動位址和代理程式建立 DNS 項目。Kafka 用戶端會使用啟動位址尋找代理程式並建立連線。

雖然 DNS 名稱在所有連線的子網路中都相同,但每個子網路對應的 IP 位址不同。由於 DNS 名稱一致,所有 Kafka 用戶端應用程式都可以使用相同的啟動位址。如要取得叢集的啟動位址,請參閱「查看叢集的啟動位址」。

如需連線至 Managed Service for Apache Kafka 的用戶端應用程式範例,請參閱下列教學課程:

子網路大小

將子網路新增至叢集時,子網路必須有足夠的IP 位址可用。每個子網路都需要為每個 Kafka 代理程式提供一個 IP 位址,以及一個啟動位址的 IP 位址。Managed Service for Apache Kafka 的叢集大小下限為三個代理程式,因此每個子網路至少需要四個可用 IP 位址,包括啟動程序位址。

如果叢集有超過 45 個 vCPU,則每 15 個 vCPU 會對應一個代理程式。在這種情況下,請按照下列方式計算每個子網路的 IP 位址數量下限:

  1. 將 vCPU 數量除以 15。
  2. 四捨五入至最接近的整數。
  3. 新增 1 來計算啟動位址。

舉例來說,如果叢集有 60 個 vCPU,則至少需要 (60/15 + 1) = 5 個可用的 IP 位址。

Google 日後可能會變更代理程式與 vCPU 的比例。為因應日後的任何變更,建議您分配的 IP 位址數量是上一個步驟計算結果的 3 倍。

規劃子網路大小時,請根據您預期叢集日後擴充的最大大小進行計算。

如果您打算使用 Kafka Connect,也請考慮 Connect 叢集的子網路需求。詳情請參閱工作人員子網路

私人使用的公開 IP 範圍

您可以將叢集連線至使用非 RFC 1918 位址空間的子網路。這類 IP 位址範圍稱為「私用的公開 IP」(PUPI) 範圍

連線至 PUPI 子網路時,不需要額外設定。PUPI 子網路必須使用有效 IPv4 範圍,且不得為禁止使用的 IPv4 子網路範圍

跨專案連結用戶端和叢集

如果不同 Google Cloud 專案中有 Kafka 用戶端,可以透過下列方式將這些用戶端連線至叢集:

以下各節將說明這些選項。

連結跨專案的叢集

您可以將其他專案的子網路連線至叢集。如要啟用跨專案存取權,您必須將權限授予與叢集相關聯的 Google 代管服務帳戶。在您希望 Kafka 用戶端存取叢集的每個專案中,服務帳戶都必須具備該專案的「Managed Kafka Service Agent」IAM 角色。這個角色可讓叢集存取Google Cloud 資源,以便建立網路資源和 DNS 項目。

舉例來說,如果 project-1 包含叢集,且您希望 project-2 中的用戶端存取叢集,請在 project-2 中,將代管 Kafka 服務代理角色授予 project-1 的代管 Kafka 服務帳戶。然後,按照「將子網路連線至叢集」一文的說明,將 project-2 中的子網路連線至叢集。

如要授予必要角色,請按照下列步驟操作:

控制台

  1. 決定要讓 Kafka 用戶端存取 Managed Service for Apache Kafka 叢集的 Google Cloud 專案。

  2. 針對每個專案,前往 Google Cloud 控制台的「IAM」頁面:

    前往「IAM」頁面

  3. 按一下 「授予存取權」

  4. 在「New principals」(新增主體) 欄位中輸入下列內容:

    service-CLUSTER_PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com
    

    CLUSTER_PROJECT_NUMBER 替換為包含 Managed Service for Apache Kafka 叢集的專案專案編號

  5. 按一下「Add roles」(新增角色)。

  6. 在「Search for roles」(搜尋角色) 欄位中輸入 Managed Kafka Service Agent。 服務代理名稱會顯示在搜尋結果中。

  7. 在搜尋結果中選取「Managed Kafka Service Agent」

  8. 按一下「套用」

  9. 按一下 [儲存]

gcloud

  1. 決定要讓 Kafka 用戶端存取 Managed Service for Apache Kafka 叢集的 Google Cloud 專案。

  2. 針對每個專案,執行 gcloud projects add-iam-policy-binding 指令:

    gcloud projects add-iam-policy-binding CLIENT_PROJECT_ID \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com \
        --role=roles/managedkafka.serviceAgent
    

    更改下列內容:

    • CLIENT_PROJECT_ID:包含要連線的虛擬私有雲網路的專案名稱
    • CLUSTER_PROJECT_NUMBER:包含 Managed Service for Apache Kafka 叢集的專案專案編號

使用 Shared VPC 連結專案

Shared VPC 可讓機構將多項專案中的資源連線至共同的虛擬私有雲網路,如要搭配使用共用 VPC 和 Managed Service for Apache Kafka,請按照下列步驟操作:

  1. 建立 Managed Service for Apache Kafka 叢集。

  2. 佈建 Shared VPC

  3. 前一節所述,在 Shared VPC 主專案中,將必要角色授予 Managed Kafka 服務帳戶。

  4. 將 Managed Service for Apache Kafka 叢集連線至 Shared VPC 虛擬私有雲網路中的子網路。

Shared VPC 主專案或服務專案中的用戶端可以連線至叢集。

如要瞭解何時應在網路架構中使用 Shared VPC,請參閱「虛擬私有雲設計的最佳做法和參考架構」。

叢集的網路架構

本節說明 Managed Service for Apache Kafka 使用的網路架構詳細資料。

  • Kafka 叢集會跨越租戶網路和一或多個取用端網路。

  • 在租戶網路中,叢集只有一個啟動 IP 位址和網址。 這個啟動位址對應至連線至叢集中所有代理人的負載平衡器。每個代理程式也可以個別做為啟動伺服器,但我們建議您使用啟動位址,確保可靠性。

  • 在每個消費者網路中,服務會為啟動位址建立 Private Service Connect 端點,並為每個代理程式建立一個端點。

  • 叢集連線的虛擬私有雲網路中,啟動位址的網址相同。IP 位址屬於消費者網路。

  • 用戶端會使用 DNS 名稱連線至 Kafka 代理程式。這些名稱會自動註冊到 Kafka 叢集連線的每個虛擬私有雲網路。啟動位址和通訊埠號碼會以叢集屬性的形式提供。

  • 用戶端會使用啟動程序位址擷取代理程式網址。這些網址會解析為各個虛擬私有雲網路的本機 IP 位址。您可以在 Cloud DNS 中找到實際的代理程式 IP 位址和網址。

下圖顯示 Managed Service for Apache Kafka 叢集網路的範例架構。

Managed Service for Apache Kafka 網路

  • 在本範例中,叢集有三個代理程式,且叢集位於租戶 VPC 中。

  • 代理程式會透過預設的 Kafka 通訊埠 (9092) 與用戶端通訊,並具有專屬 IP 位址。在本例中,這三部代理程式的 IP 位址分別為 10.128.10.2、10.128.10.3 和 10.128.10.4。

  • 這三個代理程式都會連線至啟動負載平衡器。這可確保高可用性和區域容錯能力,因為啟動位址不會僅限於單一代理程式或區域。

疑難排解

如要瞭解如何排解網路問題,請參閱網路錯誤

後續步驟