在应用服务环境中托管 Web 应用

应用服务环境是一个与 Azure 虚拟网络实例和子网集成的 Azure 应用服务单一租户的部署。 在此方案中,可以在独立环境中托管 Web 应用,在该环境中,你是系统的唯一用户。 部署的应用受应用于应用服务环境虚拟网络子网的网络功能的约束。 Web 应用无需其他功能即可访问网络功能。

在应用服务环境中创建 Web 应用时,使用略有不同的方法遵循标准创建过程:

  • 对于 Web 应用区域,与其选择地理位置作为应用部署地点,不如选择应用服务环境。
  • 对于应用服务环境中的新应用服务计划,请选择独立的 v2 定价层。

本文介绍如何按照Azure门户中的过程在应用服务环境中创建应用服务 Web 应用。

先决条件

  • 应用服务环境 若要创建新环境,请按照 Quickstart:创建 应用服务环境 中的步骤作。

  • 创建应用时,请记住,Windows和 Linux 应用可以位于同一应用服务环境中,但它们不能位于同一应用服务计划中。

创建 Web 应用

在Azure门户中,在应用服务环境中创建 Web 应用:

  1. 登录到 Azure 门户

  2. 选择“ 创建资源”,在资源列表中选择 Web 应用 ,然后选择“ 创建”。

    创建 Web 应用 ”窗格将打开到“ 基本 ”选项卡:

    截图显示如何在 Azure portal 的 应用服务环境 中创建 Web 应用。

  3. 在“ 基本 ”选项卡中,选择 你的订阅

  4. 选择现有 资源组 ,或为新实例选择 “新建 ”。

  5. 输入新 Web 应用 的名称

    如果之前在应用服务环境中选择了应用服务计划,则应用的域名反映应用服务环境的域名。 例如,对于应用 zava-hosted-web-app 和 应用服务环境 zava-app-service-envrionment-1,应用的域名为 zava-hosted-web-app-zava-app-service-envrionment-1.appserviceenvironment.cn

  6. 根据应用要求配置 发布运行时堆栈作系统 设置。

  7. 对于 区域 设置,请使用下拉列表进行选择。

    • 若要使用现有应用服务环境,请在下拉列表中的“应用服务环境 v3 部分下选择环境。

    • 若要创建新的应用服务环境,请在下拉列表中的 Regions 节下选择一个区域。 选择区域后,创建 Web 应用窗格会添加一个分区,其中包含新应用服务环境的配置选项。 您将在本过程的后续步骤中完成新环境的配置。

    可以筛选 区域 列表,以显示环境和区域的列表中的匹配项。 该示例筛选列表以匹配 加拿大

    截图显示如何将 应用服务环境 选择为应用区域,并对匹配“Canada”的项目进行筛选。

  8. 对于 “定价计划 ”选项,请指定应用服务计划名称和计划定价层。

    • 对于应用服务 Linux 计划,请使用下拉列表并选择现有计划,或为新计划 选择“新建 ”。

    • 对于 定价计划 层,如果选择了现有计划,则值将填充当前计划的定价层。

      如果要创建新的应用服务计划,请使用下拉列表并选择层大小。 此列表显示 常用计划。 为应用选择的唯一 SKU 是 独立 v2 定价 SKU。

      可以选择 “浏览定价计划 ”来比较计划功能。 下图显示了定价计划和功能的示例。 在 “选择应用服务定价计划 ”窗格中,选择列表中的计划,然后选择 “选择”。

      显示 Azure 门户中应用服务计划定价层、功能及其硬件的截图。

      创建新的应用服务计划大约需要 20 分钟。

  9. 如果您在创建新的应用服务计划时要同时创建新的应用服务环境,请配置以下 应用服务环境 设置:

    • 输入应用服务环境名称。

    • 选择 虚拟 IP 类型 (内部或外部)。 有关此设置的详细信息,请参阅 规划应用的访问级别

    截图,展示如何在 Azure 门户中配置新的 应用服务环境。

  10. 切换到“创建 Web 应用”窗格中的“网络”选项卡,并配置设置。

    • 如果您正在创建新的应用服务环境:

      • 标识要用于部署的 虚拟网络Subnet。 可以选择现有资源或创建新实例。

      • 配置 DNS 设置。 如果希望系统在应用服务环境的虚拟网络中配置 DNS,请选择Azure DNS专用区域

        如果想要手动配置 DNS,请选择“ 手动”。 部署完成后,可以修改配置以使用自己的 DNS 服务器或指定Azure DNS专用区域

      • 配置 入站 IP 地址 配置。 选择 “自动 ”(子网中的系统分配的 IP 地址)或 “手动 ”(输入首选 IP 地址)。

    • 如果您使用现有的 应用服务环境 进行部署,请根据需要配置 虚拟网络集成选项。

  11. (可选)根据应用要求,在 “创建 Web 应用 ”窗格中的剩余选项卡上配置选项。 默认情况下,大多数设置处于禁用状态。

    • Deployment:配置持续部署、身份验证和GitHub设置。
    • Monitor + Secure:使用 Azure Monitor Application Insights 或 Microsoft Defender for Cloud。
    • 标记:定义应用的标记。

    如果要创建新的应用服务环境,请确认Hosting选项卡上的设置。

  12. 选择“查看 + 创建”。 确认 Web 应用配置正确,然后选择“ 创建”。

