使用应用服务环境

应用服务环境是一种 Azure 应用服务的单租户部署环境。 你可以将它与 Azure 虚拟网络一起使用,并且你将是该系统的唯一用户。 部署的应用受应用于子网的网络功能的影响。 在这些网络功能的影响下,无需在应用中启用任何额外的功能。

注意

本文介绍与独立 v2 应用服务计划一起使用的应用服务环境 v3。

创建应用

在应用服务环境中创建应用的过程与一般情况下创建应用的过程大致相同,只存在几处细微的差别。 创建新的应用服务计划时:

  • 不要选择某个地理位置来部署应用,而应该选择应用服务环境作为位置。
  • 在应用服务环境中创建的所有应用服务计划只能位于独立 v2 定价层中。

如果你还没有应用服务环境,请创建一个应用服务环境

在应用服务环境中创建应用:

  1. 选择“创建资源”>“Web + 移动”>“Web 应用”。
  2. 选择一个订阅。
  3. 输入新资源组的名称,或选择“使用现有”并从下拉列表中选择一个资源组。
  4. 输入应用程序的名称。 如果已在应用服务环境中选择了应用服务计划,则应用的域名会反映应用服务环境的域名。
  5. 对于“发布”、“运行时堆栈”和“操作系统”,请根据需要进行选择。
  6. 对于“区域”,选择预先存在的应用服务环境 v3。 如果要创建新应用服务环境,请选择一个区域。 Screenshot that shows how to create an app in an App Service Environment.
  7. 选择现有的应用服务计划或创建新的计划。 如果要创建新计划,请选择应用服务计划所需的大小。 可为应用选择的唯一 SKU 是一个独立 v2 定价 SKU。 制定新的应用服务计划通常耗时不到 20 分钟。 Screenshot that shows pricing tiers and their features and hardware.
  8. 如果在创建新的应用服务计划时选择创建新应用服务环境,请填写名称和虚拟 IP 类型。
  9. 在完成时选择“下一步:监视”。 如果想要对应用启用 Application Insights,可在创建流期间在此处执行此操作。
  10. 选择“下一步: 标记”。向应用添加所需的任何标记。
  11. 选择“查看 + 创建”。 确保信息无误,然后选择“创建”。

Windows 和 Linux 应用可以位于同一应用服务环境中,但不能位于同一应用服务计划中。

缩放的工作原理

每个应用服务应用在应用服务计划中运行。 应用服务环境保存应用服务计划,应用服务计划保存应用。 缩放某个应用时,也会缩放应用服务计划,以及同一计划中的所有应用。

缩放应用服务计划时,会自动添加所需的基础结构。 注意在添加基础结构时,缩放操作存在一定的时间延迟。 例如,在缩放应用服务计划时,但另外有一个运行相同操作系统和大小的缩放操作正在运行,那么在请求的缩放操作开始之前,可能会延迟几分钟。

针对某个大小和操作系统的缩放操作不会影响其他大小和操作系统组合的缩放。 例如,如果要缩放 Windows I2v2 应用服务计划,则立即开始对 Windows I3v2 应用服务计划执行缩放操作。 缩放通常需要不到 15 分钟。

在多租户应用服务中,缩放操作立即执行,因为有现成可用的共享资源池支持该操作。 应用服务环境是单租户服务,因此没有共享缓冲区,并且根据需求分配资源。

应用访问

在使用内部虚拟 IP (VIP) 的应用服务环境中,用于创建应用的域后缀为 .<asename>.appserviceenvironment.cn。 如果应用服务环境名为 my-ase 并且托管了名为 contoso 的应用,可通过以下 URL 访问该应用:

  • contoso.my-ase.appserviceenvironment.cn
  • contoso.scm.my-ase.appserviceenvironment.cn

只有在你位于同一虚拟网络或连接到该虚拟网络时,才能访问托管在使用内部 VIP 的应用服务环境上的应用。 同样,只有在你位于同一虚拟网络或连接到该虚拟网络时,才能进行发布。

在具有外部 VIP 的应用服务环境中,用于创建应用的域后缀是“.<asename>.p.chinacloudsites.cn”。 如果应用服务环境名为 my-ase 并且托管了名为 contoso 的应用,可通过以下 URL 访问该应用:

  • contoso.my-ase.p.chinacloudsites.cn
  • contoso.scm.my-ase.p.chinacloudsites.cn

使用 scm URL 访问 Kudu 控制台,或者通过 Web 部署发布应用。 有关详细信息,请参阅 Azure 应用服务的 Kudu 控制台。 Kudu 控制台提供 Web UI,可在其中进行调试、上传文件、编辑文件。

