具有专用访问(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 区域添加到标签(如 china-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 灵活服务器实例配置专用访问时使用这些区域。 有关详细信息,请参阅 Azure 的 REST API 规范。 如果使用 Azure 门户Azure CLI 创建 Azure Database for PostgreSQL 灵活服务器实例,可以提供以前在相同或不同订阅中创建的专用 DNS 区域名称,否则系统会在订阅中自动创建默认的专用 DNS 区域。

如果使用 Azure API、Azure 资源管理器模板(ARM 模板)或 Terraform,请创建以 .postgres.database.chinacloudapi.cn 结尾的专用 DNS 区域。 在为 Azure Database for PostgreSQL 灵活服务器实例配置专用访问时,请使用这些区域。 例如,使用窗体 [name1].[name2].postgres.database.chinacloudapi.cn[name].postgres.database.chinacloudapi.cn。 如果选择使用 [name].postgres.database.chinacloudapi.cn 形式,则名称不能是其中一个 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.chinacloudapi.cn”结尾的专用 DNS 区域名称。 DNS 区域名称不能与 Azure Database for PostgreSQL 灵活服务器实例相同,否则,名称解析将会失败。

若要将服务器名称映射到 DNS 记录,可以使用 Azure PowerShell 或 Bash 运行 nslookup 命令,在以下示例中使用你的服务器的名称替换 <server_name> 参数:

nslookup -debug <server_name>.postgres.database.chinacloudapi.cn | grep 'canonical name'

使用专用网络跨 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 资源管理器支持作为安全控制的资源锁定功能。 资源锁应用于资源,对所有用户和角色都有效。 有两种类型的资源锁: 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.chinacloudapi.cn。 如果可能,请避免使用 hostname = 10.0.0.4(专用地址)或 hostname = 40.2.45.67(公共地址)。

后续步骤

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