你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将本地 Linux 应用程序重新托管到 Azure VM

本文介绍虚构公司 Contoso 如何使用 Azure 基础架构即服务 (IaaS) 虚拟机 (VM) 重新托管一个两层基于 LAMP 的应用程序。

本示例中使用的 osTicket 服务台应用程序以开源软件的形式提供。 如果是出于你自己的测试目的使用,可以从 GitHub 下载。

业务驱动因素

IT 领导团队与其业务合作伙伴密切协作,以了解合作伙伴希望在本次迁移中实现的目标:

  • 满足业务增长需求。 Contoso 在不断壮大,这给本地系统和基础结构造成了压力。
  • 限制风险。 服务台应用程序对于 Contoso 业务至关重要。 Contoso 希望在不遭受任何风险的情况下将其迁移到 Azure。
  • 扩展。 Contoso 不希望立即更改应用程序。 它希望确保应用程序稳定。

迁移目标

Contoso 云团队已确定此迁移的目标,以确定最佳迁移方法:

  • 迁移后,Azure 中应用程序的功能应当能够与公司当前在本地 VMware 环境中的功能媲美。 应用程序在云中的重要性将与在本地一样。
  • Contoso 不打算投资此应用程序。 该应用对业务至关重要,但 Contoso 目前只希望将其安全地迁移到云端。
  • Contoso 不想更改此应用程序的操作模型。 而是希望按当前的方式与云中的应用程序进行交互。
  • Contoso 不想更改应用程序的功能。 只有应用程序位置会更改。
  • 完成几个 Windows 应用程序迁移后,Contoso 想要了解如何在 Azure 中使用基于 Linux 的基础结构。

解决方案设计

确定目标和要求后,Contoso 将设计和查看部署解决方案,并确定迁移过程。 此外,Contoso 会还确定将用于迁移的 Azure 服务。

当前应用程序

  • osTicket 应用程序跨两个 VM(OSTICKETWEBOSTICKETMYSQL)分层。
  • 这两个 VM 位于 VMware ESXi 主机 contosohost1.contoso.com(版本 6.5)上。
  • VMware 环境由 vCenter Server 6.5 (vcenter.contoso.com) 托管且在 VM 上运行。
  • Contoso 有本地数据中心 (contoso-datacenter),其中包含本地域控制器 (contosodc1)。

建议的体系结构

  • 由于应用程序是生产工作负载,Azure 中的 VM 将驻留在生产资源组 ContosoRG 中。
  • VM 将迁移到主要区域(美国东部 2),并置于生产网络 (VNET-PROD-EUS2) 中:
    • Web VM 将驻留在前端子网 (PROD-FE-EUS2) 中。
    • 数据库 VM 将驻留在数据库子网 (PROD-DB-EUS2) 中。
  • 迁移完成后,Contoso 数据中心的本地 VM 将停止使用。

此图显示方案体系结构。

解决方案评审

Contoso 通过将利弊清单放置在一起来评估其建议的设计。

注意事项 详细信息
优点 无需更改这两个应用程序 VM 即可将它们移到 Azure,因此迁移过程非常简单。

由于 Contoso 对两个应用程序 VM 都使用直接迁移方法,因此无需为应用程序数据库使用特殊的配置或迁移工具。

Contoso 将保留对 Azure 中应用程序 VM 的完全控制权。

应用程序 VM 运行 Ubuntu 16.04-TLS,这是认可的 Linux 分发版。 详细了解 Azure 上认可的 Linux 发行版
缺点 应用程序的 Web 层和数据层仍然是单点故障转移。

Contoso 需要继续支持用作 Azure VM 的应用程序,而不是迁移到 Azure 应用服务和 Azure Database for MySQL 等托管服务。

Contoso 意识到,直接迁移 VM 要简单很多,公司并没有充分利用 Azure Database for MySQL 提供的功能。 这些功能包括内置的高可用性、可预测的性能、简单的缩放、自动备份和内置安全性。

迁移过程

