您可以使用 VPC 網路對等互連,讓 Datastream 私下與虛擬私有雲 (VPC) 網路中的資源通訊。
虛擬私有雲網路對等互連是虛擬私有雲網路與 Datastream 私人網路之間的連線,可讓 Datastream 使用內部 IP 位址與內部資源通訊。使用私人連線會在 Datastream 網路上建立專屬連線,代表沒有其他客戶共用該連線。
您的虛擬私有雲網路與 Datastream 虛擬私有雲網路之間的虛擬私有雲網路對等互連連線,可讓 Datastream 連線至:
- 虛擬私有雲網路中的虛擬機器 (VM) 和內部負載平衡器等資源。
- 使用 Cloud VPN 通道、Dedicated Interconnect VLAN 連結、Partner Interconnect VLAN 連結和 NCC 雲端路由器,連線至虛擬私有雲網路的其他網路中的資源。
虛擬私有雲網路與 Datastream 虛擬私有雲網路之間的虛擬私有雲網路對等互連連線,無法讓 Datastream 連線至:
- 位於虛擬私有雲網路中的 Private Service Connect 端點。
- 位於另一個與您的虛擬私有雲網路對等互連的虛擬私有雲網路中,但未與 Datastream 虛擬私有雲網路對等互連。(這是因為虛擬私有雲網路對等互連不提供遞移性路徑)。
如要在 Datastream 與只能從虛擬私有雲網路存取的資源之間建立連線,您可以在虛擬私有雲網路中使用網路位址轉譯 (NAT) VM。當 Datastream 需要連線至 Cloud SQL 執行個體時,NAT VM 是常見的用途。
本頁說明 NAT VM 設定範例,可讓 Datastream 私下連線至 Cloud SQL 執行個體。

