用戶端可以從 Google Cloud 專案中的任何虛擬私有雲 (VPC) 網路,連線至 Google Cloud Managed Service for Apache Kafka 叢集。您也可以透過公開網際網路,啟用來自信任 IP 範圍的存取權。
本頁面說明如何在 Managed Service for Apache Kafka 中設定網路、如何啟用 Kafka 用戶端與叢集之間的連線,以及如何跨不同專案私下連線用戶端和叢集。
虛擬私有雲網路是實體網路的虛擬版本,建構於 Google Cloud內。可為 VM 執行個體、容器工作負載和其他資源提供安全的私人網路連線。詳情請參閱「虛擬私有雲網路總覽」。
總覽
建立叢集時,這項服務會將叢集代理程式和網路端點放在 Google 管理的專案中,並納入虛擬私有雲網路。這個專案稱為「租戶」專案,而網路則稱為「租戶」網路。相較之下,您的資源、用戶端應用程式和用戶端虛擬私有雲網路位於您自己的專案中,也就是「消費者」專案。每個 Managed Service for Apache Kafka 叢集都有自己的獨立租戶網路。
虛擬私有雲網路會劃分為子網路。每個子網路都會在雲端網路的特定區域中定義 IP 位址範圍。如要讓用戶端應用程式與叢集通訊,請將虛擬私有雲網路內的子網路連線至租戶網路,或選擇開啟公開叢集存取權,透過公開網際網路連線。
下圖顯示兩個 Google Cloud 專案:project-1 和 project-2。Managed Service for Apache Kafka 叢集位於 project-1。