Contoso 将按如下方式完成迁移进程:

  • Contoso 首先为“Azure Migrate: 服务器迁移”准备并设置 Azure 组件,并准备本地 VMware 基础结构。
  • 公司已部署 Azure 基础结构,因此只需通过“Azure Migrate: 服务器迁移”工具配置 VM 的复制即可。
  • 待一切准备就绪后,Contoso 可以开始复制 VM。
  • 复制已启用并运行之后,Contoso 通过将 VM 故障转移到 Azure 来实现迁移。

此图显示迁移流程。

Azure 服务

服务 说明 成本
Azure Migrate:服务器迁移 该服务协调和管理本地应用程序和工作负载以及 Amazon Web Services (AWS) 和 Google Cloud Platform (GCP) VM 实例的迁移。 在复制到 Azure 的过程中,会产生 Azure 存储费用。 迁移时会创建 Azure VM,因此会产生费用。 详细了解费用和定价

先决条件

对于此方案,Contoso 需具备以下项。

要求 详细信息
Azure 订阅 在前面的系列文章中,Contoso 已创建订阅。 如果还没有 Azure 订阅,可以创建一个免费帐户

如果创建的是免费帐户,则你是自己的订阅的管理员,可以执行所有操作。

如果你使用现有订阅并且不是管理员,则请求管理员为你分配“所有者”或“参与者”权限。

如果需要更为细化的权限,请参阅使用 Azure 基于角色的访问控制 (Azure RBAC) 管理 Site Recovery 访问权限
Azure 基础结构 了解 Contoso 如何设置 Azure 基础结构

详细了解“Azure Migrate: 服务器迁移”的具体先决条件
本地服务器 本地 vCenter Server 应运行版本 5.5、6.0 或 6.5。

运行版本 5.5、6.0 或 6.5 的 ESXi 主机。

ESXi 主机上运行的一个或多个 VMware VM。
本地 VM 查看获准在 Azure 上运行的 Linux 发行版

方案步骤

下面是 Contoso 完成迁移的步骤:

  • 步骤 1:针对“Azure Migrate: 服务器迁移”准备 Azure。 向 Azure Migrate 项目添加“Azure Migrate: 服务器迁移”工具。
  • 步骤 2:针对“Azure Migrate: 服务器迁移”迁移准备本地 VMware。 准备用于发现 VM 的帐户,并准备在迁移后连接到 Azure VM。
  • 步骤 3:复制 VM。 设置复制并开始将 VM 复制到 Azure 存储。
  • 步骤 4:使用“Azure Migrate: 服务器迁移”迁移 VM。 运行测试迁移以确保一切正常工作,然后运行迁移将 VM 移动到 Azure。

步骤 1:针对“Azure Migrate: 服务器迁移”工具准备 Azure

Contoso 需具备以下 Azure 组件才能将 VM 迁移到 Azure:

  • 一个虚拟网络,在迁移过程中创建 Azure VM 时,这些 Azure VM 将位于该网络中。
  • 预配的“Azure Migrate: 服务器迁移”工具。

它们按如下方式设置这些组件:

  1. 设置网络。 Contoso 在部署 Azure 基础结构时,已设置了一个可用于“Azure Migrate: 服务器迁移”的网络

    • SmartHotel360 应用程序是一个生产应用程序。 VM 将迁移到主要区域 (East US 2) 中的 Azure 生产网络 (VNET-PROD-EUS2)。
    • 这两个 VM 都将置于供生产资源使用的 ContosoRG 资源组中。
    • 应用程序前端 VM (OSTICKETWEB) 将迁移到生产网络中的前端子网 (PROD-FE-EUS2)。
    • 应用程序数据库 VM (OSTICKETMYSQL) 将迁移到生产网络中的数据库子网 (PROD-DB-EUS2)。
  2. 预配“Azure Migrate: 服务器迁移”工具。 网络和存储帐户就绪后,Contoso 现在创建恢复服务保管库 (ContosoMigrationVault) 并将其放置在主要区域 (East US 2) 的 ContosoFailoverRG 资源组中。

    显示“Azure Migrate: 服务器迁移工具”的屏幕截图

需要更多帮助?

了解如何设置 Azure Migrate: 服务器迁移工具

步骤 2:针对“Azure Migrate: 服务器迁移”迁移准备本地 VMware