虛擬私有雲對等互連先決條件
您必須先執行下列步驟,讓 Datastream 與專案建立虛擬私有雲對等互連連線,才能建立私人連線設定:
- 具備可與 Datastream 私人網路建立對等互連,且符合「虛擬私有雲網路對等互連」頁面所述規定的虛擬私有雲網路。如要進一步瞭解如何建立這個網路,請參閱「使用虛擬私有雲網路對等互連」。
- 找出虛擬私有雲網路中可用的 IP 範圍 (CIDR 區塊為 /29)。這個 IP 範圍不得是已存在的子網路、私人服務存取預先分配的 IP 範圍,或包含該 IP 範圍的任何路徑 (預設 0.0.0.0 路徑除外)。IP 範圍也不得與 Datastream 保留的內部 IP 範圍 (
10.1.0.0/16和10.2.2.0/24) 重疊。Datastream 會使用這個 IP 範圍建立子網路,以便與來源資料庫通訊。下表說明有效的 IP 範圍。
| 範圍 | 說明 |
|---|---|
10.0.0.0/8172.16.0.0/12192.168.0.0/16
|
私人 IP 位址 RFC 1918 |
100.64.0.0/10 |
共用位址空間 RFC 6598 |
192.0.0.0/24 |
IETF 通訊協定指派項目 RFC 6890 |
192.0.2.0/24 (TEST-NET-1)198.51.100.0/24 (TEST-NET-2)203.0.113.0/24 (TEST-NET-3) |
說明文件 RFC 5737 |
192.88.99.0/24 |
IPv6 至 IPv4 中繼 (已淘汰) RFC 7526 |
198.18.0.0/15 |
基準測試 RFC 2544 |
請確保虛擬私有雲網路中與 Datastream 通訊的任何資源 (例如 NAT VM、內部負載平衡器,或來源和目的地資料庫) 都未使用
10.1.0.0/16或10.2.2.0/24範圍內的 IP 位址。這些範圍是 Datastream 內部基礎架構的預留範圍,如果用於資源,可能會導致轉送衝突和無法預測的連線失敗。確認 Google Cloud 和地端部署防火牆允許來自所選 IP 範圍的流量。如果沒有,請建立允許來源資料庫通訊埠流量的輸入防火牆規則,並確認防火牆規則中的 IPv4 位址範圍與建立私有連線資源時分配的 IP 位址範圍相同:
gcloud compute firewall-rules create FIREWALL-RULE-NAME \ --direction=INGRESS \ --priority=PRIORITY \ --network=PRIVATE_CONNECTIVITY_VPC \ --project=VPC_PROJECT \ --action=ALLOW \ --rules=FIREWALL_RULES \ --source-ranges=IP-RANGE
更改下列內容:
- FIREWALL-RULE-NAME:要建立的防火牆規則名稱。
- PRIORITY:規則的優先順序,以介於 0 到 65535 之間的整數表示 (含首尾)。如果已設定封鎖流量規則,這個值必須低於該規則的值。優先順序值越小,優先權越高。
- PRIVATE_CONNECTIVITY_VPC:可與 Datastream 私人網路建立對等互連,且符合「虛擬私有雲網路對等互連」頁面所述需求的虛擬私有雲網路。這是您在建立私人連線設定時指定的 VPC。
- VPC_PROJECT:虛擬私有雲網路的專案。
- FIREWALL_RULES:要套用防火牆規則的通訊協定和通訊埠清單,例如
tcp:80。這項規則必須允許 TCP 流量傳輸至來源資料庫或 Proxy 的 IP 位址和通訊埠。由於私人連線可支援多個資料庫,因此規則必須考量設定的實際用途。 IP-RANGE:Datastream 用於與來源資料庫通訊的 IP 位址範圍。這個範圍與您建立私人連線設定時,在「分配 IP 範圍」欄位中指定的範圍相同。
您可能也需要建立相同的輸出防火牆規則,允許流量返回 Datastream。
指派給包含
compute.networks.list權限的角色。這項權限可授予您必要的 IAM 權限,列出專案中的虛擬私有雲網路。如要瞭解哪些角色具備這項權限,請參閱 IAM 權限參考資料。
Shared VPC 的必要條件
如果您使用 Shared VPC,除了「VPC 必要條件」一節所述步驟外,還必須完成下列動作:
在服務專案中:
- 啟用 Datastream API。
取得 Datastream 服務帳戶所用的電子郵件地址。執行下列任一操作時,系統會建立 Datastream 服務帳戶:
- 您建立 Datastream 資源,例如連線設定檔或串流。
- 建立私人連線設定,選取共用虛擬私有雲,然後按一下「建立 Datastream 服務帳戶」。服務帳戶是在主機專案中建立。
如要取得 Datastream 服務帳戶所用的電子郵件地址,請在 Google Cloud 控制台首頁中找到「專案編號」,服務帳戶的電子郵件地址為
service-[project_number]@gcp-sa-datastream.iam.gserviceaccount.com。
在主專案中:
將
compute.networkAdminIdentity and Access Management (IAM) 角色權限授予 Datastream 服務帳戶。只有在建立 VPC 對等互連時,才需要這個角色。對等互連建立完成後,您就不再需要該角色。如果貴機構不允許授予權限,請建立具有下列最低權限的自訂角色,以便建立及刪除私人連線資源:
如要進一步瞭解自訂角色,請參閱「建立及管理自訂角色」一文。
設定 NAT VM
找出 Datastream 需要連線的 Cloud SQL 執行個體 IP 位址。
找出虛擬私有雲網路。這是透過虛擬私有雲網路對等互連,連線至 Datastream 虛擬私有雲網路的虛擬私有雲網路。
如果尚未建立,請在 Datastream 建立私人連線設定。這會建立虛擬私有雲網路對等互連連線,連結您的虛擬私有雲網路和 Datastream 虛擬私有雲網路。請記下 Datastream 私人連線設定使用的 IP 位址範圍。
選擇要在下一步建立的 NAT VM 所用機器類型。Google Cloud 會根據 VM 執行個體的機器類型,針對虛擬私有雲網路中由下一個躍點路由傳送的封包,強制執行每個執行個體的最大輸出頻寬限制。詳情請參閱「虛擬私有雲網路中可路由傳輸的目的地輸出流量」和「每個執行個體的最大輸出頻寬」。
在虛擬私有雲網路中建立 NAT VM。建立 VM 時,您必須啟用 IP 轉送。詳情請參閱「為執行個體啟用 IP 轉送」。
如果您的虛擬私有雲網路是 Shared VPC 網路,只要 NAT VM 的網路介面位於 Shared VPC 網路中,您就可以在主專案或任何服務專案中建立 NAT VM。
- 為盡量縮短網路封包往返時間,請在與 Datastream 相同的區域中建立 NAT VM。
- 本範例假設 NAT VM 只有一個網路介面。
- 在 Linux 發行版 (例如 Debian 12) 中執行指令碼。
- 請使用下列啟動指令碼。每次 VM 啟動時,開機指令碼都會由根目錄執行。這份指令碼包含註解,說明每一行指令碼的作用。在指令碼中,將 CLOUD_SQL_INSTANCE_IP 替換為 Cloud SQL 執行個體的 IP 位址,並將 DATABASE_PORT 替換為資料庫軟體使用的目的地連接埠。
#! /bin/bash export DB_ADDR=CLOUD_SQL_INSTANCE_IP export DB_PORT=DATABASE_PORT # Enable the VM to receive packets whose destinations do # not match any running process local to the VM echo 1 > /proc/sys/net/ipv4/ip_forward # Ask the Metadata server for the IP address of the VM nic0 # network interface: md_url_prefix="http://169.254.169.254/computeMetadata/v1/instance" vm_nic_ip="$(curl -H "Metadata-Flavor: Google" ${md_url_prefix}/network-interfaces/0/ip)" # Clear any existing iptables NAT table entries (all chains): iptables -t nat -F # Create a NAT table entry in the prerouting chain, matching # any packets with destination database port, changing the destination # IP address of the packet to the SQL instance IP address: iptables -t nat -A PREROUTING \ -p tcp --dport $DB_PORT \ -j DNAT \ --to-destination $DB_ADDR # Create a NAT table entry in the postrouting chain, matching # any packets with destination database port, changing the source IP # address of the packet to the NAT VM's primary internal IPv4 address: iptables -t nat -A POSTROUTING \ -p tcp --dport $DB_PORT \ -j SNAT \ --to-source $vm_nic_ip # Save iptables configuration: iptables-save
建立允許輸入的防火牆規則 (或全域網路防火牆政策、區域網路防火牆政策或階層式防火牆政策中的規則),並符合下列特徵:
- 方向:輸入
- 動作:允許
- 目標參數:至少是 NAT VM
- 來源參數:Datastream 私人連線設定使用的 IP 位址範圍
- 通訊協定:TCP
- 通訊埠:至少須包含 DATABASE_PORT
默示允許輸出防火牆規則可讓 NAT VM 將封包傳送到任何目的地。如果虛擬私有雲網路使用輸出拒絕防火牆規則,您可能必須建立輸出允許防火牆規則,允許 NAT VM 將封包傳送至 Cloud SQL 執行個體。如果需要輸出允許規則,請使用下列參數:
- 方向:輸出
- 動作:允許
- 目標參數:至少是 NAT VM
- 目的地參數:Cloud SQL 執行個體 IP 位址
- 通訊協定:TCP
- 通訊埠:至少須包含 DATABASE_PORT
請確認您已設定 Cloud SQL 執行個體,接受來自 NAT VM 網路介面所用主要內部 IPv4 位址的連線。如需操作說明,請參閱 Cloud SQL 說明文件中的「使用授權網路授權」。
在 Datastream 中建立連線設定檔。在設定檔的連線詳細資料中,指定您建立的 NAT VM 主要內部 IPv4 位址。在連線設定檔的通訊埠欄位中,輸入來源資料庫的通訊埠。
設定一對 NAT VM 和內部直通式網路負載平衡器
如要提升 NAT VM 解決方案的可靠性,請考慮採用下列架構,其中使用一對 NAT VM 和內部直通式網路負載平衡器:
在相同地區的不同區域中建立兩個 NAT VM。請按照設定 NAT VM 的操作說明建立每個 VM,並將每個 VM 放在各自的區域非代管執行個體群組中。
或者,您也可以建立地區代管執行個體群組。在代管執行個體群組範本中,加入開機指令碼,例如「設定 NAT VM」一節中的範例開機指令碼。
建立內部直通式網路負載平衡器,並將上一步的執行個體群組設為後端服務的後端。如需內部直通式網路負載平衡器範例,請參閱「使用 VM 執行個體群組後端設定內部直通式網路負載平衡器」。
設定負載平衡器健康狀態檢查時,您可以使用 TCP 健康狀態檢查,並使用與 DATABASE_PORT 相符的目的地 TCP 連接埠。健康狀態檢查封包會根據 NAT VM 設定,轉送至 CLOUD_SQL_INSTANCE_IP。或者,您可以在 NAT VM 上執行本機程序,在自訂通訊埠上回應 TCP 或 HTTP 健康狀態檢查。
按照「設定 NAT VM」一文中的說明,建立防火牆規則並設定 Cloud SQL 授權網路。確認 Cloud SQL 授權網路包含兩個 NAT VM 的主要內部 IPv4 位址。
建立 Datastream 連線設定檔時,請在設定檔的連線詳細資料中,指定內部直通網路負載平衡器轉送規則的 IP 位址。