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

在虚拟 WAN 中使用专用链接

Azure 专用链接技术可用于通过公开专用终结点,使用专用 IP 地址连接来连接 Azure 平台即服务产品。 使用 Azure 虚拟 WAN,可以在一个连接到任何虚拟中心的虚拟网络中部署专用终结点。 此专用链接提供了与连接到同一虚拟网络的任何其他虚拟 WAN 或分支的连接。

开始之前

本文中的步骤假设你已部署了具有一个或多个中心的虚拟 WAN,并且至少有两个虚拟网络连接到虚拟 WAN。

若要创建新虚拟 WAN 和新中心,请使用以下文章中的步骤:

Azure 中的专用终结点连接是监控状态的。 通过虚拟 WAN 建立与专用终结点的连接时,流量通过不同的虚拟 WAN 组件(例如虚拟中心路由器、ExpressRoute 网关、VPN 网关、Azure 防火墙或 NVA)经由一个或多个流量跃点进行路由。 流量的确切跃点基于虚拟 WAN 路由配置。 在后台,Azure 软件定义的网络层将与单个 5 元组流相关的所有包发送到为不同虚拟 WAN 组件提供服务的后端实例之一。 Azure 平台不支持非对称路由流量(例如,与路由到不同后端实例的单个 5 元组流对应的流量),并会将其丢弃。

在虚拟 WAN 基础结构上的维护事件期间,后端实例会逐个重启,这可能会导致专用终结点出现间歇性连接问题,原因是为流提供服务的实例暂时不可用。 当 Azure 防火墙或虚拟中心路由器横向扩展时,可能会出现类似问题。同一流量流可以与一个新的后端实例负载均衡,而该后端实例不同于与当前为流提供服务的实例。

要缓解维护和横向扩展事件对专用链接或专用终结点流量的影响,请考虑以下最佳做法:

  • 将本地应用程序的 TCP 超时值配置为 15-30 秒之间。 较小的 TCP 超时值可让应用程序流量更快地从维护和横向扩展事件中恢复。 或者,测试不同的应用程序超时值,根据要求确定合适的超时值。
  • 预先缩放虚拟 WAN 组件以处理流量突发,防止发生自动缩放事件。 对于虚拟中心路由器,可以在中心路由器上设置最小路由基础结构单元,以防止在流量突发期间进行缩放。

最后,如果使用 VPN 或 ExpressRoute 在 Azure 与本地之间进行本地连接,请确保本地设备配置为使用相同的 VPN 隧道或相同的 Microsoft Enterprise Edge 路由器,作为与专用终结点流量对应的每个 5 元组的下一个跃点。

创建专用链接终结点

可以为许多不同服务创建专用链接终结点。 在此示例中,我们使用 Azure SQL 数据库。 有关如何为 Azure SQL 数据库创建专用终结点的详细信息,请参阅快速入门:使用 Azure 门户创建专用终结点。 下图显示了 Azure SQL 数据库的网络配置:

创建专用链接

创建 Azure SQL 数据库之后,可以通过浏览专用终结点来验证专用终结点 IP 地址:

专用终结点

单击已创建的专用终结点,应该会看到其专用 IP 地址和完全限定的域名 (FQDN)。 专用终结点的 IP 地址应在 VNet 范围 (10.1.3.0/24) 内:

SQL 终结点

验证来自同一 VNet 的连接

在此示例中,我们验证了从安装了 MS SQL 工具的 Linux 虚拟机到 Azure SQL 数据库的连接。 第一步是验证 DNS 解析是否有效,以及 Azure SQL 数据库完全限定的域名是否在部署了专用终结点的同一 VNet (10.1.3.0/24) 中解析为了专用 IP 地址:

nslookup wantest.database.windows.net
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
wantest.database.windows.net    canonical name = wantest.privatelink.database.windows.net.
Name:   wantest.privatelink.database.windows.net
Address: 10.1.3.228

如前面的输出中所示,FQDN wantest.database.windows.net 映射到了 wantest.privatelink.database.windows.net,随专用终结点一起创建的专用 DNS 区域将解析为专用 IP 地址 10.1.3.228。 可通过查看专用 DNS 区域来确认已将专用终结点的 A 记录映射到了专用 IP 地址:

DNS 区域

验证正确的 DNS 解析后,可以尝试连接到数据库:

query="SELECT CONVERT(char(15), CONNECTIONPROPERTY('client_net_address'));"
sqlcmd -S wantest.database.windows.net -U $username -P $password -Q "$query"
10.1.3.75

如你所见,我们使用的是一个特殊的 SQL 查询,该查询提供了 SQL 服务器从客户端看到的源 IP 地址。 在这种情况下,服务器会看到具有其专用 IP (10.1.3.75) 的客户端,这意味着流量从 VNet 直接流入专用终结点。

将变量 usernamepassword 设置为与在 Azure SQL 数据库中定义的凭据匹配的值,从而使本指南中的示例生效。

从其他 VNet 连接

既然 Azure 虚拟 WAN 中的一个 VNet 可以连接到专用终结点,那么连接到虚拟 WAN 的所有其他 VNet 和分支就也可以访问该终结点。 你需要通过 Azure 虚拟 WAN 支持的任何模型(举两个例子,任意连接性方案共享服务 VNet 方案)提供连接。

在 VNet 或分支与已部署专用终结点的 VNet 之间建立连接后,需要配置 DNS 解析:

  • 如果从 VNet 连接到专用终结点,则可以使用通过 Azure SQL 数据库创建的同一专用区域。
  • 如果从分支(站点到站点 VPN、点到站点 VPN 或 ExpressRoute)连接到专用终结点,则需要使用本地 DNS 解析。

在此示例中,我们从其他 VNet 进行连接。 首先将专用 DNS 区域附加到这个新的 VNet,使其工作负载能够将 Azure SQL 数据库完全限定的域名解析为专用 IP 地址。 此操作通过将专用 DNS 区域链接到新的 VNet 来完成:

DNS 链接

现在,附加 VNet 中的任何虚拟机都应将 Azure SQL 数据库 FQDN 正确解析为专用链接的专用 IP 地址:

nslookup wantest.database.windows.net
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
wantest.database.windows.net    canonical name = wantest.privatelink.database.windows.net.
Name:   wantest.privatelink.database.windows.net
Address: 10.1.3.228

为了再次检查此 VNet (10.1.1.0/24) 是否已连接到配置了专用终结点的原始 VNet (10.1.3.0/24),可以验证 VNet 中任何虚拟机中的有效路由表:

有效路由

如你所见,有一个路由指向由 Azure 虚拟 WAN 中的虚拟网络网关注入的 VNet 10.1.3.0/24。 现在,我们终于可以测试与数据库的连接了:

query="SELECT CONVERT(char(15), CONNECTIONPROPERTY('client_net_address'));"
sqlcmd -S wantest.database.windows.net -U $username -P $password -Q "$query"
10.1.1.75

在此示例中,我们已了解如何在附加到虚拟 WAN 的一个 VNet 中创建专用终结点,从而提供与虚拟 WAN 中其余 VNet 和分支的连接。

后续步骤

有关虚拟 WAN 的详细信息,请参阅常见问题解答