迁移到 Azure 之后,Contoso 希望能够连接到 Azure 中复制的 VM。 Contoso 管理员需要执行几项操作:

  • 为了通过 Internet 访问 Azure VM,需在迁移之前在本地 Linux VM 上启用 SSH。 对于 Ubuntu,可使用以下命令完成此步骤:sudo apt-get ssh install -y
  • 安装 Azure Linux 代理
  • 运行迁移后,可以选中“启动诊断”查看 VM 的屏幕截图。
  • 如果此操作无效,则需要检查 VM 是否正在运行,并查看故障排除提示

需要更多帮助?

了解如何为迁移准备 VM

步骤 3:复制本地 VM

在迁移到 Azure 之前,Contoso 管理员需要设置并启用复制。

完成发现后,开始将 VMware VM 复制到 Azure。

  1. 在 Azure Migrate 项目中,转到“服务器”>“Azure Migrate: 服务器迁移”,然后选择“复制”。

    屏幕截图显示“复制”选项。

  2. 在“复制”>“源设置”>“你的计算机是否已虚拟化”中,选择“是,使用 VMware vSphere”。

  3. 在“本地设备”中,选择已设置的 Azure Migrate 设备的名称,然后选择“确定”。

    显示“源设置”选项卡的屏幕截图。

  4. 在“虚拟机”中,选择要复制的计算机。

    • 如果已针对 VM 运行评估,则可以应用评估结果中提供的 VM 大小和磁盘类型(高级/标准)建议。 在“从 Azure Migrate 评估导入迁移设置?”中选择“是”选项。
    • 如果你未运行评估,或者不想要使用评估设置,请选择“否”选项。
    • 如果已选择使用评估,请选择 VM 组和评估名称。

    屏幕截图显示如何选择评估。

  5. 在“虚拟机”中,根据需要搜索 VM,并选择要迁移的每个 VM。 然后选择“下一步: 目标设置”。

  6. 在“目标设置”中,选择要迁移到的订阅和目标区域。 指定迁移后 Azure VM 所在的资源组。 在“虚拟网络”中,选择迁移之后 Azure VM 要加入到的 Azure 虚拟网络/子网。

  7. 在“Azure 混合权益”中:

    • 如果你不想要应用 Azure 混合权益,请选择“否”。 然后,选择“下一步”。
    • 如果 Windows Server 计算机享有有效软件保障或 Windows Server 订阅的权益,并且你想要将此权益应用到所要迁移的计算机,请选择“是”。 然后,选择“下一步”。
  8. 在“计算”中,查看 VM 名称、大小、OS 磁盘类型和可用性集。 VM 必须符合 Azure 要求

    • VM 大小:如果你正在使用评估建议,则 VM 大小下拉列表将包含建议的大小。 否则,Azure Migrate 会根据 Azure 订阅中最接近的匹配项选择大小。 或者,请在“Azure VM 大小”中的手动选择一个大小。
    • OS 磁盘:为 VM 指定 OS(启动)磁盘。 OS 磁盘是包含操作系统引导加载程序和安装程序的磁盘。
    • 可用性集:如果迁移后 VM 应位于某个 Azure 可用性集中,请指定该集。 该集必须位于为迁移指定的目标资源组中。
  9. 在“磁盘”中,指定是否应将 VM 磁盘复制到 Azure。 在 Azure 中选择磁盘类型(标准 SSD/HDD 或高级 SSD)。 然后,选择“下一步”。

    • 可以从复制中排除磁盘。
    • 如果你排除了磁盘,则在迁移后它们将不会出现在 Azure VM 中。
  10. 在“查看 + 启动复制”中,查看设置。 然后选择“复制”以启动服务器的初始复制。

注意

在复制开始之前,随时可以在“管理”>“复制计算机”中更新复制设置。 开始复制后无法更改设置。

步骤 4:迁移 VM

Contoso 管理员运行快速测试迁移,然后运行迁移以移动 VM。