下列子網路已連線至叢集:
subnet-1,位於虛擬私有雲網路vpc-1中project-1。subnet-2,位於虛擬私有雲網路vpc-2中project-1。subnet-3,位於虛擬私有雲網路vpc-3中project-2。
將子網路連線至叢集
首次建立 Managed Service for Apache Kafka 叢集時,您必須指定至少一個子網路。之後,您可以更新叢集來新增或移除子網路。
連線的子網路可以與叢集屬於同一個消費者專案,也可以屬於不同的消費者專案。已連線 VPC 網路中任何區域的用戶端應用程式,都能連線至叢集。如要進一步瞭解子網路位置和數量,請參閱「限制」一節。
如要進一步瞭解如何查看已連線的子網路,請參閱「查看叢集」。
叢集 DNS 項目
將子網路連線至叢集時,服務會在該子網路網路中,為叢集的啟動位址和代理程式建立 DNS 項目。Kafka 用戶端會使用啟動位址尋找代理程式並建立連線。當啟動伺服器將用戶端重新導向至特定代理程式時,會使用代理程式網址,而非 IP 位址。
叢集的啟動網址和代理程式網址在叢集生命週期內不會變動,但不同叢集的網址格式可能不同。如要取得叢集的啟動位址,請參閱「查看叢集的啟動位址」。
雖然 DNS 名稱在所有連線的子網路中都相同,但每個子網路對應的 IP 位址不同。由於 DNS 名稱一致,所有 Kafka 用戶端應用程式都可以使用相同的啟動位址。
如需連線至 Managed Service for Apache Kafka 的用戶端應用程式範例,請參閱下列教學課程:
子網路大小
將子網路新增至叢集時,子網路必須有足夠的可用 IP 位址。每個子網路都需要一個 IP 位址 (適用於每個 Kafka 代理程式),以及一個 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 位址數量是上一個步驟計算結果的三倍。
規劃子網路大小時,請根據叢集預計擴充的最大大小進行計算。
如果您打算使用 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 中,將 Managed Kafka 服務代理角色授予 project-1 的 Managed 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。 服務代理名稱會顯示在搜尋結果中。在搜尋結果中選取「代管型 Kafka 服務代理」。
按一下「套用」。
按一下 [儲存]。
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 叢集的專案專案編號
使用 Shared VPC 連結專案
Shared VPC 可讓機構將多項專案中的資源連線至共同的虛擬私有雲網路,如要將共用 VPC 與 Managed Service for Apache Kafka 搭配使用,請按照下列步驟操作:
建立 Managed Service for Apache Kafka 叢集。
如前一節所述,在共用虛擬私有雲主專案中,將必要角色授予代管 Kafka 服務帳戶。
將 Managed Service for Apache Kafka 叢集連線至共用虛擬私有雲網路中的子網路。
Shared VPC 主專案或服務專案中的用戶端可以連線至叢集。
如要瞭解何時在網路架構中使用 Shared VPC,請參閱「虛擬私有雲設計的最佳做法與參考架構」。
將用戶端連線至公開叢集
如果用戶端應用程式位於虛擬私有雲網路外部,您可以開啟叢集的公開存取權。公開叢集仍須連線至子網路。不過,您不需要透過該介面傳送流量。
開啟公用叢集功能後,服務會為叢集的代理程式和啟動程序端點佈建外部 IPv4 位址。這項服務也會讓叢集 DNS 項目可公開解析為這些公開 IP 位址。也就是說,外部用戶端可以使用相同的啟動位址來尋找代理程式並建立連線。這項實作作業使用水平分割 DNS。含有已連線子網路的虛擬私有雲網路中的用戶端會繼續解析私有端點,其他網路中的用戶端則會解析公有端點。開啟公開叢集功能不會在消費者專案中建立額外資源。
啟用公開叢集功能時,您必須提供一或多個允許的來源 IP 範圍。如要進一步瞭解允許的範圍大小和限制,請參閱「公開叢集」或「限制」一節。
您可以更新叢集,新增或移除允許的來源 IP 範圍。Managed Service for Apache Kafka 會使用 Cloud Next Generation Firewall 限制公用叢集的存取權。移除允許的來源 IP 範圍只會影響新連線 (請參閱對現有流量的影響)。
這項服務會採取多項預防措施,確保公開叢集安全無虞。所有連線在傳輸時都會使用 TLS 加密,且所有連線都必須經過驗證。您必須使用 SASL 搭配 IAM 身分,或使用 mTLS 搭配用戶端憑證進行驗證。不允許匿名存取。詳情請參閱「Kafka 代理程式的驗證類型」。
安全管理員可以透過自訂機構政策限制,禁止專案中的公開叢集。如要進一步瞭解組織政策,請參閱「建立自訂限制」。
設定外部網路的輸出防火牆
在某些情況下,您可能需要判斷代理程式和啟動端點的外部 IPv4 位址。如需如何擷取這些值的操作說明,請參閱「公開叢集詳細資料」。
這項服務會透過下列方式提供這類資訊:
與叢集相關聯的外部 IPv4 位址,可在 Managed Service for Apache Kafka API、
gcloud和 Terraform 中取得。這項服務會維護一或多個探索 DNS 記錄。這些是 DNS
A記錄,其中包含與叢集相關聯的所有外部 IPv4 位址。您可以在以 FQDN 為基礎的防火牆 (例如 Cloud NGFW) 中使用這些記錄,當端點清單變更時,系統會自動更新規則。API、gcloud和 Terraform 中都有探索端點清單。
使用與叢集相關聯的公開 IP 位址時,請注意下列事項:
與叢集相關聯的公開 IPv4 位址清單可能會變更或增補內容。因此,請自動化使用這項資訊的方式,或定義程序,在擴大叢集時將新的探索 DNS 記錄納入考量。以下情況均會導致變更:
調度叢集資源。擴大作業可能會新增一或多個外部 IPv4 位址,因為系統會新增代理程式。如要瞭解 vCPU 數量如何影響代理程式數量,請參閱子網路大小。
關閉再開啟公開叢集功能。這項動作會為叢集指派一組新的外部 IPv4 位址。
每個探索 DNS 記錄最多可包含 30 個 IP 位址。這會維持在 FQDN 防火牆強制執行的常見限制內。如果叢集有 29 個以下的代理程式,則會有一個探索 DNS 記錄,其中包含 30 個外部 IPv4 位址 (包括啟動程序記錄)。每增加 30 個代理程式,服務就會新增一筆探索 DNS 記錄。如要瞭解 vCPU 數量如何影響代理程式數量,請參閱子網路大小。
請勿將 Kafka 用戶端設定為連線至探索 DNS 記錄,而是將用戶端設定為連線至啟動位址。詳情請參閱「限制」一節。
如果您使用這項資訊設定輸出防火牆,請允許連線至 TCP 通訊埠
9092(SASL) 和9192(mTLS)。
叢集的網路架構
本節說明 Managed Service for Apache Kafka 使用的網路架構詳細資料。
Kafka 叢集會跨越租戶網路和一或多個取用端網路。
在租戶網路中,叢集只有一個啟動 IP 位址和網址。這個啟動程序位址對應至連線至叢集中所有代理程式的負載平衡器。每個代理程式也可以個別做為啟動伺服器,但我們建議您使用啟動位址,確保可靠性。
在每個消費者網路中,服務會為啟動位址建立 Private Service Connect 端點,並為每個代理程式建立一個端點。
叢集連線的虛擬私有雲網路中,啟動位址的網址相同。IP 位址是取用者網路的本機位址。
用戶端會使用 DNS 名稱連線至 Kafka 代理程式。這些名稱會自動註冊到 Kafka 叢集連線的每個虛擬私有雲網路。啟動程序位址及其通訊埠號碼可做為叢集的屬性。
用戶端會使用啟動程序位址擷取代理程式網址。這些網址會解析為各個虛擬私有雲網路的本機 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。
這三個代理程式都會連線至啟動負載平衡器。這可確保高可用性和區域容錯能力,因為啟動位址不會僅限於單一代理程式或區域。
限制
VPC 連線和公開叢集有以下限制:
子網路區域。連線的子網路必須與叢集位於相同區域。
子網路數量。您至少可將一個子網路連線至叢集,最多可連線十個。
每個網路的子網路。每個虛擬私有雲網路最多只能將一個子網路連線至叢集。
子網路大小。每個連線的子網路至少需要每個代理程式一個 IP 位址,以及一個用於啟動位址的 IP 位址。至少須提供四個可用的 IP 位址。詳情請參閱子網路大小。
公用叢集的連結子網路。如要開啟公開存取權,叢集仍須至少有一個連結的子網路,但您不需要透過該子網路傳送流量。
允許的來源 IP 範圍。公開叢集允許的每個來源 IP 範圍都必須以 IPv4 CIDR 標記法指定。每個 CIDR 子網路大小必須介於
/16至/32之間。CIDR 範圍不得重疊。系統不支援 IPv6 位址。最多可以指定 500 個允許的來源 IP 範圍。探索記錄 DNS 解析。探索 DNS 記錄僅用於設定以 FQDN 為基礎的出站防火牆。請勿設定 Kafka 用戶端連線至這些探索記錄,而是設定用戶端連線至啟動位址。
疑難排解
如要瞭解如何排解網路問題,請參閱「網路錯誤」。
後續步驟
如要進一步瞭解如何建立叢集,請參閱「建立 Managed Service for Apache Kafka 叢集」。
如要進一步瞭解如何更新叢集,請參閱「更新 Managed Service for Apache Kafka 叢集」。
如要進一步瞭解如何查看叢集的子網路和作用中代理程式,請參閱「查看叢集」。
如要進一步瞭解如何發布及耗用訊息,請參閱「發布及耗用訊息」。