你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

具有专用访问(VNET 集成)的 Azure Database for PostgreSQL - 灵活服务器的网络概述

适用于:Azure Database for PostgreSQL 灵活服务器

本文介绍 Azure Database for PostgreSQL 灵活服务器的连接和网络概念。

创建 Azure Database for PostgreSQL 灵活服务器实例时,必须选择以下网络选项之一:“专用访问(VNet 集成)”或“公共访问(允许的 IP 地址)和专用终结点”。 本文档将介绍专用访问(VNet 集成)网络选项

专用访问(VNet 集成)

可以使用 VNET 注入将 Azure Database for PostgreSQL 灵活服务器实例部署到 Azure 虚拟网络 (VNet)。 Azure 虚拟网络提供专用的安全网络通信。 虚拟网络中的资源可以通过在此网络中分配的专用 IP 地址进行通信

如果需要以下功能,请选择此网络选项:

  • 使用专用 IP 地址从同一虚拟网络中的 Azure 资源连接到 Azure Database for PostgreSQL 灵活服务器实例。
  • 使用 VPN 或 Azure ExpressRoute 从非 Azure 资源连接到 Azure Database for PostgreSQL 灵活服务器实例。
  • 确保 Azure Database for PostgreSQL 灵活服务器实例没有可以通过 Internet 访问的公共终结点。

显示虚拟网络之间对等互连工作原理的关系图,其中一个虚拟网络包含 Azure Database for PostgreSQL 灵活服务器实例。

在上图中:

  • Azure Databases for PostgreSQL 灵活服务器实例注入到 VNet-1 虚拟网络的子网 10.0.1.0/24 中。
  • 部署在同一虚拟网络中不同子网上的应用程序可以直接访问 Azure Database for PostgreSQL 灵活服务器实例。
  • 部署在不同虚拟网络 (VNet-2) 上的应用程序不能直接访问 Azure Database for PostgreSQL 灵活服务器实例。 必须先执行专用 DNS 区域的虚拟网络对等互连,然后它们才能访问灵活服务器。

虚拟网络概念

虚拟网络包含配置为供你使用的专用 IP 地址空间。 虚拟网络必须处于 Azure Database for PostgreSQL 灵活服务器实例所在的 Azure 区域。 若要了解有关虚拟网络的详细信息,请参阅 Azure 虚拟网络概述

以下是在使用虚拟网络时需要熟悉的一些概念,其中资源通过 Azure Database for PostgreSQL 灵活服务器实例集成到虚拟网络中

  • 委派子网。 一个虚拟网络包含多个子网(子网络)。 可以通过子网将虚拟网络分成较小的地址空间。 Azure 资源被部署到虚拟网络中的特定子网中。

    VNET 集成的 Azure Database for PostgreSQL 灵活服务器实例必须位于委派的子网中。 也就是说,只有 Azure Database for PostgreSQL 灵活服务器实例才能使用该子网。 不能在委派子网中使用其他 Azure 资源类型。 通过将其委派属性分配为 Microsoft.DBforPostgreSQL/flexibleServers 来委派子网。 可以为子网指定的最小 CIDR 范围是 /28,它提供 16 个 IP 地址,但是任何网络或子网中的第一个和最后一个地址不能分配给任何单独的主机。 Azure 保留了五个 IP 供 Azure 网络内部使用,其中包括两个无法分配给主机的 IP,如上所述。 这为 /28 CIDR 范围留下了 11 个可用 IP 地址,而具有高可用性功能的单个 Azure Database for PostgreSQL 灵活服务器实例则使用 4 个地址。 对于复制和 Microsoft Entra 连接,请确保路由表不会影响流量。常见的模式是通过 Azure 防火墙或自定义/本地网络筛选设备路由所有出站流量。 如果子网具有与规则关联的路由表,用于将所有流量路由到虚拟设备:

    • 添加具有目标服务标记“AzureActiveDirectory”和下一个跃点“Internet”的规则
    • 请添加一个目标 IP 范围与 Azure Database for PostgreSQL 灵活服务器子网范围相同且下一个跃点为“虚拟网络”的规则

    重要

    名称 AzureFirewallSubnetAzureFirewallManagementSubnetAzureBastionSubnetGatewaySubnet 都保留在 Azure 中。 请勿将其中任何一个用作子网名称。

  • 网络安全组 (NSG) 。 通过 NSG 中的安全规则,可以筛选可流入和流出虚拟网络子网和网络接口的流量类型。 有关详细信息,请参阅 NSG 概述部分。

    应用程序安全组 (ASG) 通过将 NSG 用于平面网络,能够轻松控制第 4 层安全性。 可以快速执行以下操作:

    • 将虚拟机加入 ASG,或者从 ASG 中删除虚拟机。
    • 动态地将规则应用于这些虚拟机,或者从这些虚拟机中删除规则。

    有关详细信息,请参阅 ASG 概述

    目前,当 ASG 是 Azure Database for PostgreSQL 灵活服务器规则的一部分时,则不支持 NSG。 目前建议在 NSG 中使用基于 IP 的源或目标筛选

    重要

    要使用 Azure Database for PostgreSQL 灵活服务器的高可用性和其他功能,需要能够向部署了 Azure Database for PostgreSQL 灵活服务器的 Azure 虚拟网络子网中的目标端口 5432 发送/接收流量,并能够向 Azure 存储发送流量进行日志存档。 如果创建网络安全组 (NSG) 来拒绝流量流入或流出 Azure Database for PostgreSQL 灵活服务器实例所部署到的子网,请确保允许将流量发送到该子网中的目标端口 5432,并允许通过使用服务标记将 Azure 存储作为目标,将流量发送到 Azure 存储。 可以通过将你的 Azure 区域添加到标签(例如 us-east.storage)进一步筛选此例外规则。 此外,如果选择使用 Microsoft Entra 身份验证来验证到 Azure Database for PostgreSQL 灵活服务器实例的登录,请允许使用 Microsoft Entra 服务标记将出站流量发送到 Microsoft Entra ID。 跨 Azure 区域设置只读副本时,Azure Database for PostgreSQL 灵活服务器需要能够向主服务器和副本服务器的目标端口 5432 发送/接收流量,并能够从主服务器和副本服务器向主区域和副本区域中的 Azure 存储发送/接收流量

  • 专用 DNS 区域集成。 使用 Azure 专用 DNS 区域集成,可以解析当前虚拟网络中或链接专用 DNS 区域的任何区域内对等互连虚拟网络中的专用 DNS。

