为什么应用程序服务的 VNET 集成的额外子网

why Extra subnet for VNET integration for app services

为什么我们必须创建一个新子网或将应用程序服务添加到我们 vnet 中的空子网? 我不明白其中的原因,因为我正在尝试使用我的应用程序服务(函数应用程序)作为反向代理来访问 vnet 中的资源。

默认情况下,Azure 函数是 PaaS 与其他通过 Internet 具有入站和出站流量的 Azure 平台即服务一样。我们可以托管我们的应用程序,而无需担心服务器及其操作系统的维护。

要使用 Azure Functions 连接到 Azure 虚拟网络中的资源,我们可以使用 VNet 集成功能。要使用此功能,我们需要在虚拟网络中创建一个子网供您的函数应用使用。 VNet 集成必须配置为使用空子网。您的函数使用与 VM 不同的子网并不重要。 虚拟网络自动路由两个子网之间的流量。阅读 Connect your function app to the virtual network

额外的空子网用于托管您的应用程序实例。为了让应用程序实例出站流量像来自 VNet 一样工作,Azure 在该子网中安装了分配有私有 IP 地址的 NIC。通过 VNet 集成,你的函数应用连接到 Internet 和虚拟网络

更多信息,您可以阅读How regional VNet Integration works and How gateway-required VNet Integration works

对于访问虚拟网络中资源的应用程序,它需要是该网络的一部分,或者使用 VPN 网关,这反过来又可以用来访问虚拟网络中的资源。

应用服务提供了两种与虚拟网络中的资源通信的方法:

  1. Regional VNet Integration
  2. Gateway-Required VNet Integration

使用区域 VNet 集成,基础结构会在托管您的 Web 应用程序的 VM 上分配一个专用 IP 接口。该接口从集成子网地址前缀中分配了一个 IP 地址。此接口稍后用于与 VNet 托管资源进行通信。这在某种程度上类似于 IaaS VM 的工作方式,但是此接口的局限性在于它只能用于建立出站连接。

这样,如果 ASP 配置为横向扩展到多个 VM,则每个 VM 都会分配一个相应的专用 IP 接口。但是,这些IP地址的分配仅限于子网地址前缀。 Nancy 已经将其包含在她的 post 中。应用服务与回收重叠,因此在规模 up/maintenance 期间,应用服务计划可能 运行 的 VM 数量增加一倍,以确保停机时间最短。然而,这也意味着,集成子网应该有足够的可用地址,以便可以进行这些分配。

此接口的 IP 地址通过环境变量 WEBSITE_PRIVATE_IP 公开。这是我的 Kudu 控制台的屏幕截图


如果您的网站 运行 正在多个实例上运行,那么您可以使用 实例 菜单来切换实例。

使用需要网关的 VNet 集成,有一个先决条件是配置一个配置有 SSTP[=47= 的虚拟网络基于路由的网关] 点对点 VPN。在这种情况下,托管 Web 应用程序的 VM 在各自的 VM 上下载 VPN 包以设置 VPN,这用于连接到虚拟网络中的资源。

即使在这里,您也可以使用 WEBSITE_PRIVATE_IP 环境变量来查看 App Service VM 上的 VPN 客户端使用的 IP 地址。

HTH, 考沙尔