查看缩放选项

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

缩放应用服务计划时,会自动添加所需的基础结构。 请注意,在添加基础设施时,缩放操作可能会有时间延迟。 例如,当你缩放应用服务计划时,如果正在对相同操作系统和大小执行另一个缩放操作,则请求的缩放操作可能会延迟几分钟才开始。

在一个大小和操作系统上的缩放操作不会影响其他大小和操作系统组合的缩放。 例如,如果要缩放 Windows I2v2 应用服务计划,则Windows I3v2 应用服务计划的缩放作将立即启动。 通常情况下,缩放操作需要不到 15 分钟,但最多可能需要 45 分钟。

在多租户应用服务场景中,可以实现快速缩放,因为共享资源池随时可以提供支持。 应用服务环境是单租户服务,因此没有共享缓冲区,并且根据需求分配资源。

规划应用的访问级别

在"应用服务环境"中具有内部虚拟 IP(VIP)的场景下,创建应用时使用的域后缀是<app-service-environment-name>.appserviceenvironment.cn。 对于承载名为 zava-environment 的应用的名为 hosted-web-app 的应用服务环境,可以使用以下 URL 访问环境:

  • hosted-web-app.zava-environment.appserviceenvironment.cn
  • hosted-web-app.scm.zava-environment.appserviceenvironment.cn

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

在一个具有外部 VIP 的 应用服务环境 中,用于创建应用的域后缀是<app-service-environment-name>.p.chinacloudsites.cn。 如果有一个名为zava-environment的应用托管在名为hosted-web-app的应用服务环境中,您可以通过以下URL访问该环境:

  • hosted-web-app.zava-environment.p.chinacloudsites.cn
  • hosted-web-app.scm.zava-environment.p.chinacloudsites.cn

使用 scm URL 访问 Kudu 控制台,或使用 Web Deploy 发布应用。 有关更多信息,请参阅 Kudu 服务适用于 Azure 应用服务。 Kudu 控制台提供 Web UI,可在其中进行调试、上传文件、编辑文件。

配置 DNS

如果应用服务环境是使用外部 VIP 创建的,则应用将自动置于公共 DNS 中。 如果您的 应用服务环境 是使用内部虚拟 IP(VIP)创建的,则可能需要手动配置 DNS。

  • 创建您的应用时,如果选择了Azure DNS专用区域的自动配置,则会在您的 应用服务环境 的虚拟网络中为您配置 DNS。

  • 如果选择手动配置 DNS,则需要使用自己的 DNS 服务器或配置Azure DNS专用区域,如以下部分所述。

