共用方式為


適用於 PostgreSQL 的 Azure 資料庫的私人存取網路 (虛擬網路整合) - 彈性伺服器

適用範圍:適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器

本文說明適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的連線和網路概念。

當您建立適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器執行個體 時,必須選擇下列其中一個網路選項:[私人存取 (VNet 整合)] 或 [公用存取 (允許的 IP 位址) 和私人端點]。 此文件描述 [私人存取 (VNet 整合)] 網路選項。

私人存取 (虛擬網路整合)

您可以使用 VNET 插入將適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體部署到您的 Azure 虛擬網路 (虛擬網路)。 Azure 虛擬網路提供私人且安全的網路通訊。 這可讓虛擬網路中的資源透過在此網路上所指派的私人 IP 位址通訊。

如果您想使用下列功能,請選擇此網路選項:

  • 使用私人 IP 位址,從相同虛擬網路中的 Azure 資源連線到您的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體。
  • 使用 VPN 或 Azure ExpressRoute 從非 Azure 資源連線到您的適用於 PostgreSQL 的 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」和下一個躍點「網際網路」的規則
    • 新增目的地 IP 範圍與適用於 PostgreSQL 的 Azure 資料庫彈性伺服器子網路範圍相同且下一個躍點「虛擬網路」的規則

    重要

    AzureFirewallSubnetAzureFirewallManagementSubnetAzureBastionSubnetGatewaySubnet 名稱會保留在 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 儲存體做為目的地的 Azure 儲存體。 您可以透過將 Azure 區域新增至 us-east.storage 等標籤來進一步篩選此例外狀況規則。 此外,如果您選擇使用 Microsoft Entra 驗證對適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體的登入進行驗證,請使用 Microsoft Entra 服務標籤允許到 Microsoft Entra ID 的輸出流量。 跨 Azure 區域設定讀取複本時,適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器需要可將流量傳送/接收至主要和複本目的地連接埠 5432,以及從主要和複本伺服器至主要和複本區域中之 Azure 儲存體的能力。 Azure 儲存體所需的目的地 TCP 連接埠是 443。

  • 私人 DNS 區域整合。 Azure 私人 DNS 區域整合可讓您解析目前虛擬網路內的私人 DNS,或任何連結私人 DNS 區域的區域對等互連虛擬網路。

使用私人 DNS 區域

Azure 私人 DNS 會為虛擬網路提供安全可靠的 DNS 服務。 Azure 私人 DNS 可管理及解析虛擬網路的網域名稱,而無需設定自訂的 DNS 解決方案。

當透過 Azure 虛擬網路使用私人網路存取時,需要強制提供私人 DNS 區域資訊,以便能夠進行 DNS 解析。 對於使用私人網路存取建立新的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體,在設定具有私人存取的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體時需要使用私人 DNS 區域。 對於搭配 API、ARM 或 Terraform 使用私人網路存取所建立的全新適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體,請建立私人 DNS 區域,並在設定具有私人存取的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器彈性伺服器執行個體時使用這些區域。 如需更多資訊,請參閱 Microsoft Azure 的 REST API 規格。 如果您使用 Azure 入口網站Azure CLI 來建立適用於 PostgreSQL 的 Azure 資料庫彈性伺服器彈性伺服器執行個體,則可以提供先前在相同或不同訂用帳戶中建立的私人 DNS 區域名稱,或是在訂用帳戶中自動建立的預設私人 DNS 區域。

