您可以使用虛擬私有雲網路對等互連功能,讓 Datastream 與虛擬私有雲 (VPC) 網路中的資源進行私人通訊。虛擬私有雲網路與 Datastream 虛擬私有雲網路之間的 VPC 網路對等互連連線,可讓 Datastream 連線至:
- 虛擬私有雲網路中的資源,例如虛擬機器 (VM) 和內部負載平衡器。
- 使用 Cloud VPN 通道、專屬互連網路 VLAN 連結、合作夥伴互連網路 VLAN 連結和 Network Connectivity Center 雲端路由器,將其他網路連線至您的 VPC 網路。
虛擬私有雲網路與 Datastream 虛擬私有雲網路之間的 VPC 網路對等互連連線無法讓 Datastream 連線至:
- 位於虛擬私有雲網路中的 Private Service Connect 端點。
- 位於其他虛擬私人雲端網路中的資源,與您的虛擬私人雲端網路對等互連,但不與 Datastream 虛擬私有雲網路對等互連。(這是因為虛擬私有雲網路對等互連不提供傳遞路徑)。
如要建立 Datastream 與僅可透過虛擬私有雲網路存取的資源之間的連線,您可以在虛擬私有雲網路中使用網路位址轉譯 (NAT) VM。當 Datastream 需要連線至 Cloud SQL 執行個體時,NAT VM 的常見用途就是用於連線。
本頁面說明 NAT VM 設定範例,讓 Datastream 私下連線至 Cloud SQL 執行個體。
虛擬私有雲對等互連的必要條件
您必須先執行下列步驟,讓 Datastream 與專案建立 VPC 對等互連連線,才能建立私人連線設定:
- 具備可與 Datastream 私人網路建立對等互連的虛擬私有雲網路,且符合「虛擬私有雲網路對等互連」頁面所述的規定。如要進一步瞭解如何建立這類網路,請參閱「使用虛擬私有雲端網路對等互連」。
- 找出虛擬私有雲網路中的可用 IP 範圍 (CIDR 區塊為 /29)。這個 IP 範圍不能是已存在的子網路、私人服務存取預先分配的 IP 範圍,或包含 IP 範圍的任何路徑 (除了預設的 0.0.0.0 路徑)。Datastream 會使用這個 IP 範圍建立子網路,以便與來源資料庫通訊。下表說明有效的 IP 範圍。
範圍 | 說明 |
---|---|
10.0.0.0/8 172.16.0.0/12 192.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。
- VPC_PROJECT:VPC 網路的專案。
- 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
。
在主專案中:
將
compute.networkAdmin
身分與存取權管理 (IAM) 角色權限授予 Datastream 服務帳戶。只有在建立 VPC 對等互連時,才需要這個角色。建立對等連線後,您就不需要這個角色。如果貴機構不允許授予權限,請建立自訂角色,並加入下列最低權限,以便建立及刪除私人連線資源:
如要進一步瞭解自訂角色,請參閱「建立及管理自訂角色」。
設定 NAT VM
找出 Datastream 需要連線的 Cloud SQL 執行個體 IP 位址。
找出虛擬私有雲網路。這是透過虛擬私有雲網路對等互連連線至 Datastream 虛擬私有雲網路的 VPC 網路。
如果您尚未在 Datastream 中建立私人連線設定,這會建立 VPC 網路對等互連連線,連結您的 VPC 網路和 Datastream VPC 網路。請記下 Datastream 私人連線設定使用的 IP 位址範圍。
請選擇要用於在下一個步驟中建立的 NAT VM 的機器類型。Google Cloud 會根據 VM 執行個體的機器類型,針對在 VPC 網路中透過下一個躍點路由的封包,強制執行每個執行個體的最大傳出頻寬限制。詳情請參閱「虛擬私人雲端網路中可路由的目的地出站連線」和「每個執行個體的最大出站頻寬」。
在虛擬私有雲網路中建立 NAT VM。如果您的虛擬私有雲網路是共用虛擬私有雲網路,只要 NAT VM 的網路介面位於共用虛擬私有雲網路中,您就可以在主專案或任何服務專案中建立 NAT VM。
- 為盡量縮短網路往返時間,請在與 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 # 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
建立輸入允許防火牆規則 (或全域網路防火牆政策、區域性網路防火牆政策或分層防火牆政策中的規則),且具備下列特性:
- 方向:ingress
- 動作:允許
- 目標參數:至少是 NAT VM
- 來源參數:Datastream 私人連線設定使用的 IP 位址範圍
- 通訊協定:TCP
- Port:至少須包含 DATABASE_PORT
默示允許輸出防火牆規則可讓 NAT VM 將封包傳送到任何目的地。如果您的 VPC 網路使用輸出拒絕防火牆規則,您可能需要建立輸出允許防火牆規則,允許 NAT VM 將封包傳送至 Cloud SQL 執行個體。如果需要設定外送允許規則,請使用下列參數:
- 方向:輸出
- 動作:允許
- 目標參數:至少是 NAT VM
- 目的地參數:Cloud SQL 執行個體 IP 位址
- 通訊協定:TCP
- Port:至少須包含 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 位址。