用戶端可以從專案中的任何虛擬私有雲 (VPC) 網路連線至 Managed Service for Apache Kafka 叢集。 Google Cloud
本頁面說明如何在 Managed Service for Apache Kafka 中設定網路、如何啟用 Kafka 用戶端與叢集之間的連線,以及如何啟用跨專案連線。
總覽
建立叢集時,這項服務會將叢集放在由 Google Cloud管理的虛擬私有雲網路中。這個網路稱為「租戶」網路。 每個 Managed Service for Apache Kafka 叢集都有自己的獨立租戶網路。如要讓用戶端應用程式與叢集通訊,請將虛擬私有雲網路中的子網路連線至租戶網路。
下圖顯示兩個 Google Cloud 專案:project-1和project-2。Managed Service for Apache Kafka 叢集位於 project-1。

下列子網路已連線至叢集:
subnet-1,位於project-1的虛擬私有雲網路vpc-1中。subnet-2,位於project-1的虛擬私有雲網路vpc-2中。subnet-3,位於project-2的虛擬私有雲網路vpc-3中。
將子網路連線至叢集
首次建立 Managed Service for Apache Kafka 叢集時,您必須至少指定一個子網路。之後,您可以更新叢集,新增或移除子網路。
連結的子網路可以隸屬於與叢集相同的 Google Cloud 專案,也可以隸屬於不同專案。連線的子網路必須與叢集位於相同區域,但相同 VPC 內任何區域的用戶端都可以連線至該子網路中的 IP 位址。每個 VPC 網路最多只能有一個子網路連線至叢集。
如要查看與叢集連線的子網路,請參閱「查看叢集的子網路」。
叢集 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 位址數量下限:
- 將 vCPU 數量除以 15。
- 四捨五入至最接近的整數。
- 新增 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 子網路範圍。
跨專案連結用戶端和叢集
如果 Kafka 用戶端位於不同 Google Cloud 專案,可以透過下列方式連線至叢集:
以下各節將說明這些選項。
連結跨專案的叢集
您可以將其他專案的子網路連線至叢集。如要啟用跨專案存取權,您必須將權限授予與叢集相關聯的 Google 管理服務帳戶。在您希望 Kafka 用戶端存取叢集的每個專案中,服務帳戶都必須具備該專案的「Managed Kafka Service Agent」IAM 角色。這個角色可讓叢集存取Google Cloud 資源,以便建立網路資源和 DNS 項目。
舉例來說,如果 project-1 包含叢集,且您希望 project-2 中的用戶端存取叢集,請在 project-2 中,將代管 Kafka 服務代理角色授予 project-1 的代管 Kafka 服務帳戶。然後按照「將子網路連線至叢集」一文的說明,將 project-2 中的子網路連線至叢集。
如要授予必要角色,請按照下列步驟操作:
控制台
決定要讓 Kafka 用戶端存取 Managed Service for Apache Kafka 叢集的 Google Cloud 專案。
針對每個專案,前往 Google Cloud 控制台的「IAM」頁面:
按一下 「授予存取權」。
在「New principals」(新增主體) 欄位中輸入下列內容:
service-CLUSTER_PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com將 CLUSTER_PROJECT_NUMBER 替換為包含 Managed Service for Apache Kafka 叢集的專案專案編號。
按一下「Add roles」(新增角色)。
在「Search for roles」(搜尋角色) 欄位中輸入
Managed Kafka Service Agent。 服務代理名稱會顯示在搜尋結果中。在搜尋結果中選取「Managed Kafka Service Agent」。
按一下「套用」。
按一下 [儲存]。
gcloud
決定要讓 Kafka 用戶端存取 Managed Service for Apache Kafka 叢集的 Google Cloud 專案。
針對每個專案,執行
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 叢集的專案專案編號
使用共用虛擬私有雲連結專案
共用 VPC 可讓機構將多項專案中的資源連線至共同的 VPC 網路,如要搭配 Managed Service for Apache Kafka 使用共用 VPC,請按照下列步驟操作:
建立 Managed Service for Apache Kafka 叢集。
如前一節所述,在共用虛擬私有雲主專案中,授予 Managed Kafka 服務帳戶必要角色。
將 Managed Service for Apache Kafka 叢集連線至共用 VPC 網路中的子網路。
共用虛擬私有雲主專案或服務專案中的用戶端可以連線至叢集。
如要瞭解何時應在網路架構中使用共用虛擬私有雲,請參閱「虛擬私有雲設計的最佳做法和參考架構」。
叢集的網路架構
本節說明 Managed Service for Apache Kafka 使用的網路架構詳細資料。
Kafka 叢集會跨越租戶網路和一或多個取用端網路。
在租戶網路中,叢集具有單一啟動 IP 位址和網址。 這個啟動程序位址對應至連線至叢集中所有代理人的負載平衡器。每個代理程式也可以個別做為啟動伺服器,但我們建議您使用啟動位址,確保可靠性。
在每個消費者網路中,服務會為啟動位址建立 Private Service Connect 端點,並為每個代理程式建立一個端點。
叢集連線的虛擬私有雲網路中,啟動位址的網址相同。IP 位址是取用者網路的本機位址。
用戶端會使用 DNS 名稱連線至 Kafka 代理程式。這些名稱會自動註冊到 Kafka 叢集連線的每個虛擬私有雲網路。啟動位址及其通訊埠號碼會以叢集屬性的形式提供。
用戶端會使用啟動程序位址擷取代理程式網址。這些網址會解析為各個 VPC 網路的本機 IP 位址。您可以在 Cloud DNS 中找到實際的代理程式 IP 位址和網址。
下圖顯示 Managed Service for Apache Kafka 叢集網路的範例架構。

在本範例中,叢集有三個代理程式,且叢集位於租戶 VPC 中。
代理程式會透過預設的 Kafka 通訊埠 (9092) 與用戶端通訊,並具有專屬 IP 位址。在本例中,這三個代理程式的 IP 位址分別為 10.128.10.2、10.128.10.3 和 10.128.10.4。
這三個代理程式都會連線至啟動負載平衡器。這可確保高可用性和區域容錯能力,因為啟動位址不會僅限於單一代理程式或區域。
排解虛擬私有雲網路設定問題
如果服務無法設定取用端虛擬私有雲網路,以存取 Managed Service for Apache Kafka 叢集,系統會記錄類似下列內容的訊息:
Managed Service for Apache Kafka failed to set up networking in VPC subnet
to the cluster project.
如果 Kafka 用戶端無法連線至 Managed Service for Apache Kafka 叢集,請按照下列疑難排解步驟操作:
在取用者 VPC 網路的父項專案中,啟用 Compute Engine 和 Cloud DNS API。
如果 Managed Service for Apache Kafka 叢集和消費者 VPC 網路位於不同專案,請設定必要權限。請參閱「連結跨專案的叢集」。
請確認沒有任何機構政策限制,會阻止服務在消費者 VPC 網路的專案中建立必要資源。
確認用戶端使用的是正確的啟動位址。
請確認 Kafka 用戶端在虛擬私有雲網路中執行,且該網路已設定為存取 Managed Service for Apache Kafka 叢集。
如果您在電腦或筆記型電腦上執行 Kafka 用戶端,可以設定 Compute Engine 執行個體做為 Proxy,存取 Managed Service for Apache Kafka 叢集。詳情請參閱「設定用戶端電腦」。