本頁說明如何從已設定的虛擬私有雲 (VPC) 外部連線至 Cloud SQL 執行個體。
事前準備
開始之前,請務必完成下列動作:
- 建立 Cloud SQL 執行個體。
- 將執行個體設定為使用內部 IP 位址,而非外部 IP 位址。
關於外部連線
Cloud SQL 執行個體由 Google 代管虛擬私有雲中的多個節點組成。建立執行個體時,您也會在其中一個 VPC 與包含新執行個體的 Google 管理 VPC 之間,設定私人服務存取權或 Private Service Connect。透過對等互連連線,您可以使用內部 IP 位址存取執行個體虛擬私有雲中的資源,就像這些資源是您虛擬私有雲的一部分。
在下列情況下,請從已連線的虛擬私有雲外部連線至執行個體:
您的應用程式在 VPC 外部執行,而您是透過私人服務存取權或 Private Service Connect 連線至執行個體。
您的應用程式在 Google 網路以外的 VPC 上執行。
您的應用程式在公用網路上某處的機器上執行。
在上述所有情況中,您都必須設定額外服務,才能啟用這類外部連線至 Cloud SQL 執行個體。
建議您根據需求採用下列解決方案,建立外部連線:
如要進行專案開發或原型設計,或是建立成本相對較低的生產環境,請在虛擬私有雲中設定中介虛擬機器 (VM),也就是堡壘。您可以透過各種方法,以這個中介 VM 為基礎,將其轉換為外部應用程式環境與 Cloud SQL 執行個體之間的連線。
對於需要高可用性的實際工作環境,請考慮透過 Cloud VPN 或 Cloud Interconnect,在 VPC 和應用程式之間建立永久連線。
以下各節將說明這些解決方案。
透過中繼 VM 連線
如要使用開放原始碼工具和最少的額外資源,從虛擬私有雲外部連線至 Cloud SQL 執行個體,請在該虛擬私有雲內設定的中繼 VM 上執行 Proxy 服務。您可以設定新的 VM,或使用 Cloud SQL 執行個體虛擬私有雲中已執行的 VM。
由於是自行管理的解決方案,使用中介 VM 的成本通常比使用 Network Connectivity 產品更低,設定時間也更快。但也有缺點:連線的可用性、安全性和資料輸送量都會取決於中介 VM,您必須維護該 VM,才能做為專案的一部分。
透過 IAP 連線
使用 Identity-Aware Proxy (IAP),您可以安全地連線至 Cloud SQL 執行個體,不必公開中介 VM 的內部 IP 位址。您可以使用防火牆規則和 Identity and Access Management (IAM) 限制透過這條路徑的存取權。因此,IAP 是開發和原型設計等非正式環境用途的理想解決方案。
在這張圖中,IAP 是外部用戶端 (位於虛擬私有雲外部) 與中介 VM (位於虛擬私有雲內部) 之間的閘道。用戶端會建立連至 IAP 的 SSH 通道。Cloud SQL 驗證 Proxy 會加密 VM 與 Cloud SQL 執行個體之間的流量。透過這兩個 Proxy,即可在用戶端和執行個體之間建立通訊。
如要設定執行個體的 IAP 存取權,請按照下列步驟操作:
在外部用戶端安裝 gcloud CLI。
在中間 VM 上,下載並安裝 Cloud SQL 驗證 Proxy。
在中間 VM 上啟動 Cloud SQL 驗證 Proxy。
由於 VM 是以內部 IP 位址設定,因此啟動 Cloud SQL 驗證 Proxy 時,必須提供
--private-ip
選項。在 Google Cloud 專案中啟用 IAP TCP 轉送功能。
定義新防火牆規則時,請允許通訊埠
22
(SSH) 的輸入 TCP 流量。如果您使用專案的預設網路,並啟用預先填入的default-allow-ssh
規則,則不必定義額外規則。使用 透過 IAP 的 SSH,設定外部用戶端與中介 VM 之間的通訊埠轉送:
gcloud compute ssh VM_NAME \ --tunnel-through-iap \ --zone=ZONE_NAME \ --ssh-flag="-L 5432:localhost:5432"
請將下列項目改為對應的值:
- VM_NAME::VM 的名稱
- ZONE_NAME: 與 VM 相關聯的區域名稱
在外部用戶端上,使用
psql
測試連線。
透過 SOCKS Proxy 連線
在中介 VM 上執行 SOCKS 服務,可提供彈性且可擴充的 Cloud SQL 執行個體連線,並透過 Cloud SQL 驗證 Proxy 提供端對端加密。
如要進一步瞭解如何使用 SOCKS Proxy 連線至 Cloud SQL 執行個體,請參閱「使用中繼 Proxy (SOCKS5) 連線」。
透過集區器連線
如要在中介 VM 上安裝及執行 Cloud SQL 驗證 Proxy,而非外部用戶端,您可以將其與通訊協定感知 Proxy (也稱為集區器) 配對,啟用與該 Proxy 的安全連線。PostgreSQL 的熱門開放原始碼集區包括 Pgpool-II 和 PgBouncer。
在本解決方案中,您會在中間 VM 上執行 Cloud SQL 驗證 Proxy 和集區器。您的用戶端或應用程式隨後就能透過 SSL 直接安全連線至集區器,不必執行任何額外服務。集區會負責透過 Cloud SQL 驗證 Proxy,將 PostgreSQL 查詢傳遞至 Cloud SQL 執行個體。
由於每個 Cloud SQL 執行個體都有個別的內部 IP 位址,因此每個 Proxy 服務只能與一個特定執行個體通訊:主要執行個體、待命執行個體或讀取集區。因此,您必須為每個執行個體執行個別的集區服務,並適當設定 SSL 憑證。
透過 Cloud VPN 或 Cloud Interconnect 連線
如要進行需要高可用性 (HA) 的實際工作環境作業,建議使用 Google Cloud 網路連線產品,例如 Cloud VPN 或 Cloud Interconnect,具體取決於外部服務的需求和網路拓撲。然後設定 Cloud Router,通告適當的路徑。
如要進一步瞭解網路連線解決方案,請參閱「選擇網路連線產品」。
後續步驟
- 進一步瞭解私人 IP。
- 進一步瞭解 Google 管理的虛擬私有雲中的私人服務存取權和內部部署連線。
- 進一步瞭解如何使用 Private Service Connect 連線至 Cloud SQL 執行個體。