可以在Azure门户中找到应用服务环境的 IP 地址:

  1. 在 Azure 门户中,转到您的应用的 应用服务环境 (应用服务环境)的 Overview 页。

  2. 在左侧菜单中,选择 “设置>IP 地址”。

IP 地址 ”页显示 入站出站 IP 地址:

截图显示如何在 Azure 门户中查找 应用服务环境 的入站 IP 地址。

使用自己的 DNS 服务器

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

  1. 在 DNS 服务器中,创建DNS 区域,其名称为 应用服务环境,<app-service-environment-name>.appserviceenvironment.cn。 此过程的后续步骤将此区域称为 区域主区域。

  2. A 中创建 记录,将星号 * 通配符指向由您的 应用服务环境 使用的入站 IP 地址。

  3. A 中创建 记录,将符号 @ 表示法指向您的应用服务环境使用的入站 IP 地址。

  4. zone-main 内创建一个名为 scm 的区域。

  5. A 区域中创建scm记录,该记录将星号*(通配符表示法)指向应用服务环境使用的入站地址。

在Azure DNS专用区域中配置 DNS

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

  1. 创建 Azure 专用 DNS 区域资源。 请使用您的 应用服务环境 的名称替换 <app-service-environment-name>.appserviceenvironment.cn。 此过程的后续步骤将此区域称为 区域主区域。

  2. A中创建一条记录,将星号*(万用符号)指向入站 IP 地址。

  3. A中创建一条记录,指向入站 IP 地址的@符号@表示法。

  4. A中创建一条记录,该记录将*.scm区域表示法指向入站 IP 地址。

应用服务环境的默认域后缀的 DNS 设置不会将应用的访问权限限制为仅你指定的值。 无需对应用服务环境中应用进行任何验证即可设置自定义域名。 如果以后创建一个名为 zava-new-zone.net的区域,则可以将其指向入站 IP 地址。

自定义域名适用于应用请求。 如果自定义域后缀证书包含 scm 的通配符 SAN,则自定义域名也适用于 scm 站点。 可以创建记录 *.scm 并将其指向入站 IP 地址。

发布 Web 应用

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

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

在内部 VIP 应用服务环境 中,发布终结点仅能通过入站地址访问。 如果没有对入站 IP 地址的网络访问权限,则不能在该应用服务环境上发布任何应用。 IDE 还必须能够访问应用服务环境上的入站地址,以便于直接发布到它。

如果没有其他更改,基于 Internet 的 CI 系统(如GitHub和Azure DevOps)不适用于内部 VIP 应用服务环境。 发布终结点无法通过 Internet 访问。 可以通过在虚拟网络中安装自承载发布代理,从Azure DevOps启用发布到内部 VIP 应用服务环境。

为 Web 应用配置存储

你的应用服务环境中的所有应用都拥有 1 TB 的存储空间。 “独立”定价 SKU 中的一个应用服务计划限制为 250 GB。 在应用服务环境中,每个应用服务计划添加 250 GB 的存储,最大限制为 1-TB。 应用服务计划数可能超过 4 个,但没有超出 1 TB 限制的其他存储。

监视应用服务环境

Microsoft 监控和管理 应用服务环境 v3 中的平台基础设施,并根据需要进行扩展。 使用 Azure Monitor 查看为你的 应用服务环境 提供流量服务的前端的以下指标:

Metric Description 实例级视图
前端总数 前端实例数。
CPU 百分比 前端实例中使用的CPU。 Yes
内存百分比 所有前端实例使用的内存。 Yes
磁盘队列长度 存储队列中的读写请求数量。 Yes

若要查看指标:

  1. Azure 门户中,转到 Monitor
  2. 选择 指标
  3. 范围中,选择你的 应用服务环境。
  4. 选择你想查看的指标。 这些指标的默认汇总是 平均值。
  5. 对于CPU 百分比内存百分比磁盘队列长度,选择 应用拆分,然后选择 实例以查看 每个前端的独立系列。

