category
重要事项
本文介绍的是与独立应用服务计划一起使用的应用服务环境v2。应用服务环境v1和v2将于2024年8月31日退役。有一个新版本的App Service Environment,它更易于使用,可以在更强大的基础设施上运行。要了解有关新版本的更多信息,请从应用服务环境介绍开始。如果您当前使用的是App Service Environment v1,请按照本文中的步骤迁移到新版本。
自2024年8月31日起,服务水平协议(SLA)和服务信用不再适用于继续生产的App Service Environment v1和v2工作负载,因为它们是退役产品。App Service Environment v1和v2硬件的停用已经开始,这可能会影响您的应用程序和数据的可用性和性能。
您必须立即完成向App Service Environment v3的迁移,否则您的应用和资源可能会被删除。我们将尽最大努力使用就地迁移功能自动迁移任何剩余的App Service Environment v1和v2,但微软对自动迁移后的应用程序可用性不作任何声明或保证。您可能需要执行手动配置以完成迁移,并优化您的应用服务计划SKU选择以满足您的需求。如果自动迁移不可行,您的资源和相关应用程序数据将被删除。我们强烈敦促您立即采取行动,避免出现这两种极端情况。
如果您需要额外的时间,我们可以为您提供一次性30天的宽限期来完成迁移。有关更多信息和请求此宽限期,请查看宽限期概述,然后转到Azure门户并访问每个应用服务环境的迁移刀片。
有关App Service Environment v1/v2退役的最新信息,请参阅App Service Environment v1和v2退役更新。
应用服务环境是将Azure应用服务部署到Azure虚拟网络中的子网中。应用服务环境有两种部署类型:
- 外部:这种部署通过使用互联网上可访问的IP地址来公开托管的应用程序。有关更多信息,请参阅创建外部应用服务环境。
- 内部负载均衡器:这种类型的部署将托管应用程序暴露在虚拟网络内的IP地址上。内部端点是内部负载均衡器。有关更多信息,请参阅创建和使用内部负载平衡器应用服务环境。
注:本文介绍的是应用服务环境v2,它与独立的应用服务计划一起使用。
无论部署类型如何,所有应用服务环境都有一个公共虚拟IP(VIP)。此VIP用于入站管理流量,并作为您从应用服务环境拨打互联网电话时的地址。此类呼叫通过为应用服务环境分配的VIP离开虚拟网络。
如果应用程序调用虚拟网络或VPN中的资源,则源IP是子网中的一个IP。因为应用服务环境在虚拟网络内,所以它也可以访问虚拟网络内的资源,而无需任何额外的配置。如果虚拟网络连接到您的本地网络,则应用程序也可以访问那里的资源,而无需额外配置。
显示外部部署元素的图。
如果您有一个具有外部部署的应用服务环境,则公共VIP也是您的应用为以下内容解析的端点:
- HTTP/S
- FTP/S
- Web部署
- 远程调试
显示内部负载平衡器部署元素的图。
如果您的应用服务环境具有内部负载平衡器部署,则内部地址的地址是HTTP/S、FTP/S、web部署和远程调试的端点。
子网大小
部署应用服务环境后,您无法更改用于承载它的子网的大小。应用服务环境为每个基础结构角色以及每个隔离的应用服务计划实例使用一个地址。此外,Azure网络为每个创建的子网使用五个地址。
完全没有应用服务计划的应用服务环境将在您创建应用程序之前使用12个地址。如果你使用内部负载均衡器部署,那么在你创建应用程序之前,它将使用13个地址。当您向外扩展时,请注意,基础设施角色是以应用服务计划实例的15和20的倍数添加的。
重要事项
子网中只能有应用服务环境。一定要选择一个允许未来增长的地址空间。您以后无法更改此设置。我们建议使用具有256个地址的/24大小。
当您向上或向下扩展时,会添加适当大小的新角色,然后将工作负载从当前大小迁移到目标大小。只有在迁移了工作负载后,才会删除原始VM。例如,如果你有一个包含100个应用服务计划实例的应用服务环境,那么在一段时间内,你需要将虚拟机的数量增加一倍。
入站和出站依赖关系
以下部分介绍了应用服务环境需要注意的依赖关系。另一节讨论DNS设置。
入站依赖关系
为了使应用服务环境运行,必须打开以下端口:
Use | From | To |
---|---|---|
Management | App Service management addresses | App Service Environment subnet: 454, 455 |
App Service Environment internal communication | App Service Environment subnet: All ports | App Service Environment subnet: All ports |
Allow Azure load balancer inbound | Azure load balancer | App Service Environment subnet: 16001 |
端口7564和1221在端口扫描中可以显示为打开。他们用IP地址回复,仅此而已。如果你愿意,你可以屏蔽它们。
入站管理流量除了提供系统监控外,还提供对应用服务环境的命令和控制。此流量的源地址列在应用服务环境管理地址中。网络安全配置需要允许从端口454和455上的应用服务环境管理地址进行访问。如果你阻止这些地址的访问,你的应用服务环境将变得不健康,然后被挂起。来自端口454和455的TCP流量必须从同一VIP返回,否则将出现不对称路由问题。
在子网内,有许多端口用于内部组件通信,它们可以更改。这要求子网中的所有端口都可以从子网访问。
对于Azure负载平衡器和应用服务环境子网之间的通信,需要打开的最小端口为454、455和16001。如果您使用的是内部负载均衡器部署,那么您可以将流量锁定到454、455、16001端口。如果你使用的是外部部署,那么你需要考虑正常的应用程序访问端口。具体来说,这些是:
Use | Ports |
---|---|
HTTP/HTTPS | 80, 443 |
FTP/FTPS | 21, 990, 10001-10020 |
Visual Studio remote debugging | 4020, 4022, 4024 |
Web deploy service | 8172 |
如果你阻止了应用程序端口,你的应用程序服务环境仍然可以运行,但你的应用可能无法运行。如果您在外部部署中使用应用程序分配的IP地址,则需要允许从分配给应用程序的IP到子网的流量。在App Service Environment门户中,转到IP地址,查看需要允许流量的端口。
出站依赖关系
对于出站访问,应用服务环境依赖于多个外部系统。许多系统依赖关系都是用DNS名称定义的,并没有映射到一组固定的IP地址。因此,应用服务环境要求从子网通过各种端口对所有外部IP进行出站访问。
应用服务环境通过以下端口与互联网可访问的地址进行通信:
Uses | Ports |
---|---|
DNS | 53 |
NTP | 123 |
CRL, Windows updates, Linux dependencies, Azure services | 80/443 |
Azure SQL | 1433 |
Monitoring | 12000 |
出站依赖关系列在锁定应用服务环境中。如果应用服务环境失去对其依赖项的访问权限,它将停止工作。当这种情况持续足够长的时间时,它就会暂停。
客户DNS
如果虚拟网络配置了客户定义的DNS服务器,则租户工作负载会使用它。应用服务环境使用Azure DNS进行管理。如果虚拟网络配置了客户选择的DNS服务器,则必须可以从子网访问DNS服务器。
注:
App Service Environment v2中的存储装载或容器映像拉取无法在虚拟网络中或通过WEBSITE_DNS_SERVER应用程序设置使用客户定义的DNS。
要从web应用程序测试DNS解析,可以使用控制台命令nameresolver。转到scm站点中应用程序的调试窗口,或转到门户中的应用程序并选择控制台。在shell提示符下,您可以发出命令nameresolver以及要查找的DNS名称。你得到的结果与你的应用程序在进行相同的查找时得到的结果相同。如果使用nslookup,则使用Azure DNS进行查找。
如果更改了应用程序服务环境所在的虚拟网络的DNS设置,则需要重新启动。为了避免重新启动,最好在创建应用服务环境之前为虚拟网络配置DNS设置。
门户依赖关系
除了前几节中描述的依赖关系外,您还应该注意一些与门户体验相关的额外考虑因素。Azure门户中的某些功能依赖于对源代码管理器(SCM)站点的直接访问。对于Azure app Service中的每个应用程序,都有两个URL。第一个URL用于访问您的应用程序。第二个URL用于访问SCM站点,也称为Kudu控制台。使用SCM站点的功能包括:
- Web jobs
- Functions
- Log streaming
- Kudu
- Extensions
- Process Explorer
- Console
当您使用内部负载平衡器时,无法从虚拟网络外部访问SCM站点。某些功能无法从应用程序门户工作,因为它们需要访问应用程序的SCM站点。您可以直接连接到SCM站点,而不是使用门户。
如果您的内部负载平衡器是域名contoso.appserviceenvironment.net,并且您的应用程序名称是testapp,则可以在testapp.contoso.appserviceenvironment.net访问该应用程序。与之配套的SCM站点位于testapp.SCM.contoso.appserviceenvironment.net。
IP地址
应用服务环境有几个IP地址需要注意。他们是:
- 公共入站IP地址:用于外部部署中的应用程序流量,以及内部和外部部署的管理流量。
- 出站公共IP:用作离开虚拟网络的出站连接的“发件人”IP。这些连接不会通过VPN路由。
- 内部负载平衡器IP地址:此地址仅存在于内部部署中。
- 应用程序分配的基于IP的TLS/SSL地址:这些地址仅在外部部署和配置基于IP的TLS/SSL绑定时才可能使用。
所有这些IP地址都可以从应用服务环境UI在Azure门户中看到。如果您有内部部署,则会列出内部负载平衡器的IP。
注:
只要您的应用服务环境正在运行,这些IP地址就不会改变。如果您的应用服务环境挂起并恢复,则使用的地址将更改。暂停的正常原因是阻止入站管理访问,或者阻止对依赖项的访问。
应用程序分配的IP地址
通过外部部署,您可以为单个应用程序分配IP地址。内部部署无法做到这一点。有关如何配置应用程序以拥有自己的IP地址的更多信息,请参阅Azure应用程序服务中使用TLS/SSL绑定保护自定义DNS名称。
当应用程序有自己的基于IP的SSL地址时,应用程序服务环境会保留两个端口来映射到该IP地址。一个端口用于HTTP流量,另一个端口则用于HTTPS。这些端口列在应用服务环境门户的IP地址部分。流量必须能够从VIP到达这些港口。否则,应用程序将无法访问。在配置网络安全组(NSG)时,记住这一要求非常重要。
网络安全组
NSG提供了在虚拟网络中控制网络访问的能力。当您使用门户时,有一个优先级最低的隐式拒绝规则来拒绝所有内容。你建立的是你的允许规则。
您无权访问用于托管应用服务环境本身的虚拟机。他们在微软管理的订阅中。如果要限制对应用程序的访问,请在子网上设置NSG。这样做时,请仔细注意依赖关系。如果阻止任何依赖关系,则应用服务环境将停止工作。
您可以通过Azure门户或PowerShell配置NSG。此处的信息显示了Azure门户。您可以在门户中创建和管理NSG,将其作为“网络”下的顶级资源。
NSG中所需的条目是允许流量:
入境
- 来自端口454、455上的IP服务标签AppServiceManagement的TCP
- 来自端口16001上的负载均衡器的TCP
- 从所有端口上的App Service Environment子网到App Service Environment亚网
出境
- UDP到端口53上的所有IP
- UDP到端口123上的所有IP
- TCP到端口80、443上的所有IP
- TCP到端口1433上的IP服务标签Sql
- TCP到端口12000上的所有IP
- 到所有端口上的应用服务环境子网
这些端口不包括您的应用程序成功使用所需的端口。例如,假设您的应用程序需要调用端口3306上的MySQL服务器。端口123上的网络时间协议(NTP)是操作系统使用的时间同步协议。NTP端点并非特定于App Service,可能因操作系统而异,并且不在定义良好的地址列表中。为了防止时间同步问题,您需要允许UDP流量到达端口123上的所有地址。出站TCP到端口12000的流量用于系统支持和分析。端点是动态的,不在一组定义良好的地址中。
正常的应用程序访问端口是:
Use | Ports |
---|---|
HTTP/HTTPS | 80, 443 |
FTP/FTPS | 21, 990, 10001-10020 |
Visual Studio remote debugging | 4020, 4022, 4024 |
Web Deploy service | 8172 |
默认规则允许虚拟网络中的IP与子网通信。另一个默认规则使负载均衡器(也称为公共VIP)能够与应用服务环境通信。要查看默认规则,请选择“添加”图标旁边的“默认规则”。
如果在默认规则之前放置拒绝其他所有规则,则会阻止VIP和App Service环境之间的流量。为了防止流量来自虚拟网络内部,请添加自己的规则以允许入站。使用与AzureLoadBalancer相等的源,目标为Any,端口范围为*。因为NSG规则应用于子网,所以您不需要在目标中具体说明。
如果您为应用程序分配了IP地址,请确保端口保持打开状态。要查看端口,请选择应用服务环境>IP地址。
定义NSG后,将它们分配到子网。如果您不记得虚拟网络或子网,可以从App Service Environment门户中看到它。要将NSG分配到子网,请转到子网UI并选择NSG。
路由
强制隧道是指在虚拟网络中设置路由,这样出站流量就不会直接进入互联网。相反,流量会流向其他地方,比如Azure ExpressRoute网关或虚拟设备。如果您需要以这种方式配置您的应用服务环境,请参阅使用强制隧道配置应用服务环境。
在门户中创建应用服务环境时,会自动在子网上创建一组路由表。这些路线只是说将出站流量直接发送到互联网。
要手动创建相同的路线,请执行以下步骤:
- 转到Azure门户,然后选择“网络”>“路由表”。
- 在与虚拟网络相同的区域中创建新的路由表。
- 在路线表UI中,选择路线>添加。
- 将下一跳类型设置为Internet,地址前缀设置为0.0.0.0/0。选择保存。
然后,您会看到以下内容:
显示功能路线的屏幕截图。
创建新路由表后,转到子网。从门户中的列表中选择您的路由表。保存更改后,您应该会看到子网中标记的NSG和路由。
显示NSG和路线的屏幕截图。
服务端点
服务端点使您能够将对多租户服务的访问限制在一组Azure虚拟网络和子网中。有关更多信息,请参阅虚拟网络服务端点。
当您在资源上启用服务端点时,创建的路由的优先级高于所有其他路由。如果你在任何Azure服务上使用服务端点,并使用强制隧道化的应用服务环境,那么这些服务的流量不会被强制隧道化。
当在具有Azure SQL实例的子网上启用服务端点时,从该子网上连接到的所有Azure SQL实例都必须启用服务端点。如果要从同一子网访问多个Azure SQL实例,则不能在一个Azure SQL示例上启用服务终结点,而在另一个实例上不启用。没有其他Azure服务在服务端点方面表现得像Azure SQL。当您使用Azure存储启用服务端点时,您将锁定子网对该资源的访问。但是,您仍然可以访问其他Azure存储帐户,即使它们没有启用服务端点。
显示服务端点的图表。
- 登录 发表评论
- 4 次浏览
最新内容
- 8 hours ago
- 10 hours 45 minutes ago
- 11 hours ago
- 3 days ago
- 3 days 9 hours ago
- 3 days 10 hours ago
- 3 days 10 hours ago
- 3 days 10 hours ago
- 1 week ago
- 1 week ago