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

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

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

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

创建 Azure Database for PostgreSQL 灵活服务器时,必须选择以下一个网络选项:

  • 专用访问(虚拟网络集成)
  • 公共访问(允许的 IP 地址)和专用终结点

本文档介绍了专用访问(虚拟网络集成)网络选项。

专用访问(虚拟网络集成)

可以使用虚拟网络注入将 Azure Database for PostgreSQL 灵活服务器部署到 Azure 虚拟网络中。 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 资源被部署到虚拟网络中的特定子网中。

    虚拟网络中集成的 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 灵活服务器使用四个地址。

    对于复制和 Microsoft Entra 连接,确保路由表不会影响流量。 常见模式是通过 Azure 防火墙或自定义本地网络筛选设备路由所有出站流量。

    如果子网具有与规则关联的路由表,用于将所有流量路由到虚拟设备:

    • 添加一个目标服务标记为 AzureActiveDirectory 且下一个跃点为 Internet 的规则。
    • 添加一个目标 IP 范围与 Azure Database for PostgreSQL - 灵活服务器子网范围相同且下一个跃点为 Virtual Network 的规则。

    重要

    名称 AzureFirewallSubnetAzureFirewallManagementSubnetAzureBastionSubnetGatewaySubnet 都保留在 Azure 中。 请勿将其中任一名称用作子网名称。 此外,创建跨区域副本时,虚拟网络的地址空间不能相互重叠。

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

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

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

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

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

    要使用 Azure Database for PostgreSQL - 灵活服务器的高可用性和其他功能,需要能够向部署了 Azure Database for PostgreSQL - 灵活服务器的 Azure 虚拟网络子网中的目标端口 5432 发送/接收流量,并能够向 Azure 存储发送流量进行日志存档。 如果创建 NSG 来拒绝流量流入或流出 Azure Database for PostgreSQL 灵活服务器所部署到的子网,请确保允许将流量发送到该子网中的目标端口 5432,并允许通过使用服务标记存储作为目标,将流量发送到存储。

    可以通过将 Azure 区域添加到标签(如 us-east.storage)来进一步筛选此异常规则。 此外,如果选择使用 Microsoft Entra 身份验证来验证到 Azure Database for PostgreSQL 灵活服务器的登录,请允许使用 Microsoft Entra 服务标记将出站流量发送到 Microsoft Entra ID。

    跨 Azure 区域设置只读副本时,Azure Database for PostgreSQL – 灵活服务器需要能够使流量流入/流出主要和副本服务器的目标端口 5432,以及在主要和副本区域中主要和副本服务器的 Azure 存储。 存储所需的目标 TCP 端口为 443。

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

使用专用 DNS 区域

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

对 Azure 虚拟网络使用专用网络访问时,必须提供专用 DNS 区域信息才能进行 DNS 解析。 若要创建使用专用网络访问的新 Azure Database for PostgreSQL 灵活服务器,需要在为 Azure Database for PostgreSQL 灵活服务器配置专用访问时使用专用 DNS 区域。

重要

在其他订阅中使用专用 DNS 区域时,该订阅还必须注册 Microsoft.DBforPostgreSQL 资源提供程序,否则 Azure Database for PostgreSQL 灵活服务器的部署不会完成。

若要通过 API、Azure 资源管理器模板(ARM 模板)或 Terraform,使用专用网络访问创建新的 Azure Database for PostgreSQL 灵活服务器,请创建专用 DNS 区域。 接着,在为 Azure Database for PostgreSQL 灵活服务器配置专用访问时,使用这些区域。 有关详细信息,请参阅 Azure 的 REST API 规范

如果使用 Azure 门户Azure CLI 创建 Azure Database for PostgreSQL 灵活服务器,可以提供以前在相同或不同订阅中创建的专用 DNS 区域名称,否则系统会在订阅中自动创建默认的专用 DNS 区域。

如果使用 Azure API、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 Database for PostgreSQL 灵活服务器的名称,否则在预配期间将收到错误消息。 有关详细信息,请参阅专用 DNS 区域概述

使用 Azure 门户、API、Azure 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 之间的流量通过连接到中心虚拟网络的 Azure ExpressRoute 或站点到站点 VPN 进行连接。 从分支到中心的虚拟网络对等互联,支持与本地资源的通信。 可以在单独的订阅或资源组中实现中心和每个分支。

有三种主要模式用于将分支虚拟网络相互连接:

  • 分支直接相互连接:虚拟网络对等互连或 VPN 隧道是在分支虚拟网络之间创建的,无需遍历中心虚拟网络即可提供直接连接。
  • 分支通过网络设备进行通信:每个分支虚拟网络都与虚拟 WAN 或中心虚拟网络建立对等互连。 设备将流量从分支路由到分支。 设备可以由 Microsoft 管理(与虚拟 WAN 一样),也可由你管理。
  • 虚拟网络网关附加到中心网络并利用用户定义的路由:实现分支之间的通信。

图表显示通过 Express Hub 进行混合连接的基本中心和分支体系结构。

使用 Azure Virtual Network Manager 创建新的(和加入现有的)中心和分支型虚拟网络拓扑,来集中管理连接和安全控制。

与不同区域中的专用网络客户端通信

客户经常需要连接到不同 Azure 区域的客户端。 更具体地说,此问题通常归结为如何连接位于不同区域的两个虚拟网络(其中一个具有 Azure Database for PostgreSQL 灵活服务器,另一个具有应用程序客户端)。

可通过多种方式实现此类连接,包括:

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

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

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

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

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

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

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

不受支持的虚拟网络场景

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

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

重要

Azure 资源管理器支持作为安全控制的资源锁定功能。 资源锁应用于资源,对所有用户和角色都有效。 有以下两种类型的资源锁:CanNotDeleteReadOnly。 这些锁类型可以应用到专用 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(公共地址)。