使用专用 DNS 区域

Azure 专用 DNS 为虚拟网络提供可靠且安全的 DNS 服务。 Azure 专用 DNS 可管理并解析虚拟网络中的域名,使你无需配置自定义 DNS 解决方案。

对 Azure 虚拟网络使用专用网络访问时,必须提供专用 DNS 区域信息才能进行 DNS 解析。 若要创建使用专用网络访问的新 Azure Database for PostgreSQL 灵活服务器实例,需要在为 Azure Database for PostgreSQL 灵活服务器实例配置专用访问时使用专用 DNS 区域。 若要通过 API、ARM 或 Terraform 创建使用专用网络访问的新 Azure Database for PostgreSQL 灵活服务器实例,请创建专用 DNS 区域,并在为 Azure Database for PostgreSQL 灵活服务器实例配置专用访问时使用这些区域。 有关详细信息,请参阅 Microsoft Azure 的 REST API 规范。 如果使用 Azure 门户Azure CLI 创建 Azure Database for PostgreSQL 灵活服务器实例,可以提供以前在相同或不同订阅中创建的专用 DNS 区域名称,否则系统会在订阅中自动创建默认的专用 DNS 区域。

如果使用 Azure API、Azure 资源管理器模板(ARM 模板)或 Terraform,请创建以 .postgres.database.azure.com 结尾的专用 DNS 区域。 在为 Azure Database for PostgreSQL 灵活服务器实例配置专用访问时,请使用这些区域。 例如,使用窗体 [name1].[name2].postgres.database.azure.com[name].postgres.database.azure.com。 如果选择使用 [name].postgres.database.azure.com 形式,则名称不能是其中一个 Azure Databases for PostgreSQL 灵活服务器实例的名称,否则在预配期间将显示错误消息。 有关详细信息,请参阅专用 DNS 区域概述

使用 Azure 门户、API、CLI 或 ARM,还可以将专用 DNS 区域从创建 Azure Database for PostgreSQL 灵活服务器实例时提供的 DNS 区域更改为存在相同或不同订阅的另一个专用 DNS 区域。

重要

对于已启用高可用性功能的服务器,目前无法将专用 DNS 区域从创建 Azure Database for PostgreSQL 灵活服务器实例时提供的区域更改为其他专用 DNS 区域。

在 Azure 中创建专用 DNS 区域后,需要将虚拟网络链接到该区域。 链接后,托管在该虚拟网络中的资源便可访问专用 DNS 区域。

重要

我们不再验证为具有专用网络的 Azure Database for PostgreSQL 灵活服务器创建服务器时是否存在虚拟网络链接。 通过门户创建服务器时,客户可以选择通过 Azure 门户中的“将专用 DNS 区域链接到虚拟网络”复选框来创建服务器创建链接

DNS 专用区域可复原至区域中断,因为区域数据为全局可用。 系统会自动在各个区域复制某个专用区域中的资源记录。 Azure 专用 DNS 是一种可用性区域基础的区域冗余服务。 有关详细信息,请参阅支持可用性区域的 Azure 服务

与自定义 DNS 服务器集成

如果使用自定义 DNS 服务器,则必须使用 DNS 转发器来解析 Azure Database for PostgreSQL 灵活服务器的 FQDN。 转发器 IP 地址应为 168.63.129.16

自定义 DNS 服务器应位于虚拟网络内,或可通过虚拟网络的 DNS 服务器设置访问。 有关详细信息,请参阅使用自己的 DNS 服务器的名称解析

专用 DNS 区域和虚拟网络对等互连

