適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的私人存取網路 (虛擬網路整合)
適用範圍:適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器
本文說明適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的連線和網路概念。
當您建立適用於 PostgreSQL 的 Azure 資料庫彈性伺服器時,必須選擇下列其中一個網路選項:
- 私人存取 (虛擬網路整合)
- 公用存取 (允許的 IP 位址) 和私人端點
此文件描述 [私人存取 (虛擬網路整合)] 網路選項。
私人存取 (虛擬網路整合)
您可以使用 [虛擬網路插入] 將適用於 PostgreSQL 的 Azure 資料庫彈性伺服器部署至您的 [Azure 虛擬網路]。 Azure 虛擬網路提供私人且安全的網路通訊。 這可讓虛擬網路中的資源透過在此網路上所指派的私人 IP 位址通訊。
如果您想使用下列功能,請選擇此網路選項:
- 使用私人 IP 位址,從相同虛擬網路中的 Azure 資源連線到您的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器。
- 使用 VPN 或 Azure ExpressRoute 從非 Azure 資源連線到您的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器。
- 請確定適用於 PostgreSQL 的 Azure 資料庫彈性伺服器沒有可以透過網際網路存取的公用端點。
在上圖中:
- 適用於 PostgreSQL 的 Azure 資料庫彈性伺服器已插入到 VNet-1 虛擬網路的子網路 10.0.1.0/24 中。
- 部署在相同虛擬網路內不同子網路上的應用程式,可以直接存取適用於 PostgreSQL 的 Azure 資料庫彈性伺服器。
- 部署在不同的虛擬網路 (VNet-2) 上的應用程式,無法直接存取適用於 PostgreSQL 的 Azure 資料庫彈性伺服器。 您必須先執行私人 DNS 區域的虛擬網路對等互連,才能讓應用程式存取彈性伺服器。
虛擬網路概念
Azure 虛擬網路包含已設定供您使用的私人 IP 位址空間。 您的虛擬網路必須位於與適用於 PostgreSQL 的 Azure 資料庫彈性伺服器相同的 Azure 區域中。 若要深入了解虛擬網路,請參閱 Azure 虛擬網路概觀。
以下是在使用虛擬網路時需要熟悉的一些概念,其中資源透過適用於 PostgreSQL 的 Azure 資料庫彈性伺服器整合至虛擬網路中:
委派的子網路:虛擬網路包含子網路。 子網路可讓您將虛擬網路分割成較小的位址空間。 Azure 資源會部署到虛擬網路內的特定子網路。
在虛擬網路整合的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器必須位於委派的子網路中。 也就是說,只有適用於 PostgreSQL 的 Azure 資料庫彈性伺服器可以使用該子網路。 委派的子網路中不可以有其他 Azure 資源類型。 您可以將子網路的委派屬性指派為
Microsoft.DBforPostgreSQL/flexibleServers
來委派子網路。您可以指定的最小 CIDR 範圍是 /28,此範圍可提供 16 個 IP 位址。 任何網路或子網路中的第一個和最後一個位址都無法指派給任何個別主機。 Azure 會保留五個 IP 供 Azure 網路內部使用,其中包括所述的兩個不能指派給主機的 IP。 這會針對 /28 CIDR 範圍保留 11 個可用 IP 位址。 具有高可用性功能的單一適用於 PostgreSQL 的 Azure 資料庫彈性伺服器會使用四個位址。
針對複寫和 Microsoft Entra 連線,確定路由表不會影響流量。 常見的模式是,透過 Azure 防火牆 或自訂內部部署網路篩選設備來路由所有輸出的流量。
如果子網路具有與將所有流量路由到虛擬設備的規則相關聯的路由表:
- 新增具有目的地服務標籤
AzureActiveDirectory
和下一個躍點Internet
的規則。 - 新增目的地 IP 範圍與適用於 PostgreSQL 的 Azure 資料庫彈性伺服器子網路範圍相同且下一個躍點
Virtual Network
的規則。
重要
AzureFirewallSubnet
、AzureFirewallManagementSubnet
、AzureBastionSubnet
及GatewaySubnet
名稱會保留在 Azure 內。 請勿使用其中任何一個做為子網路名稱。 此外,虛擬網路不應該有重疊的位址空間來建立跨區域複本。- 新增具有目的地服務標籤
網路安全性群組 (NSG)︰NSG 中的安全性規則能讓您篩選可在虛擬網路子網路及網路介面中流入和流出的網路流量類型。 如需詳細資訊,請參閱 NSG 概觀。
應用程式安全性群組 (ASG) 可針對一般網路使用 NSG 輕鬆控制第 4 層安全性。 您可快速地:
- 將虛擬機器加入 ASG,或從 ASG 移除虛擬機器。
- 將規則動態地套用至這些虛擬機器,或是移除虛擬機器中的規則。
如需詳細資訊,請參閱 ASG 概觀。
在 NSG 中,如果 ASG 是適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的其中一項規則,我們目前並不支援。 我們目前建議在 NSG 中使用以 IP 為主的來源或目的地篩選條件。
適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的高可用性和其他功能,必須能夠在 Azure 虛擬網路子網路 (已部署適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器) 中的目的地連接埠 5432 傳送/接收流量,並且傳送至 Azure 儲存體以封存記錄。 如果您建立 NSG,以在子網路內部署的適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器執行個體中拒絕傳送和接收流量,請務必允許流量傳送至子網路內的目的地連接埠 5432,以及傳送至儲存體並使用服務標籤儲存體做為目的地。
您可以透過將 Azure 區域新增至
us-east.storage
等標籤來進一步篩選此例外狀況規則。 此外,如果您選擇使用 Microsoft Entra 驗證對適用於 PostgreSQL 的 Azure 資料庫彈性伺服器的登入進行驗證,請使用 Microsoft Entra 服務標籤允許到 Microsoft Entra ID 的輸出流量。跨 Azure 區域設定讀取複本時,適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器需要能夠在主要和複本的目的地連接埠 5432 傳送或接收流量,以及在主要和複本伺服器的主要和複本區域中將流量傳送至 Azure 儲存體。 儲存體所需的目的地 TCP 連接埠是 443。
私人 DNS 區域整合︰Azure 私人 DNS 區域整合可讓您解析目前虛擬網路內的私人 DNS,或任何連結私人 DNS 區域的區域對等互連虛擬網路。
使用私人 DNS 區域
Azure 私人 DNS 會為虛擬網路提供安全可靠的 DNS 服務。 Azure 私人 DNS 可管理及解析虛擬網路的網域名稱,而無需設定自訂的 DNS 解決方案。
透過 Azure 虛擬網路使用私人網路存取時,需要強制提供私人 DNS 區域資訊,以便能夠進行 DNS 解析。 對於使用私人網路存取建立新的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器,在設定具有私人存取的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器時需要使用私人 DNS 區域。
重要
在不同的訂用帳戶中使用私人 DNS 區域時,該訂用帳戶也必須在 Microsoft.DBforPostgreSQL 資源提供者註冊,否則您的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器將無法完成部署。
若要建立新的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器,請使用私人網路存取權搭配 API、Azure Resource Manager 範本 (ARM 範本) 或 Terraform,建立私人 DNS 區域。 然後在設定具有私人存取權的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器時使用這些區域。 如需詳細資訊,請參閱《Azure 的 REST API 規格》。
如果您使用 Azure 入口網站或 Azure CLI 來建立適用於 PostgreSQL 的 Azure 資料庫彈性伺服器彈性伺服器,則可以提供先前在相同或不同訂用帳戶中建立的私人 DNS 區域名稱,或是在訂用帳戶中自動建立的預設私人 DNS 區域。
如果您使用 Azure API、ARM 範本 或 Terraform,請建立結尾為 .postgres.database.azure.com
的私人 DNS 區域。 在設定具有私人存取的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器時使用這些區域。 例如,使用表單 [name1].[name2].postgres.database.azure.com
或 [name].postgres.database.azure.com
。 如果您選擇使用表單 [name].postgres.database.azure.com
,則該名稱不能是您其中一個適用於 PostgreSQL 的 Azure 資料庫彈性伺服器所用的名稱,否則在佈建時會收到錯誤訊息。 如需詳細資訊,請參閱《私人 DNS 區域概觀》。
使用 Azure 入口網站、API、Azure CLI 或 ARM 範本時,您也可以將建立適用於 PostgreSQL 的 Azure 資料庫彈性伺服器時提供的私人 DNS 區域,變更為另一個存在相同或不同訂用帳戶的私人 DNS 區域。
重要
建立適用於 PostgreSQL 的 Azure 資料庫彈性伺服器時提供的私人 DNS 區域變更為另一個私人 DNS 區域的這項功能,在啟用高可用性功能的伺服器中目前已停用。
在 Azure 中建立私人 DNS 區域之後,您必須將虛擬網路連結至該區域。 連結的虛擬網路中裝載的資源隨後可存取私人 DNS 區域。
重要
我們不再驗證為具有私人網路的適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器建立伺服器時虛擬網路連結是否存在。 透過入口網站建立伺服器時,我們提供客戶選擇透過 Azure 入口網站中的 [將私人 DNS 區域連結到您的虛擬網路] 核取方塊以在建立伺服器時建立連結。
DNS 私人區域能夠復原區域中斷,因為區域資料全域可用。 私人區域中的資源記錄,會自動跨區域複製。 Azure 私人 DNS 是可用性區域基礎、區域備援服務。 如需詳細資訊,請參閱提供可用性區域支援的 Azure 服務。
與自訂 DNS 伺服器整合
如果您使用自訂 DNS 伺服器,則必須使用 DNS 轉寄站來解析適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的 FQDN。 轉寄站 IP 位址應為 168.63.129.16。
自訂 DNS 伺服器應位於虛擬網路內部,或可透過虛擬網路的 DNS 伺服器設定連線。 若要深入了解,請參閱使用自有 DNS 伺服器的名稱解析。
私人 DNS 區域和虛擬網路對等互連
私人 DNS 區域設定和虛擬網路對等互連彼此各自獨立。 如果您想要從另一個虛擬網路中佈建的用戶端連線到適用於 PostgreSQL 的 Azure 資料庫彈性伺服器 (從相同區域或不同的區域),您必須將私人 DNS 區域與虛擬網路連結。 如需詳細資訊,請參閱連結虛擬網路。
注意
只能連結以 postgres.database.azure.com
結尾的私人 DNS 區域名稱。 DNS 區域名稱無法與適用於 PostgreSQL 的 Azure 資料庫彈性伺服器相同。 否則,名稱解析會失敗。
若要將伺服器名稱對應至 DNS 記錄,您可使用 Azure PowerShell 或 Bash 在 Azure Cloud Shell 中執行 nslookup
命令。 在下列範例中,將伺服器的名稱替代為 <server_name> 參數:
nslookup -debug <server_name>.postgres.database.azure.com | grep 'canonical name'
使用中樞和支點私人網路設計
中樞和支點是一種熱門的網路模型,可有效地管理常見通訊或安全性需求。
中樞是一個虛擬網路,可作為管理外部連線的中央位置。 它也裝載了多個工作負載所使用的服務。 中樞會協調所有進出輪輻的通訊。 IT 規則或程序等安全性功能,可以檢查、路由傳送和集中管理流量。 輪輻是裝載工作負載並透過虛擬網路對等互連來連線到中央中樞的虛擬網路。 共用服務裝載在自己的子網路中,以便與輪輻共用。 周邊子網路則充當安全性設備的角色。
輪輻也是 Azure 中用來隔離個別工作負載的虛擬網路。 內部部署總部和 Azure 之間的流量流程透過 Azure ExpressRoute 或網站對網站 VPN 連線,連線到中樞虛擬網路。 從輪輻到中樞的虛擬網路是對等互連的,且允許與內部部署資源進行通訊。 您可以在不同訂用帳戶或資源群組中,實作中樞和每個輪輻。
支點虛擬網路相互連線有三種主要模式:
- 支點彼此直接連線︰在支點虛擬網路之間建立虛擬網路對等互連或 VPN 通道,以提供直接連線,而無需穿越中樞虛擬網路。
- 支點透過網路設備進行通訊:每個支點虛擬網路都具有虛擬 WAN 或中樞虛擬網路的對等互連。 設備在中樞之間路由流量。 本設備可以由 Microsoft 管理 (與虛擬 WAN 一樣),也可以由您管理。
- 已連結至中樞網路並利用使用者定義路由的虛擬網路閘道︰啟用支點之間的通訊。
使用 Azure Virtual Network Manager 建立新的 (以及現有上線的) 中樞和支點虛擬網路拓撲,以集中管理連線和安全性控制。
與不同區域的私人網路用戶端通訊
客戶經常需要連線到不同 Azure 區域的用戶端。 具體而言,這個問題通常歸結為如何連線位於不同區域的兩個虛擬網路 (其中一個具有適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器和另一個應用程式用戶端)。
有多種方式可以達成這種連線,包括:
- 全域虛擬網路對等互連。 這是最常見的方法,因為這是將不同區域的網路連線在一起的最簡單方式。 全域虛擬網路對等互連透過 Azure 骨幹網路在兩個對等互連的虛擬網路之間直接建立連線。 此方法可提供最佳的網路輸送量和最低的連線延遲。 當虛擬網路對等互連時,Azure 也會為您自動處理路由。 這些虛擬網路可與 VPN 閘道上建立的對等互連虛擬網路中的所有資源通訊。
- 網路對網路連線。 虛擬網路間的連線 (網路對網路連線) 本質上是兩個 Azure 位置之間的 VPN。 虛擬網路對虛擬網路連線是在 VPN 閘道上建立的。 相較於全域虛擬網路對等互連,您的流量會另產生兩個流量躍點。 與該方法相比,還存在額外的延遲和較低的頻寬。
- 透過中樞和支點結構中的網路設備進行通訊。 您可以使用網路設備在支點之間轉送流量,而不是直接將支點虛擬網路相互連線。 網路設備提供更多的網路服務,例如深度封包檢查和流量分割或監控,但如果它們的大小不合適,可能會引進延遲和效能瓶頸。
使用私人網路跨 Azure 區域和虛擬網路進行複寫
資料庫複製是將資料從中央或主要伺服器複製到多個稱為複本的伺服器的流程。 主要伺服器接受讀取和寫入作業,而複本伺服器則提供唯讀交易。 主要伺服器和複本共同構成資料庫叢集。 資料庫複製的目標是確保資料的備援、一致性、高可用性和可存取性,特別是在高流量、任務關鍵性應用程式中。
適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器提供兩種複製方法:透過內建唯讀複本功能進行實體複寫 (即串流) 和邏輯複寫。 兩者都是不同使用案例的理想選擇,使用者可以根據最後目標選擇其中之一。
跨 Azure 區域複寫,每個區域都有單獨的虛擬網路,需要跨區域虛擬網路界限的連線,而連線可以透過虛擬網路對等互連或在網路設備的中樞和支點結構中進行提供。
依預設,DNS 名稱解析的範圍為虛擬網路。 虛擬網路 (VNET1) 中的任何用戶端都無法解析另一個虛擬網路 (VNET2) 中的適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器 FQDN。
若要解決此問題,必須確保 VNET1 中的用戶端可以存取適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器私人 DNS 區域。 將虛擬網路連結新增至適用於 PostgreSQL 的 Azure 資料庫彈性伺服器的私人 DNS 區域來達成。
不支援的虛擬網路案例
以下是使用透過虛擬網路整合建立的虛擬網路的一些限制:
- 將適用於 PostgreSQL 的 Azure 資料庫彈性伺服器部署至虛擬網路和子網路之後,就無法將其移至另一個虛擬網路或子網路。 您無法將虛擬網路移至另一個資源群組或訂用帳戶。
- 在子網路中有資源存在之後,就無法增加子網路大小 (位址空間)。
- 依預設,虛擬網路插入的資源無法與私人連結互動。 如果要使用私人連結進行私人網路,請參閱《使用私人連結的適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器網路》。
重要
Azure Resource Manager 支援能夠鎖定資源的安全性控制。 資源鎖定套用至資源,效力及於所有使用者和角色。 資源鎖定有兩個類型︰CanNotDelete
和 ReadOnly
。 這些鎖定類型可以套用至私人 DNS 區域,或個別記錄集。
針對私人 DNS 區域或個別記錄集套用任一種類型的鎖定,都可能干擾適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器服務更新 DNS 記錄的能力。 這還可能在 DNS 的重要作業期間產生問題,例如從主要的高可用性容錯移轉變成次要的高可用性容錯移轉。 出於這些原因,搭配適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器使用高可用性功能時,確認您未使用 DNS 私人區域或記錄鎖定。
主機名稱
無論您選擇哪個網路選項,建議在連線至適用於 PostgreSQL 的 Azure 資料庫彈性伺服器時,一律使用 FQDN 做為主機名稱。 不保證伺服器的 IP 位址會保持靜態。 使用 FQDN 可協助您避免變更連接字串。
hostname = servername.postgres.database.azure.com
是使用 FQDN 做為主機名稱的範例。 請盡量避免使用 hostname = 10.0.0.4
(私人位址) 或 hostname = 40.2.45.67
(公用位址)。