这些指标描述的是前端,而不是你App Service计划中的工人。 继续分别监控你的应用服务套餐和单个应用。 你还可以 配置监控诊断设置 以支持你的场景。 有关完整的指标定义,请参阅Microsoft.Web/hostingEnvironments 支持的指标

检查日志记录情景和消息

你可以与 Azure Monitor 集成以将日志发送到 Azure 存储、Azure 事件中心或 Azure Monitor 日志。

下表显示了可以记录的方案和消息。

应用服务环境状态 消息
子网几乎已满 The specified App Service Environment is in a subnet that is almost out of space. There are {0} remaining addresses. Once these addresses are exhausted, the App Service Environment will not be able to scale.
环境接近实例限制 The specified App Service Environment is approaching the total instance limit of the App Service Environment. It currently contains {0} App Service Plan instances of a maximum 200 instances.
环境已暂停 The specified App Service Environment is suspended. The App Service Environment suspension may be due to an account shortfall or an invalid virtual network configuration. Resolve the root cause and resume the App Service Environment to continue serving traffic.
升级已启动 A platform upgrade to the specified App Service Environment has begun. Expect delays in scaling operations.
升级完成 A platform upgrade to the specified App Service Environment has finished.
创建应用服务计划 消息
Started An App Service plan ({0}) creation has started. Desired state: {1} I{2}v2 workers.
已完成 An App Service plan ({0}) creation has finished. Current state: {1} I{2}v2 workers.
Failed An App Service plan ({0}) creation has failed. This may be due to the App Service Environment operating at peak number of instances, or run out of subnet addresses.
缩放操作 消息
Started An App Service plan ({0}) has begun scaling. Current state: {1} I(2)v2. Desired state: {3} I{4}v2 workers.
已完成 An App Service plan ({0}) has finished scaling. Current state: {1} I{2}v2 workers.
中断 An App Service plan ({0}) was interrupted while scaling. Previous desired state: {1} I{2}v2 workers. New desired state: {3} I{4}v2 workers.
Failed An App Service plan ({0}) has failed to scale. Current state: {1} I{2}v2 workers.

启用诊断日志记录

若要为 Web 应用启用诊断日志记录,请执行以下步骤:

  1. 在 Azure 门户中,转到 Web 应用的 Overview 页。

  2. 在左侧菜单中,选择“ 监视>诊断设置”。

  3. “诊断设置 ”页中,选择“ 添加诊断设置”。

    ‘c1’‘c0’‘sb0’此屏幕截图显示如何在 Azure 门户中为应用服务环境选择“添加诊断设置”。’/sb0’‘/c0’‘/c1’

  4. “诊断设置 ”窗格中,为日志集成提供 诊断设置名称 ,例如 networking-logs

  5. 选择并配置首选 日志。 对于此示例,请选择 “应用服务平台日志”。

  6. 选择首选 目标

  7. 如果希望诊断包含指标数据,请选择 “指标”。

  8. 选择“保存”

诊断设置” 页将刷新以显示添加到列表中的新日志。

如果与 Azure Monitor Logs 集成,可以通过从 应用服务环境 门户选择 Logs,然后针对 AppServicePlatformLogs1 创建查询来查看日志。 仅当应用服务环境具有触发日志的事件时才会发出日志。 如果 应用服务环境 没有此类事件,则不会收集任何日志。 若要快速查看日志示例,请使用应用服务计划执行缩放操作。 然后,可以针对 AppServicePlatformLogs 运行查询以查看生成的日志。

创建警报规则

若要针对 Web 应用日志创建警报,请按照 创建或编辑日志搜索警报规则中的详细说明 - Azure Monitor

