您可以使用 VPC 網路對等互連,讓 Datastream 私下與虛擬私有雲 (VPC) 網路中的資源通訊。
虛擬私有雲網路對等互連是虛擬私有雲網路與 Datastream 私人網路之間的連線,可讓 Datastream 使用內部 IP 位址與內部資源通訊。使用私人連線會在 Datastream 網路上建立專屬連線,代表沒有其他客戶共用該連線。
您的虛擬私有雲網路與 Datastream 虛擬私有雲網路之間的虛擬私有雲網路對等互連連線,可讓 Datastream 連線至:
- 虛擬私人雲端網路中的虛擬機器 (VM) 和內部負載平衡器等資源。
- 使用 Cloud VPN 通道、專屬互連網路 VLAN 連結、合作夥伴互連網路 VLAN 連結和 Network Connectivity Center 雲端路由器,連線至虛擬私有雲網路的其他網路中的資源。
虛擬私有雲網路與 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 範圍,或包含該 IP 範圍的任何路徑 (預設 0.0.0.0 路徑除外)。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 | 
- 確認 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_PROJECT:虛擬私有雲網路的專案。
- FIREWALL_RULES:要套用防火牆規則的通訊協定和通訊埠清單,例如 tcp:80。這項規則必須允許 TCP 流量流向來源資料庫或 Proxy 的 IP 位址和通訊埠。由於私人連線可支援多個資料庫,因此規則必須考量設定的實際用量。
- IP-RANGE:Datastream 用於與來源資料庫通訊的 IP 位址範圍。這個範圍與您建立私人連線設定時,在「分配 IP 範圍」欄位中指定的範圍相同。 - 您可能也需要建立相同的輸出防火牆規則,允許流量返回 Datastream。 
 
- 指派給含有 - compute.networks.list權限的角色。這項權限可授予您必要的 IAM 權限,列出專案中的虛擬私有雲網路。您可以查看 IAM 權限參考資料,瞭解哪些角色包含這項權限。
共用虛擬私有雲的必要條件
如果您使用共用虛擬私有雲,除了「虛擬私有雲必要條件」一節所述步驟外,還必須完成下列動作:
- 在服務專案中: - 啟用 Datastream API。
- 取得 Datastream 服務帳戶所用的電子郵件地址。執行下列任一操作時,系統會建立 Datastream 服務帳戶: - 您會建立 Datastream 資源,例如連線設定檔或串流。
- 建立私人連線設定,選取共用虛擬私有雲,然後按一下「建立 Datastream 服務帳戶」。服務帳戶是在主機專案中建立。
 - 如要取得 Datastream 服務帳戶所用的電子郵件地址,請在 Google Cloud 控制台首頁中找到「專案編號」,服務帳戶的電子郵件地址為 - service-[project_number]@gcp-sa-datastream.iam.gserviceaccount.com。
 
- 在主專案中: - 將身分與存取權管理 (IAM) 角色權限 - compute.networkAdmin授予 Datastream 服務帳戶。只有在建立 VPC 對等互連時,才需要這個角色。對等互連建立完成後,您就不再需要這個角色。- 如果貴機構不允許授予權限,請建立自訂角色,並授予下列最低權限,以便建立及刪除私人連線資源: 
 - 如要進一步瞭解自訂角色,請參閱「建立及管理自訂角色」一文。 
設定 NAT VM
- 找出 Datastream 需要連線的 Cloud SQL 執行個體 IP 位址。 
- 找出虛擬私有雲網路。這是透過虛擬私有雲網路對等互連連線至 Datastream 虛擬私有雲網路的虛擬私有雲網路。 
- 如果尚未建立,請在 Datastream 中建立私人連線設定。這會建立 VPC 網路對等互連連線,連結您的 VPC 網路和 Datastream VPC 網路。請記下 Datastream 私人連線設定使用的 IP 位址範圍。 
- 選擇要用於下一步建立的 NAT VM 的機器類型。Google Cloud 會根據 VM 執行個體的機器類型,針對虛擬私有雲網路中由下一個躍點路由傳送的封包,強制執行每個執行個體的最大輸出頻寬限制。詳情請參閱可透過虛擬私有雲網路路由傳輸至目的地的輸出流量,以及每個執行個體的輸出頻寬上限。 
- 在虛擬私有雲網路中建立 NAT VM。如果您的虛擬私有雲網路是共用虛擬私有雲網路,只要 NAT VM 的網路介面位於共用虛擬私有雲網路中,您就可以在主專案或任何服務專案中建立 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 將封包傳送到任何目的地。如果您的 VPC 網路使用輸出拒絕防火牆規則,您可能必須建立輸出允許防火牆規則,允許 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 位址。