適用於 PostgreSQL 的 Azure 資料庫 的網路概觀 - 具有私人存取的彈性伺服器 (VNET 整合)

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

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

當您建立 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例時,您必須選擇下列其中一個網路選項:私人存取(VNet 整合)公用存取(允許的IP 位址)和私人端點。 本文件將說明 私人存取(VNet 整合) 網路選項。

私人存取 (VNet 整合)

您可以使用 VNET 插入,將 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例部署到 Azure 虛擬網路 (VNet)。 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 資料庫 彈性伺服器實例整合至虛擬網路的虛擬網路時,以下是一些熟悉的概念:

  • 委派的子網。 虛擬網路包含子網(subnetworks)。 子網可讓您將虛擬網路分割成較小的位址空間。 Azure 資源會部署到虛擬網路內的特定子網。

    您的 VNET 整合 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例必須位於委派子網中。 也就是說,只有 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例可以使用該子網。 委派的子網路中不可以有其他 Azure 資源類型。 您可以將子網的委派屬性指派為 Microsoft.DBforPostgreSQL/flexibleServers來委派子網。 您可以為子網指定的最小 CIDR 範圍是 /28,可提供 16 個 IP 位址,但是任何網路或子網中的第一個和最後一個位址都無法指派給任何個別主機。 Azure 會保留五個 IP,以便由 Azure 網路在內部使用,其中包括兩個無法指派給主機的 IP,如上所述。 這可讓您有 11 個 /28 CIDR 範圍的可用 IP 位址,而具有高可用性功能的單一 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例會利用四個位址。 針對複寫和 Microsoft Entra 連線,請確定路由表不會影響流量。常見的模式是透過 Azure 防火牆 或自定義內部部署網路篩選設備路由傳送所有輸出流量。 如果子網有與規則相關聯的路由表,將所有流量路由傳送至虛擬設備:

    • 使用目的地服務標籤 “AzureActiveDirectory” 和下一個躍點 “Internet” 新增規則
    • 新增目的地 IP 範圍與 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器子網範圍和下一個躍點 「虛擬網絡」相同的規則

    重要

    AzureFirewallManagementSubnetAzureBastionSubnetGatewaySubnet 的名稱AzureFirewallSubnet會保留於 Azure 內。 請勿使用上述任一項目作為子網名稱。

  • 網路安全群組 (NSG) 。 NSG 中的安全性規則可讓您篩選可流入和流出虛擬網路子網和網路介面的網路流量類型。 如需詳細資訊,請參閱 NSG 概觀

    應用程式安全組 (ASG) 可讓您輕鬆地使用 NSG 進行一般網路控制第 4 層安全性。 您可快速地:

    • 將虛擬機加入 ASG,或從 ASG 移除虛擬機。
    • 動態將規則套用至這些虛擬機,或從這些虛擬機移除規則。

    如需詳細資訊,請參閱 ASG 概觀

    目前,我們不支援 ASG 是具有 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器之規則的一部分的 NSG。 我們目前建議在 NSG 中使用 以 IP 為基礎的來源或目的地篩選

    重要

    適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器的高可用性和其他功能需要能夠將流量傳送/接收至目的地埠 5432 的 Azure 虛擬網路子網內,其中 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器部署,以及用於記錄封存的 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 記憶體

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

使用私人 DNS 區域

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

搭配 Azure 虛擬網路使用專用網存取時,必須提供私人 DNS 區域資訊,才能進行 DNS 解析。 若要使用專用網存取建立新的 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例,則必須使用私人 DNS 區域,同時設定具有私人存取權的彈性伺服器實例 適用於 PostgreSQL 的 Azure 資料庫。 針對使用 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.comDNS 區域。 在設定 適用於 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 區域。

重要

目前已針對已啟用高可用性功能的伺服器,將私人 DNS 區域從您在建立 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例時所提供的區域變更為另一個私人 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 虛擬網絡 Manager (AVNM) 建立新的中樞和輪輻虛擬網路拓撲,以集中管理連線和安全性控制。

在不同區域中與專用網客戶端通訊

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

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

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

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

適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器提供兩種復寫方法:實體(亦即串流)透過內建的讀取複本功能和邏輯複寫。 這兩者都非常適合不同的使用案例,而且使用者可能會根據最終目標來選擇一個。

跨 Azure 區域複寫,每個區域中都有個別的虛擬網路(VNET),需要跨區域虛擬網路界限的連線能力,這些界限可以透過虛擬網路對等互連或透過網路設備在中樞和輪輻架構提供。

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

若要解決此問題,您必須確定 VNET1 中的用戶端可以存取 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器 私用 DNS 區域。 將虛擬網路連結新增至 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例的 私用 DNS 區域,即可達成此目的。

不支援的虛擬網路案例

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

  • 將 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例部署到虛擬網路和子網之後,您無法將它移至另一個虛擬網路或子網。 您無法將虛擬網路移至另一個資源群組或訂用帳戶。
  • 子網大小(位址空間)無法在子網中存在資源之後增加。
  • VNET 插入的資源預設無法與 Private Link 互動。 如果您想要使用 Private Link 進行專用網,請參閱使用 Private Link 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器網路

重要

Azure Resource Manager 支援將資源鎖定為安全性控制的能力。 資源鎖定套用至資源,效力及於所有使用者和角色。 有兩種資源鎖定︰CanNotDeleteReadOnly。 這些鎖定類型可以套用至私人 DNS 區域,或個別記錄集。 針對 私用 DNS 區域或個別記錄集套用類型的鎖定,可能會干擾 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器更新 DNS 記錄的能力,並在 DNS 上的重要作業期間造成問題,例如從主要故障轉移到次要的高可用性故障轉移。 基於這些原因,請確定您在搭配 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器使用高可用性功能時,不會使用 DNS 私人區域或記錄鎖定。

主機名稱

無論您選擇的網路選項為何,建議您在連線到 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例時,一律使用 FQDN 作為主機名。 伺服器的IP位址不保證保持靜態。 使用 FQDN 可協助您避免變更 連接字串。

使用 FQDN 做為主機名稱的範例為 hostname = servername.postgres.database.azure.com。 可能的話,請避免使用 hostname = 10.0.0.4 (私人位址) 或 hostname = 40.2.45.67 (公用位址)。

下一步