下面是为托管 Web 应用创建警报规则的基本步骤:

  1. 在 Azure 门户中,转到应用服务环境的 Monitoring>Alerts 页,然后选择创建警报规则

  2. Scope 选项卡中,确认已将 Scope 级别设置为订阅,并将 resource 设置为 Azure Monitor Logs 工作区。

  3. “条件 ”选项卡中,指定规则的查询并配置条件。

    1. Signal 名称 设置为使用 自定义日志搜索。 此时会打开 “日志 ”窗格。

    2. 在“ 日志 ”窗格中,为警报生成查询。 例如,AppServicePlatformLogs | where ResultDescription contains 'has begun scaling'。 还可以从预定义的查询开始,并根据需要进行修改。 保存查询。

    3. 为规则配置其他条件,例如警报逻辑组中的阈值

  4. 在“ 详细信息 ”选项卡中,提供有关规则的详细信息:

    • 对于 项目详细信息,请确认已按预期指定 订阅资源组

    • 对于 警报规则详细信息,请选择规则 “严重性 ”和 “区域”,然后输入新警报 的名称

    • 对于日志查询 标识,请选择运行日志查询时要使用的标识。

    • (可选)根据需要配置 高级选项

  5. (可选)在“ 创建警报规则 ”窗格中的剩余选项卡上配置选项:

    • 操作:添加或创建操作组。 你可以在操作组中定义对警报的响应,如发送电子邮件或短信。

    • 标记:定义 Web 应用警报规则的标记。

  6. 选择“查看 + 创建”。 确认警报配置正确,然后选择“ 创建”。

配置内部加密

在应用服务环境系统中看不到内部组件或通信。 为了实现更高的吞吐量,默认情况下,在内部组件之间不启用加密。 系统是安全的,因为流量无法被监视和访问。

如果您有数据路径完整加密的合规性要求,可以启用该功能:

  1. 在 Azure 门户中,转到应用服务环境的 Overview 页。

  2. 在左侧菜单中,选择 “设置>配置”。

  3. 应用服务环境配置窗格中,选中Internal encryption复选框,然后选择Apply

&&&&截图显示如何在 Azure 门户中启用 应用服务环境 的内部加密。&&&

此选项会加密内部网络流量、页文件以及工作节点磁盘。

重要

启用加密可能会影响系统性能。 应用服务环境 在更改已完全传播之前处于不稳定状态。 更改的完整传播可能需要几个小时才能完成,具体取决于要更新的实例数。

避免在使用应用服务环境时启用加密。 若要在环境使用时启用加密,请在作完成之前将流量转移到备份。

配置升级首选项

如果有多个应用服务环境,则可能需要在其他环境之前升级一个或多个应用服务环境。

对于每个环境,请配置 升级首选项 设置:

  1. 在Azure门户中,转到应用服务环境的 Overview 页。

  2. 在左侧菜单中,选择 “设置>配置”。

  3. 应用服务环境配置窗格中,选择升级的首选项。

    • Automatic:自动根据您选择的选项升级“应用服务环境”:

      • None:(默认值)在区域的升级过程中自动升级。
      • Early:与区域中的其他资源相比,自动升级具有更高的优先级。
      • Late:会自动升级,但与该区域中的其他资源相比,优先级较低。
    • 手动 当升级可用时收到通知,并在 15 天内启动该过程。 15 天后,升级将与其他区域中的自动升级一起进行。 有关详细信息,请参阅应用服务环境 计划维护的升级偏好设置

  4. 若要保存更改,请选择“ 应用”。

屏幕截图,展示如何在 Azure 门户中设置 应用服务环境 的升级偏好设置

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

删除应用服务环境

按照以下步骤删除“应用服务环境”:

  1. 在 Azure 门户中的 Overview 页上,选择 应用服务环境,选择 Delete

  2. 要确认删除操作,请输入您的 应用服务环境 的名称,然后选择 OK

删除应用服务环境时,还会删除环境中的所有内容和资源。

截图演示如何在 Azure 门户中删除 应用服务环境。