本頁面將探討從已設定的虛擬私有雲 (VPC) 外部,連線至 PostgreSQL 適用的 AlloyDB 叢集的各種方式。本文假設您已建立 AlloyDB 叢集。
關於外部連線
AlloyDB 叢集包含Google Cloud 虛擬私有雲中的多個節點。建立叢集時,您也會在其中一個虛擬私有雲和包含新叢集的 Google 管理虛擬私有雲之間,設定私人服務存取權。透過這個對等互連連線,您可以使用私人 IP 位址存取叢集虛擬私有雲中的資源,就像這些資源是您自己虛擬私有雲的一部分一樣。
在某些情況下,應用程式必須從這個已連線的虛擬私有雲外部連線至叢集:
您的應用程式在 Google Cloud 生態系統中的其他位置執行,也就是透過私人服務存取權連線至叢集的虛擬私有雲外部。
您的應用程式在 Google 網路以外的 VPC 上執行。
您的應用程式「在本機」執行,也就是在公用網路上某處的電腦上執行。
在上述所有情況下,您都必須設定額外服務,才能啟用這類外部連線至 AlloyDB 叢集。
外部連線解決方案摘要
我們建議您採用兩種一般解決方案建立外部連線,視需求而定:
如要進行專案開發或原型設計,或是建立成本相對較低的正式環境,請在虛擬私有雲中設定中介虛擬機器 (VM),也就是堡壘主機。您可以使用各種方法,將這個中介 VM 做為外部應用程式環境與 AlloyDB 叢集之間的連線安全通道。
對於需要高可用性的實際工作環境,請考慮透過 Cloud VPN 或 Cloud Interconnect,在 VPC 和應用程式之間建立永久連線。
接下來的幾節會詳細說明這些外部連線解決方案。
透過中繼 VM 連線
如要使用開放原始碼工具和最少的額外資源,從虛擬私有雲外部連線至 AlloyDB 叢集,請在該虛擬私有雲內設定的中介 VM 上執行 Proxy 服務。您可以為此目的設定新的 VM,也可以使用 AlloyDB 叢集 VPC 中已執行的 VM。
由於是自行管理的解決方案,使用中介 VM 的成本通常比使用 Network Connectivity 產品更低,設定時間也更快。但也有缺點:連線的可用性、安全性和資料輸送量都會取決於中介 VM,您必須維護該 VM,才能做為專案的一部分。
透過 IAP 連線
使用 Identity-Aware Proxy (IAP),您就能安全地連線至叢集,不必公開中介 VM 的公開 IP 位址。您可以使用防火牆規則和 Identity and Access Management (IAM) 限制透過這條路徑的存取權。因此,IAP 是開發和原型設計等非正式環境用途的理想解決方案。
如要設定叢集的 IAP 存取權,請按照下列步驟操作:
在外接式用戶端上安裝 Google Cloud CLI。
-
定義新防火牆規則時,請允許通訊埠
22
(SSH) 的輸入 TCP 流量。如果您使用專案的預設網路,並啟用預先填入的default-allow-ssh
規則,則不必定義額外規則。 使用 透過 IAP 的 SSH,在外部用戶端和中介 VM 之間設定通訊埠轉送。
gcloud compute ssh my-vm \ --tunnel-through-iap \ --zone=ZONE_ID \ --ssh-flag="-L PORT_NUMBER:ALLOYDB_IP_ADDRESS:5432"
更改下列內容:
ZONE_ID
:叢集所在區域的 ID,例如us-central1-a
。ALLOYDB_IP_ADDRESS
:您要連線的 AlloyDB 執行個體 IP 位址。PORT_NUMBER
:VM 的通訊埠號碼。
使用外部用戶端的
psql
測試連線,並連線至您在上一個步驟中指定的本機通訊埠。舉例來說,如要以postgres
使用者角色連線至通訊埠5432
:psql -h localhost -p 5432 -U USERNAME
更改下列內容:
USERNAME
:要連線至執行個體的 PostgreSQL 使用者,例如預設使用者postgres
。
透過 SOCKS Proxy 連線
在中介 VM 上執行 SOCKS 服務,可提供彈性且可擴充的 AlloyDB 叢集連線,並透過 AlloyDB Auth Proxy 提供端對端加密。只要設定得當,就能用於正式環境工作負載。
這項解決方案包含下列步驟:
在中介 VM 上安裝、設定及執行 SOCKS 伺服器。舉例來說,Dante 就是常見的開放原始碼解決方案。
設定伺服器,將外部和內部連線繫結至 VM 的
ens4
網路介面。指定內部連線要使用的通訊埠。設定 VPC 的防火牆,允許來自適當 IP 位址或範圍的 TCP 流量傳輸至 SOCKS 伺服器設定的通訊埠。
在外部用戶端上安裝 AlloyDB Auth Proxy。
在外部用戶端上執行 AlloyDB Auth Proxy,並將
ALL_PROXY
環境變數設為中介 VM 的 IP 位址,然後指定 SOCKS 伺服器使用的通訊埠。這個範例會設定 AlloyDB Auth Proxy,透過在
198.51.100.1
執行且連接埠為1080
的 SOCKS 伺服器,連線至my-main-instance
的資料庫:ALL_PROXY=socks5://198.51.100.1:1080 ./alloydb-auth-proxy \ /projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
如果是從對等互連的虛擬私有雲連線,可以使用中介 VM 的內部 IP 位址;否則請使用外部 IP 位址。
使用外部用戶端測試連線,並連線至 AlloyDB Auth Proxy 監聽的通訊埠。
psql
舉例來說,如要以postgres
使用者角色連線至通訊埠5432
:psql -h IP_ADDRESS -p PORT_NUMBER -U USERNAME
透過 PostgreSQL 集中器連線
如要在中介 VM 上安裝及執行 AlloyDB Auth Proxy,而非外部用戶端,您可以將其與通訊協定感知 Proxy (也稱為集區器) 配對,啟用與該 Proxy 的安全連線。PostgreSQL 的熱門開放原始碼集區包括 Pgpool-II 和 PgBouncer。
在本解決方案中,您會在中間 VM 上執行 AlloyDB Auth Proxy 和集區器。您的用戶端或應用程式隨後就能透過 SSL 直接安全連線至集區器,不必執行任何額外服務。匯集器會透過 Auth Proxy,將 PostgreSQL 查詢傳遞至 AlloyDB 叢集。
由於 AlloyDB 叢集中的每個執行個體都有個別的內部 IP 位址,因此每個 Proxy 服務只能與一個特定執行個體通訊:主要執行個體、待命執行個體或讀取集區。因此,您需要為叢集中的每個執行個體,執行具有適當設定 SSL 憑證的獨立集區服務。
透過 Cloud VPN 或 Cloud Interconnect 連線
如要進行需要高可用性 (HA) 的實際工作環境作業,建議使用 Google Cloud 網路連線產品:Cloud VPN 或 Cloud Interconnect,具體取決於外部服務的需求和網路拓撲。然後設定 Cloud Router,通告適當的路徑。
雖然使用 Network Connectivity 產品的程序比設定中繼 VM 更複雜,但這種做法可將正常運作時間和可用性的負擔從您轉移至 Google。特別是高可用性 VPN 提供 99.99% 的服務水準協議,因此適合用於生產環境。
此外,網路連線解決方案還能免除維護獨立安全 VM 的需求,避免這種做法固有的單點故障風險。
如要進一步瞭解這些解決方案,請參閱「選擇網路連線產品」。
後續步驟
- 進一步瞭解 VPC 中的私人服務存取權和內部部署連線。 Google Cloud