使用 Azure 应用服务迁移助手评估 Web 应用

已完成

在本单元中,我们探讨迁移你自己的服务器中本地托管的 Web 应用程序时可能遇到的潜在困难。 我们将提供有关 Web 应用程序对 Internet Information Services (IIS) 功能的依赖项类型的上下文以及导致问题的原因。 这一重要的背景信息提供了有助于你更好地了解评估需求的上下文。

为什么要将 Web 应用程序移动到 Azure 应用服务?

Azure 应用服务是一个适用于 Web 应用的完全托管的平台。 你可以使用它以最少的设置运行和缩放 Web 应用。 Microsoft 根据需要管理基础结构、操作系统更新、负载平衡和纵向扩展/缩减逻辑。

你可以在简化的用户界面中配置设置,并探索应用程序在运行时的性能,但除此之外,需要你执行的操作较少。 因此,相比在你自己的服务器环境中运行应用程序,Azure 应用服务便成为更有吸引力的替代方案。 在你自己的服务器环境中,你需要处理硬件成本、设置、操作系统安装、更新和配置、服务器软件安装、更新和配置等。

Azure 应用服务的几项功能使它成为强大有用的服务。

借助自动缩放功能,管理员可以设置允许 Web 应用缩放到的最大实例数以及流量阈值。 然后,应用服务中的决策逻辑决定是纵向扩展还是缩减。

借助部署槽位,可通过操作或 DevOps 将 Web 应用程序的新版本部署到可以执行手动或自动集成测试的实时测试或过渡环境。 新版本通过所有测试后,操作就可以“交换槽位”,将过渡应用移动到生产环境中。 如果部署后出现问题,操作可以再次“交换槽位”,将以前的版本移回生产环境。

应用服务诊断提供一个交互式界面,在该界面中,可通过疑难解答来回答一些问题。 该界面会根据应用程序遇到的问题类型生成完整的诊断报告。 此外,可借助运行状况检查、Application Insights 和导航器(交互式依赖关系图)等工具了解问题所在。

什么是 Azure 应用服务迁移助手?

Azure 应用服务迁移助手是帮助组织过渡到云的大型应用程序套件中的应用程序。 迁移助手提供类似向导的引导式用户体验,可执行两项任务:

  1. 它对 Windows Server 上安装的特定 Web 应用执行评估。 它评估 Web 应用的依赖项,以确定是否可以在不修改 Web 应用的情况下迁移到 Azure 应用服务。
  2. 如果评估证明 Web 应用可以迁移,则迁移助手执行迁移。 你需要向迁移助手提供对 Azure 帐户的访问权限、选择要使用的资源组并选择 Web 应用的名称以及其他详细信息。

另外,Azure 应用服务迁移助手将生成一个 Azure 资源管理器模板,你可以使用该模板以更自动化、可重复的方式迁移 Web 应用程序。

为什么要执行评估?

在某些组织中,Web 应用程序最初构建时假定了应用程序始终可以访问 IIS 的低级别功能。 例如,一些开发人员在 ISAPI 筛选器的基础上构建了监视、日志记录和安全性等功能。 在传入请求传递到 ASP.NET 应用程序之前,筛选器提供了对这些请求的访问。 它们还提供了对 ASP.NET 应用程序生成的传出响应的访问。

但是,使用平台即服务 (PaaS) 产品/服务(如 Azure 应用服务)的好处之一是由云提供商(本例中为 Microsoft)管理硬件和软件,因此你不需要做这些事。 从而节约了成本和时间。 但是,这意味着你的应用程序有权访问的 Windows Server 和 IIS 的较低级别功能变少了。 如果应用程序依赖于这些较低级别的功能,可能无法在不进行修改的情况下利用 Azure 应用服务。

评估过程会检查哪些类型的问题?

迁移助手查找 Web 应用程序的特定功能,以确保 Azure 应用服务能够容纳该功能,或者迁移助手能够自动迁移该功能。 下表提供了对迁移助手执行的检查的一些见解:

就绪情况检查 说明
端口绑定 由于 Azure 应用服务只允许使用标准 Web 流量,因此该就绪性情况检查可确保 Web 应用仅在端口 80(对于 HTTP 流量)和 443(对于 HTTPS 流量)上侦听。
协议 由于 Azure 应用服务仅适用于 HTTP 和 HTTPS 协议,因此该就绪情况检查可确保 Web 应用仅处理基于 HTTP 的协议。 例如,如果 Web 应用依赖于 Windows Communication Foundation,则它无法通过此就绪情况检查。
证书 Azure 应用服务可以处理安全证书,但此就绪情况检查会警告你迁移助手不会自动为你迁移证书。
位置标记 使用位置标记,可以将托管在服务器上的所有 Web 应用的配置保存在单个文件中,而不是托管在每个 Web 应用的多个独立 web.config 文件中。 Azure 应用服务应用使用预配置的 IIS applicationhost.config 文件,并且不支持位置标记功能。 应将要迁移的每个 Web 应用的设置移动到单独的 web.config 文件中。 该就绪情况检查标识位置标记的使用。
ISAPI 筛选器 Azure 应用服务对 ISAPI 筛选器提供一些支持,但这取决于 ISAPI 筛选器的实现方式。 迁移助手不会迁移依赖于 ISAPI 筛选器的应用程序。 必须先从应用程序中删除 ISAPI 筛选器,进行迁移,然后在 Azure 应用服务中手动添加 ISAPI 筛选器。
应用程序池 由于 Azure 应用服务为每个应用支持一个应用程序池,因此该就绪情况检查可确保 Web 应用仅依赖于单个应用程序池。
应用程序池标识 Azure 应用服务应用托管在 IIS 工作进程中,该进程在与应用程序池关联的系统托管帐户中运行。 这也是 IIS 的本地安装过程使用的默认标识。 该就绪情况检查可确保 Web 应用配置为以默认标识运行。
身份验证类型 Azure 应用服务应用支持与本地运行的 IIS 上托管的应用不同的一组身份验证类型。 该就绪情况检查可确保 Web 应用配置为使用匿名身份验证。 迁移后,可以在 Azure 应用服务上手动配置身份验证类型。
应用程序设置 该就绪情况检查会警告:web.config 文件中的自定义应用程序设置应移动到“Azure 应用服务”>“配置”>“应用程序设置”。
连接字符串 该就绪情况检查确定存储在 web.config 文件中的数据库连接字符串是否指向本地数据库。 如果是这样,迁移助手将为你提供设置混合连接的选项。
框架 迁移助手仅支持 ASP.NET 和 PHP。 如果应用使用的是其他框架,则无法执行自动迁移。
配置错误 迁移助手可确保本地 IIS 实例配置正确且在扫描时不会返回错误。 该就绪情况检查可确保在迁移之前 Web 应用没有潜在问题。
虚拟目录 Azure 应用服务将所有文件存储在固定的目录结构中。 迁移助手会将文件移动到相应的子目录。 但它不能迁移具有由 UNC 共享支持的虚拟目录的应用程序。

本表中的信息汇总自 Azure 应用服务迁移助手 Wiki

如果评估发现问题怎么办?

如果 Azure 应用服务迁移助手在评估 Web 应用程序时发现问题,你可以:

  • 更新应用程序以替换依赖于 IIS 较低级扩展功能的功能。 此任务可能相对简单些,具体取决于相关功能。 例如,可以使用 Azure Application Insights 替换依赖于 ISAPI 筛选器的自定义日志记录功能。 Application Insights 只需要向应用程序添加几行代码,便可提供大量可操作的报表。
  • 通过暂时禁用阻止迁移的功能来更新应用程序。 迁移助手可以指导执行此操作。
  • 按原样将应用程序部署到 Azure 虚拟机。 虽然你不会获得使用 Azure 应用服务的好处,并且需要维护操作系统,但你不再需要维护硬件。 还将在一个位置执行对所有 Web 服务的管理。

Azure 应用服务迁移助手 Wiki 包含评估期间发现的许多问题的潜在修正步骤。

回顾

以下是本单元中最重要的内容:

  • Azure 应用服务迁移助手会查找本地 Web 应用与 Azure 应用服务中所支持内容之间的不兼容性。 如果出现问题,通常有一种方法可以解决本地问题(或禁用导致问题的功能)。 然后,你可以重试迁移助手。
  • 如果没有妨碍性问题,迁移助手会将 Web 应用迁移到 Azure 应用服务。