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

时间:2021-02-05 06:13:29

标签: azure azure-virtual-network azure-function-app azure-app-service-plans

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

2 个答案:

答案 0 :(得分:2)

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

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

额外的空子网用于托管您的应用实例。为了让应用实例出站流量像从 VNet 一样工作,Azure 会在该子网中安装具有分配的私有 IP 地址的 NIC。借助 VNet 集成,您的函数应用既连接到 Internet 又连接到您的虚拟网络

enter image description here

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

答案 1 :(得分:1)

要让应用访问虚拟网络中的资源,它要么是该网络的一部分,要么使用 VPN 网关,而后者又可用于访问虚拟网络中的资源。

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

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

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

这样,如果 ASP 配置为扩展到多个 VM,那么每个 VM 都会分配一个相应的专用 IP 接口。但是,这些 IP 地址的分配仅限于子网地址前缀。 Nancy 已经在她的帖子中包含了这一点。应用服务已重叠回收,因此在纵向扩展/维护期间,应用服务计划可能会在两倍数量的 VM 上运行,以确保将停机时间降至最低。然而,这也意味着集成子网应该有足够的可用地址,以便进行这些分配。

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


enter image description here

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

使用网关所需的 VNet 集成,有一个先决条件是预配配置了 SSTP 点到站点 VPN 的基于虚拟网络路由的网关。在这种情况下,托管 Web 应用程序的虚拟机在相应的虚拟机上下载 VPN 包以设置 VPN,这用于连接到虚拟网络中的资源。

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

HTH, 考沙尔