DNS 配置

如果应用服务环境是使用外部 VIP 创建的,则应用将自动置于公共 DNS 中。 如果你的应用服务环境是使用内部 VIP 创建的,则可能需要为其配置 DNS。

如果你已选择自动配置 Azure DNS 专用区域,则在应用服务环境的虚拟网络中配置 DNS。 如果你已选择手动配置 DNS,则需要使用自己的 DNS 服务器或配置 Azure DNS 专用区域。

若要查找入站地址,请在应用服务环境门户中选择“IP 地址”。

Screenshot that shows how to find the inbound address.

如果要使用自己的 DNS 服务器,请添加以下记录:

  1. <App Service Environment-name>.appserviceenvironment.cn 创建区域。
  2. 在该区域中创建 A 记录,该记录将 * 指向应用服务环境使用的入站 IP 地址。
  3. 在该区域中创建 A 记录,该记录将 @ 指向应用服务环境使用的入站 IP 地址。
  4. 在名为 scm<App Service Environment-name>.appserviceenvironment.cn 中创建区域。
  5. scm 区域中创建 A 记录,该记录将 * 指向应用服务环境使用的入站地址。

在 Azure DNS 专用区域中配置 DNS:

  1. 创建名为 <App Service Environment-name>.appserviceenvironment.cn 的 Azure DNS 专用区域。
  2. 在该区域中,创建一条将 * 指向入站 IP 地址的 A 记录。
  3. 在该区域中,创建一条将 @ 指向入站 IP 地址的 A 记录。
  4. 在该区域中,创建一条将 *.scm 指向入站 IP 地址的 A 记录。

应用服务环境的默认域后缀的 DNS 设置不会将你的应用限制为只能由这些名称访问。 无需对应用服务环境中应用进行任何验证即可设置自定义域名。 如果随后想要创建名为 contoso.net 的区域,可以执行此操作并将其指向入站 IP 地址。 自定义域名适用于应用请求,如果自定义域后缀证书包含 scm 的通配符 SAN,则该自定义域名也适用于 scm 站点,你可以创建记录 *.scm 并使其指向入站 IP 地址。

发布

可以通过以下任一方法发布:

  • Web 部署
  • 持续集成 (CI)
  • 在 Kudu 控制台中拖放
  • 集成开发环境 (IDE),例如 Visual Studio、Eclipse 或 IntelliJ IDEA

使用内部 VIP 应用服务环境时,发布终结点只有通过入站地址才可用。 如果没有对入站地址的网络访问权限,则无法在该应用服务环境上发布任何应用。 IDE 还必须拥有对应用服务环境上入站地址的网络访问权限,然后才能直接向其进行发布。

如果不进行其他更改,GitHub 和 Azure DevOps 等基于 Internet 的 CI 系统将无法与内部 VIP 应用服务环境一起使用。 发布终结点无法通过 Internet 访问。 可以通过在虚拟网络中安装自托管发布代理,来实现从 Azure DevOps 发布到内部 VIP 应用服务环境。

存储

你的应用服务环境中的所有应用都拥有 1 TB 的存储空间。 “独立”定价 SKU 中的一个应用服务计划限制为 250 GB。 在应用服务环境中,每个应用服务计划增加了 250 GB 的存储空间,最大限制为 1 TB。 你可以有四个以上的应用服务计划,但没有超过 1 TB 限制的额外存储空间。

监视

应用服务环境 v3 中的平台基础结构将由 Microsoft 进行监视和管理,并根据需要进行缩放。 作为客户,你应仅监视应用服务计划和运行的各个应用,并采取适当的操作。 你将看到应用服务环境的一些可见指标,但这些指标仅用于旧版本,不会省略此版本的任何值。 如果你使用的是应用服务环境的 v1 或 v2,请参阅此部分,了解监视和缩放的指南。

Logging

你可以与 Azure Monitor 集成以将日志发送到 Azure 存储、Azure 事件中心或 Azure Monitor 日志。 下表显示了可以记录的情况和消息:

场景 Message
应用服务环境子网几乎空间不足。 指定的应用服务环境位于几乎空间不足的子网中。 还剩下 {0} 个地址。 一旦这些地址用尽,应用服务环境将无法进行缩放。
应用服务环境接近总实例限制。 指定的应用服务环境接近应用服务环境的总实例限制。 它当前包含 {0} 个应用服务计划实例,最多有 200个实例。
应用服务环境已暂停。 指定的应用服务环境已暂停。 应用服务环境暂停的可能原因是帐户不足,或虚拟网络配置无效。 解决根本原因并恢复应用服务环境以继续提供流量。
应用服务环境升级已开始。 对指定应用服务环境的平台升级已开始。 预期缩放操作会出现延迟。
应用服务环境升级已完成。 对指定应用服务环境的平台升级已完成。
应用服务计划创建已开始。 应用服务计划 ({0}) 创建已开始。 期望状态:{1} I{2}v2 辅助角色。
缩放操作已完成。 应用服务计划 ({0}) 创建已结束。 当前状态:{1} I{2}v2 辅助角色。
缩放操作失败。 应用服务计划 ({0}) 创建已失败。 这可能是由于应用服务环境在实例数最高时运行,或者子网地址不足。
缩放操作已启动。 应用服务计划 ({0}) 已开始缩放。 当前状态:{1} I(2)v2。 期望状态:{3} I{4}v2 辅助角色。
缩放操作已完成。 应用服务计划 ({0}) 已完成缩放。 当前状态:{1} I{2}v2 辅助角色。
缩放操作已中断。 缩放时应用服务计划 ({0}) 中断。 先前期望状态:{1} I{2}v2 辅助角色。 新的期望状态:{3} I{4}v2 辅助角色。
缩放操作失败。 应用服务计划 ({0}) 无法缩放。 当前状态:{1} I{2}v2 辅助角色。

若要启用日志记录,请按以下步骤操作:

  1. 在门户中,转到“诊断设置”。
  2. 选择“添加诊断设置”。
  3. 提供日志集成的名称。
  4. 选择并配置所需的日志目标。
  5. 选择“AppServiceEnvironmentPlatformLogs”。 Screenshot that shows how to enable logging.

如果与 Azure Monitor 集成,可通过以下方式查看日志:在应用服务环境门户中选择“日志”,并针对“AppServiceEnvironmentPlatformLogs”创建查询。 仅当应用服务环境具有触发日志的事件时才会发出日志。 如果应用服务环境没有此类事件,则不会有任何日志。 若要快速查看日志示例,请使用应用服务计划执行缩放操作。 然后,你可以针对 AppServiceEnvironmentPlatformLogs 运行查询来查看这些日志。

创建警报

若要针对日志创建警报,请按使用 Azure Monitor 创建、查看和管理日志警报中的说明操作。 简单地说:

  1. 在应用服务环境门户中打开“警报”页面。
  2. 选择“新建警报规则”。
  3. 对于“资源”,选择 Azure Monitor 日志工作区。
  4. 使用自定义日志搜索来设置条件,以使用查询。 例如,你可以设置以下内容:AppServiceEnvironmentPlatformLogs | 其中 ResultDescription 包含已开始缩放。 根据需要设置阈值。
  5. 添加或创建操作组(可选)。 你可以在操作组中定义对警报的响应,如发送电子邮件或短信。
  6. 为警报命名并保存。

内部加密

在应用服务环境系统中看不到内部组件或通信。 为了实现更高的吞吐量,默认情况下,在内部组件之间不启用加密。 系统很安全,因为流量无法访问,不管你是要监视流量还是要访问流量。 如果对数据路径的完全加密有符合性要求,则可以启用此设置。 选择“配置”,如以下屏幕截图中所示。

Screenshot that shows how to enable internal encryption.

此选项可加密内部网络流量,也可加密页面文件和辅助磁盘。 请注意,此选项可能会影响系统性能。 在完全传播更改之前,应用服务环境将处于不稳定状态。 更改的传播可能需要几个小时才能完成,具体取决于应用服务环境中有多少实例。

使用应用服务环境时,请避免启用此选项。 如果必须这样做,可以将流量转移到备份,直到操作完成。

升级首选项

如果具有多个应用服务环境,则可能需要先升级其中某些环境,然后再升级其他环境。 可以通过应用服务环境门户启用此行为。 在“配置”下,可选择设置“升级首选项”。 可能的值包括:

  • 无:Azure 在非特定的批次中升级。 此值为默认值。
  • 较早:在应用服务升级过程的上半阶段升级。
  • 较晚:在应用服务升级过程的下半阶段升级。
  • 手动:获得 15 天的时间来手动部署升级。

选择所需的值,然后选择“保存”。

Screenshot that shows the App Service Environment configuration portal.

当具有多个应用服务环境时,此功能最为有用,并且可以从对升级进行排序中受益。 例如,可以将开发和测试应用服务环境设置为较早,将生产应用服务环境设置为较晚。

删除应用服务环境

若要删除:

  1. 选择“应用服务环境”窗格顶部的“删除”。
  2. 输入应用服务环境的名称以确认是否要将其删除。 删除应用服务环境时,将同时删除其中包含的所有内容。 Screenshot that shows how to delete.
  3. 选择“确定”