如果您使用 Azure API、Azure Resource Manager 範本 (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、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 之間的流量流程透過 ExpressRoute 或網站對網站 VPN 連線,連線到中樞虛擬網路。 從輪輻到中樞的虛擬網路是對等互連的,且允許與內部部署資源進行通訊。 您可以在不同訂用帳戶或資源群組中,實作中樞和每個輪輻。

支點虛擬網路相互連線有三種主要模式:

  • 支點彼此直接連線。 在支點虛擬網路之間建立虛擬網路對等互連或 VPN 通道,以提供直接連線,而無需穿越中樞虛擬網路。
  • 分支透過網路設備進行通訊。 每個分支虛擬網路都與虛擬 WAN 或中樞虛擬網路對等互連。 設備在中樞之間路由流量。 本設備可以由 Microsoft 管理 (與虛擬 WAN 一樣),也可以由您管理。
  • 已連結到中樞網路並利用使用者定義路由 (UDR) 的虛擬網路閘道,以啟用分支之間的通訊。

圖表顯示透過 Express Hub 進行混合連線的基本中樞和支點結構。

使用 Azure Virtual Network Manager (AVNM) 建立新的 (以及現有上線的) 中樞和支點虛擬網路拓撲,以集中管理連線和安全性控制。

與不同區域的私人網路用戶端通訊

客戶經常需要連線到不同 Azure 區域的用戶端。 具體而言,這個問題通常歸結為如何連線位於不同區域的兩個 VNET (其中一個具有適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器和另一個應用程式用戶端)。 有多種方式可以達成這種連線,其中一些是:

  • 全域 VNET 對等互連。 最常見的方法,因為這是將不同區域的網路連線在一起的最簡單方式。 全域虛擬網路對等互連透過 Azure 骨幹網路在兩個對等互連的 VNET 之間直接建立連線。 使用此方法可以提供最佳的網路輸送量和最低的連線延遲。 當 VNET 對等互連時,Azure 也會自動為您處理路由,這些 VNET 可以與在 VPN 閘道上建立的對等互連虛擬網路中的所有資源進行通訊。
  • VNET 對 VNET 連線。 虛擬網路到虛擬網路的連線本質上是兩個不同 Azure 位置之間的 VPN。 虛擬網路到虛擬網路的連線是在 VPN 閘道上建立的。 這表示與全域虛擬網路對等互連相比,您的流量會產生兩個額外的流量躍點。 與該方法相比,還存在額外的延遲和較低的頻寬。
  • 透過中樞和支點結構中的網路設備進行通訊**。 您可以使用網路設備在支點之間轉送流量,而不是直接將支點虛擬網路相互連線。 網路設備提供更多的網路服務,例如深度封包檢查和流量分割或監控,但如果它們的大小不合適,可能會引進延遲和效能瓶頸。

使用私人網路跨 Azure 區域和虛擬網路進行複寫

資料庫複製是將資料從中央或主要伺服器複製到多個稱為複本的伺服器的流程。 主要伺服器接受讀取和寫入作業,而複本伺服器則提供唯讀交易。 主要伺服器和複本共同構成資料庫叢集。 資料庫複製的目標是確保資料的備援、一致性、高可用性和可存取性,特別是在高流量、任務關鍵性應用程式中。

適用於 PostgreSQL 的 Azure 資料庫彈性伺服器提供兩種複製方法:透過內建唯讀複本功能進行實體複寫 (即串流) 和邏輯複寫。 兩者都是不同使用案例的理想選擇,使用者可以根據最後目標選擇其中之一。

跨 Azure 區域複寫,每個區域都有單獨的虛擬網路 (VNET)需要跨區域虛擬網路界限的連線,而連線可以透過虛擬網路對等互連或在網路設備的中樞和支點結構中進行提供。

依預設,DNS 名稱解析範圍為虛擬網路。 這表示一個虛擬網路 (VNET1) 中的任何用戶端都無法解析另一個虛擬網路 (VNET2) 中的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器 FQDN。

若要解決此問題,必須確保 VNET1 中的用戶端可以存取適用於 PostgreSQL 的 Azure 資料庫彈性伺服器私人 DNS 區域。 這可以透過將虛擬網路連結新增至適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體的私人 DNS 區域來達成。

不支援的虛擬網路案例

以下是使用透過虛擬網路整合建立的虛擬網路的一些限制:

  • 將適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體部署至虛擬網路和子網路之後,就無法將其移至另一個虛擬網路或子網路。 您無法將虛擬網路移至另一個資源群組或訂用帳戶。
  • 在子網路中有資源存在之後,就無法增加子網路大小 (位址空間)。
  • 依預設,虛擬網路插入的資源無法與私人連結互動。 如果要使用私人連結進行私人網路,請參閱使用私人連結的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器網路

重要

Azure Resource Manager 支援能夠鎖定資源的安全性控制。 資源鎖定套用至資源,效力及於所有使用者和角色。 有兩種資源鎖定︰CanNotDeleteReadOnly。 這些鎖定類型可以套用至私人 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 (公用位址)。