运行测试迁移

  1. 在“迁移目标”>“服务器”>“Azure Migrate: 服务器迁移”中,选择“测试已迁移的服务器”。

    屏幕截图显示“测试已迁移的服务器”选项。

  2. 选择并按住(或右键单击)VM 进行测试。 然后选择“测试迁移”。

    屏幕截图显示“测试迁移”项。

  3. 在“测试迁移”中,选择 Azure VM 在迁移后所在的 Azure 虚拟网络。 建议使用非生产虚拟网络。

  4. “测试迁移”作业随即启动。 在门户通知中监视该作业。

  5. 迁移完成后,在 Azure 门户上的“虚拟机”中查看已迁移的 Azure VM。 计算机名称带有 -Test 后缀。

  6. 测试完成后,在“复制计算机”中选择并按住(或右键单击)该 Azure VM。 然后选择“清理测试迁移”。

    屏幕截图显示“清理测试迁移”项。

迁移 VM

Contoso 管理员现在运行完整迁移来完成移动。

  1. 在 Azure Migrate 项目中,转到“服务器”>“Azure Migrate: 服务器迁移”,然后选择“复制服务器”。

    屏幕截图显示“复制服务器”选项。

  2. 在“复制计算机”中,选择并按住(或右键单击)VM,然后选择“迁移”。

  3. 在“迁移”>“关闭虚拟机并执行计划迁移(不会丢失任何数据)”中,选择“是”>“确定”。

    • 默认情况下,Azure Migrate 将关闭本地 VM,并运行按需复制,以同步自上次复制发生以来发生的任何 VM 更改。 此操作可以确保不会丢失数据。
    • 如果你不想要关闭 VM,请选择“否”。
  4. 随即会针对该 VM 启动一个迁移作业。 在 Azure 通知中跟踪该作业。

  5. 该作业完成后,可以从“虚拟机”页查看和管理该 VM。

将 VM 连接到数据库

在迁移过程的最后,Contoso 管理员更新应用程序的连接字符串,使其指向 OSTICKETMYSQL VM 上运行的应用程序数据库。

  1. 使用 PuTTY 或其他 SSH 客户端与 OSTICKETWEB VM 建立 SSH 连接。 由于 VM 为专用,因此使用专用 IP 地址进行连接。

    屏幕截图显示“连接到虚拟机”窗格。

    屏幕截图显示连接到数据库。

  2. 请确保 OSTICKETWEB VM 可以与 OSTICKETMYSQL VM 进行通信。 当前,已使用本地 IP 地址 172.16.0.43 对配置进行硬编码。

    更新前:

    屏幕截图显示更新之前的 IP。

    更新后:

    屏幕截图显示更新之后的 IP。

  3. 使用 systemctl restart apache2 重启服务。

    屏幕截图显示服务重启。

  4. 最后,在某一 Contoso 域控制器上更新 OSTICKETWEBOSTICKETMYSQL 的 DNS 记录。

    屏幕截图显示如何更新 DNS 记录。

    屏幕截图显示如何更新 DNS 记录。

需要更多帮助?

迁移后的清理

迁移完成后,osTicket 应用层将在 Azure VM 上运行。

现在,Contoso 需要执行以下任务:

  • 从 vCenter 清单中删除本地 VM。
  • 从本地备份作业中删除本地 VM。
  • 更新内部文档以显示 OSTICKETWEBOSTICKETMYSQL 的新位置以及 IP 地址。
  • 查看与 VM 进行交互的任何资源。 更新任何相关设置或文档以反映新配置。
  • Contoso 结合使用 Azure Migrate 服务与管理 VM 来评估要迁移的 VM。 管理员应将迁移 VM 和 Web VM 从 VMware ESXi 服务器中删除。

查看部署

在应用程序正在运行的情况下,Contoso 需要完全操作和保护其新的基础结构。

安全性

Contoso 安全团队会审查 OSTICKETWEBOSTICKETMYSQL VM,确定是否存在任何安全问题。

  • 团队需审查 VM 的网络安全组 (NSG),以控制访问。 NSG 用于确保仅允许到应用程序的流量可以通过。
  • 团队还考虑使用 Azure 磁盘加密和 Azure Key Vault 保护 VM 磁盘上的数据。

有关详细信息,请参阅有关 Azure 中 IaaS 工作负载的安全性最佳做法

业务连续性和灾难恢复

对于业务连续性和灾难恢复,Contoso 采取了以下措施:

许可和成本优化