在 Datastream 中,虛擬私有雲網路對接可讓您使用內部 IP 位址,在虛擬私有雲網路和 Datastream 之間建立專屬連線。建立私人連線設定前,請先查看支援的網路拓撲,並完成虛擬私有雲和Shared VPC必要條件。如要連線至 Cloud SQL 執行個體,您也可以在虛擬私有雲網路中設定 NAT VM。
關於 Datastream 中的虛擬私有雲網路對接
使用私人連線會在 Datastream 網路中建立專屬連線,其他客戶都無法共用。
虛擬私有雲網路與 Datastream 虛擬私有雲網路之間的虛擬私有雲網路對接連線,可讓 Datastream 連線至:
- 虛擬私有雲網路中的資源,例如虛擬機器 (VM) 和內部負載平衡器。
- 其他網路中的資源,這些網路使用 Cloud VPN 通道、Dedicated Interconnect VLAN 連結、Partner Interconnect VLAN 連結和 Network Connectivity Center (NCC) Cloud Router 連線至虛擬私有雲網路。
虛擬私有雲網路與 Datastream 虛擬私有雲網路之間的虛擬私有雲網路對接連線,不允許 Datastream 連線至:
- 位於虛擬私有雲網路中的 Private Service Connect 端點。
- 資源位於與您的虛擬私有雲網路對接,但「未」與 Datastream 虛擬私有雲網路對接的其他虛擬私有雲網路,因為虛擬私有雲網路對接不提供遞移路由。
如要在 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_PROJECT:虛擬私有雲網路的專案。
- FIREWALL_RULES:防火牆規則適用的通訊協定和通訊埠清單,例如
tcp:80。規則必須允許 TCP 流量傳送至來源資料庫或 Proxy 的 IP 位址和通訊埠。由於私人連線可支援多個資料庫,因此規則必須考量設定的實際用量。 IP-RANGE:Datastream 用來與來源資料庫通訊的 IP 位址範圍。這個範圍與您在建立私人連線設定時,於「Allocate an IP range」(分配 IP 範圍) 欄位中指定的範圍相同。
您可能也需要建立相同的輸出防火牆規則,允許流量傳回 Datastream。
獲派具備
compute.networks.list權限的角色。這項權限可讓您取得必要的 IAM 權限,列出專案中的虛擬私有雲網路。如要瞭解哪些角色包含這項權限,請參閱 IAM 權限參考資料。
Shared VPC 必要條件
如果您使用Shared VPC,除了虛擬私有雲必要條件一節所述的步驟外,還必須完成下列操作:
在服務專案中:
- 啟用 Datastream API。
取得 Datastream 服務帳戶使用的電子郵件地址。執行下列任一操作時,系統會建立 Datastream 服務帳戶:
- 建立 Datastream 資源,例如連線設定檔或串流。
- 您建立私人連線設定,選取 Shared VPC,然後按一下「建立 Datastream 服務帳戶」。服務帳戶會在主專案中建立。
如要取得 Datastream 服務帳戶使用的電子郵件地址,請在 Google Cloud 控制台首頁中找出「Project number」(專案編號)。服務帳戶的電子郵件地址為
service-[project_number]@gcp-sa-datastream.iam.gserviceaccount.com。
在主專案中:
將
compute.networkAdminIdentity and Access Management (IAM) 角色權限授予 Datastream 服務帳戶。只有在建立虛擬私有雲對接時,才需要這個角色。建立對等互連後,就不再需要這個角色。如果貴組織不允許授予權限,請建立自訂角色,並授予下列最低權限,以便建立及刪除私人連線資源:
如要進一步瞭解自訂角色,請參閱「建立及管理自訂角色」。
設定 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,前提是 NAT VM 的網路介面位於 Shared VPC 網路中。
- 為盡可能縮短網路封包往返時間,請在 Datastream 所在區域建立 NAT VM。
- 這個範例假設 NAT VM 只有一個網路介面。
- 在 Linux 發行版 (例如 Debian 12) 中執行指令碼。
- 使用下列開機指令碼。每次 VM 啟動時,root 都會執行開機指令碼。這個指令碼包含註解,說明每行指令碼的作用。在指令碼中,將 CLOUD_SQL_INSTANCE_IP 替換為 Cloud SQL 執行個體的 IP 位址,並將 DATABASE_PORT 替換為資料庫軟體使用的目的地通訊埠。
#! /bin/bash export DB_ADDR=CLOUD_SQL_INSTANCE_IP export DB_PORT=DATABASE_PORT export SYSCTL_CONF_FILE="/etc/sysctl.d/99-sysctl.conf" # Ensure the VM can receive packets whose destinations do # not match any running process local to the VM if [ "$(sysctl net.ipv4.ip_forward)" != "net.ipv4.ip_forward = 1" ]; then echo "Enabling IP forwarding..." if [ ! -f "${SYSCTL_CONF_FILE}" ]; then # Create the kernel parameter config file if it doesn't exist. touch "${SYSCTL_CONF_FILE}" fi # Remove any lines with net.ipv4.ip_forward: sed -i '/net.ipv4.ip_forward/d' "${SYSCTL_CONF_FILE}" # Append net.ipv4.ip_forward=1: echo "net.ipv4.ip_forward=1" >> "${SYSCTL_CONF_FILE}" # Reload kernel parameters: sysctl --system fi # 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 中建立連線設定檔。在設定檔的連線詳細資料中,指定您建立的網路位址轉譯 VM 主要內部 IPv4 位址。在連線設定檔的通訊埠欄位中,輸入來源資料庫的通訊埠。
設定一組網路位址轉譯 VM 和內部直通式網路負載平衡器
如要提高 NAT VM 解決方案的可靠性,請考慮採用下列架構,其中使用一對 NAT VM 和內部直通式網路負載平衡器:
在相同區域的不同可用區中,建立兩個 NAT VM。請按照「設定 NAT VM」的操作說明建立各個 VM,並將每個 VM 放入各自的可用區非代管執行個體群組。
或者,您也可以建立區域性代管執行個體群組。在代管執行個體群組範本中,加入開機指令碼,例如「設定 NAT VM」操作說明中的範例開機指令碼。
建立內部直通式網路負載平衡器,其後端服務會使用上一步中的一或多個執行個體群組做為後端。如需內部直通式網路負載平衡器範例,請參閱「設定具備 VM 執行個體群組後端的內部直通式網路負載平衡器」。
設定負載平衡器健康狀態檢查時,您可以使用 TCP 健康狀態檢查,其目的地 TCP 通訊埠與 DATABASE_PORT 相符。健康狀態檢查封包會根據網路位址轉譯 VM 設定,轉送至 CLOUD_SQL_INSTANCE_IP。或者,您也可以在 NAT VM 上執行本機程序,在自訂通訊埠上回應 TCP 或 HTTP 健康狀態檢查。
按照「設定 NAT VM」操作說明,建立防火牆規則並設定 Cloud SQL 授權網路。確認 Cloud SQL 授權網路包含兩個 NAT VM 的主要內部 IPv4 位址。
建立 Datastream 連線設定檔時,請在設定檔的連線詳細資料中,指定內部直通式網路負載平衡器轉送規則的 IP 位址。