专用 DNS 区域设置和虚拟网络对等互连彼此独立。 如果要从在另一个虚拟网络(位于相同或不同的区域)中预配的客户端连接到 Azure Database for PostgreSQL 灵活服务器实例,必须将专用 DNS 区域链接到虚拟网络。 有关详细信息,请参阅链接虚拟网络

注意

只能链接以“postgres.database.azure.com”结尾的专用 DNS 区域名称。 DNS 区域名称不能与 Azure Database for PostgreSQL 灵活服务器实例相同,否则,名称解析将会失败。

若要将服务器名称映射到 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(其中一个 VNET 具有 Azure Database for PostgreSQL 灵活服务器和另一个应用程序客户端)。 可通过多种方式实现此类连接,其中一些方法包括:

  • 全球 VNET 对等互连。 最常见的方法,因为它是将不同区域的网络连接在一起的最简单方法。 全球 VNET 对等互连直接在两个对等互连 VNET 之间通过 Azure 主干网建立连接。 此方法为连接提供最佳网络吞吐量和最低延迟。 当 VNET 对等互连时,Azure 还会自动处理路由,这些 VNET 可以与在 VPN 网关上建立的对等互连 VNET 中的所有资源通信。
  • VNET 到 VNET 连接。 VNET 到 VNET 连接实质上是两个不同的 Azure 位置之间的 VPN。 VNET 到 VNET 连接在 VPN 网关上建立。 这意味着与全球 VNET 对等互连相比,流量会产生另外两个流量跃点。 与该方法相比,还存在额外的延迟和较低的带宽。
  • 中心辐射型体系结构中的网络设备通信。 可以使用网络设备在分支之间转发流量,而不是将分支虚拟网络直接相互连接。 网络设备提供深度数据包检查以及流量分段或监视等更多网络服务,但它们可能会引入延迟和性能瓶颈。

使用专用网络跨 Azure 区域和虚拟网络进行复制

数据库复制是将数据从中央服务器或主服务器复制到多个服务器(称为副本)的过程。 主服务器接受读取和写入操作,而副本则处理只读事务。 主服务器和副本服务器共同构成数据库群集。 数据库复制的目标是确保数据的冗余、一致性、高可用性和可访问性,特别是在高流量、关键任务型应用程序中。

Azure Database for PostgreSQL 灵活服务器提供两种复制方法:通过内置只读副本功能进行物理(即流式)复制和逻辑复制。 这两种方法适用于不同的用例,用户可根据最终目标二选一。

跨 Azure 区域的复制(每个区域中有单独的 虚拟网络 (VNET))需要跨区域虚拟网络边界建立连接,此连接可通过虚拟网络对等互连或者通过网络设备在中心辐射型体系结构中提供

默认情况下,DNS 名称解析的范围限定为虚拟网络。 这意味着,一个虚拟网络 (VNET1) 中的任何客户端无法解析另一个虚拟网络 (VNET2) 中的 Azure Database for PostgreSQL 灵活服务器 FQDN。

若要解决此问题,必须确保 VNET1 中的客户端可以访问 Azure Database for PostgreSQL 灵活服务器专用 DNS 区域。 这可以通过将虚拟网络链接添加到 Azure Database for PostgreSQL 灵活服务器实例的专用 DNS 区域来实现

不受支持的虚拟网络场景

下面是使用通过 VNET 集成创建的虚拟网络的一些限制:

  • 将 Azure Database for PostgreSQL 灵活服务器实例部署到虚拟网络和子网后,不能将它移动到其他虚拟网络或子网。 不能将虚拟网络移动到其他资源组或订阅中。
  • 子网中存在资源后,不能增加子网的大小(地址空间)。
  • 默认情况下,VNET 注入的资源无法与专用链接交互。 如果要使用专用链接实现专用网络,请参阅使用专用链接的 Azure Database for PostgreSQL 灵活服务器网络设置

重要

Azure 资源管理器支持作为安全控制的资源锁定功能。 资源锁应用于资源,对所有用户和角色都有效。 有两种类型的资源锁: CanNotDelete 和 ReadOnly 。 这些锁类型可以应用到专用 DNS 区域或单个记录集。 针对专用 DNS 区域或单个记录集应用任一类型的锁定可能会干扰 Azure Database for PostgreSQL 灵活服务器更新 DNS 记录的功能,并在 DNS 上的重要操作(例如从主数据库到辅助数据库的高可用性故障转移)期间导致问题。 出于这些原因,请确保在使用 Azure Database for PostgreSQL 灵活服务器的高可用性功能时不要使用 DNS 专用区域或记录锁

主机名

无论选择哪个网络选项,我们都建议你在连接到 Azure Database for PostgreSQL 灵活服务器实例时始终使用 (FQDN) 作为主机名。 服务器的 IP 地址不能保证保持静态。 使用 FQDN 有助于避免更改连接字符串。

使用 FQDN 作为主机名的示例是 hostname = servername.postgres.database.azure.com。 如果可能,请避免使用 hostname = 10.0.0.4(专用地址)或 hostname = 40.2.45.67(公共地址)。

后续步骤

  • 了解如何在 Azure 门户Azure CLI 中使用专用访问(VNet 集成)选项创建 Azure Database for PostgreSQL 灵活服务器实例。