你当前正在访问 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(
OSTICKETWEB
和OSTICKETMYSQL
)分层。 - 这两个 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
) 中。
- Web VM 将驻留在前端子网 (
- 迁移完成后,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: 服务器迁移”工具。
它们按如下方式设置这些组件:
设置网络。 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
)。
- SmartHotel360 应用程序是一个生产应用程序。 VM 将迁移到主要区域 (
预配“Azure Migrate: 服务器迁移”工具。 网络和存储帐户就绪后,Contoso 现在创建恢复服务保管库 (
ContosoMigrationVault
) 并将其放置在主要区域 (East US 2
) 的ContosoFailoverRG
资源组中。
需要更多帮助?
了解如何设置 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。
在 Azure Migrate 项目中,转到“服务器”>“Azure Migrate: 服务器迁移”,然后选择“复制”。
在“复制”>“源设置”>“你的计算机是否已虚拟化”中,选择“是,使用 VMware vSphere”。
在“本地设备”中,选择已设置的 Azure Migrate 设备的名称,然后选择“确定”。
在“虚拟机”中,选择要复制的计算机。
- 如果已针对 VM 运行评估,则可以应用评估结果中提供的 VM 大小和磁盘类型(高级/标准)建议。 在“从 Azure Migrate 评估导入迁移设置?”中选择“是”选项。
- 如果你未运行评估,或者不想要使用评估设置,请选择“否”选项。
- 如果已选择使用评估,请选择 VM 组和评估名称。
在“虚拟机”中,根据需要搜索 VM,并选择要迁移的每个 VM。 然后选择“下一步: 目标设置”。
在“目标设置”中,选择要迁移到的订阅和目标区域。 指定迁移后 Azure VM 所在的资源组。 在“虚拟网络”中,选择迁移之后 Azure VM 要加入到的 Azure 虚拟网络/子网。
在“Azure 混合权益”中:
- 如果你不想要应用 Azure 混合权益,请选择“否”。 然后,选择“下一步”。
- 如果 Windows Server 计算机享有有效软件保障或 Windows Server 订阅的权益,并且你想要将此权益应用到所要迁移的计算机,请选择“是”。 然后,选择“下一步”。
在“计算”中,查看 VM 名称、大小、OS 磁盘类型和可用性集。 VM 必须符合 Azure 要求。
- VM 大小:如果你正在使用评估建议,则 VM 大小下拉列表将包含建议的大小。 否则,Azure Migrate 会根据 Azure 订阅中最接近的匹配项选择大小。 或者,请在“Azure VM 大小”中的手动选择一个大小。
- OS 磁盘:为 VM 指定 OS(启动)磁盘。 OS 磁盘是包含操作系统引导加载程序和安装程序的磁盘。
- 可用性集:如果迁移后 VM 应位于某个 Azure 可用性集中,请指定该集。 该集必须位于为迁移指定的目标资源组中。
在“磁盘”中,指定是否应将 VM 磁盘复制到 Azure。 在 Azure 中选择磁盘类型(标准 SSD/HDD 或高级 SSD)。 然后,选择“下一步”。
- 可以从复制中排除磁盘。
- 如果你排除了磁盘,则在迁移后它们将不会出现在 Azure VM 中。
在“查看 + 启动复制”中,查看设置。 然后选择“复制”以启动服务器的初始复制。
注意
在复制开始之前,随时可以在“管理”>“复制计算机”中更新复制设置。 开始复制后无法更改设置。
步骤 4:迁移 VM
Contoso 管理员运行快速测试迁移,然后运行迁移以移动 VM。
运行测试迁移
在“迁移目标”>“服务器”>“Azure Migrate: 服务器迁移”中,选择“测试已迁移的服务器”。
选择并按住(或右键单击)VM 进行测试。 然后选择“测试迁移”。
在“测试迁移”中,选择 Azure VM 在迁移后所在的 Azure 虚拟网络。 建议使用非生产虚拟网络。
“测试迁移”作业随即启动。 在门户通知中监视该作业。
迁移完成后,在 Azure 门户上的“虚拟机”中查看已迁移的 Azure VM。 计算机名称带有 -Test 后缀。
测试完成后,在“复制计算机”中选择并按住(或右键单击)该 Azure VM。 然后选择“清理测试迁移”。
迁移 VM
Contoso 管理员现在运行完整迁移来完成移动。
在 Azure Migrate 项目中,转到“服务器”>“Azure Migrate: 服务器迁移”,然后选择“复制服务器”。
在“复制计算机”中,选择并按住(或右键单击)VM,然后选择“迁移”。
在“迁移”>“关闭虚拟机并执行计划迁移(不会丢失任何数据)”中,选择“是”>“确定”。
- 默认情况下,Azure Migrate 将关闭本地 VM,并运行按需复制,以同步自上次复制发生以来发生的任何 VM 更改。 此操作可以确保不会丢失数据。
- 如果你不想要关闭 VM,请选择“否”。
随即会针对该 VM 启动一个迁移作业。 在 Azure 通知中跟踪该作业。
该作业完成后,可以从“虚拟机”页查看和管理该 VM。
将 VM 连接到数据库
在迁移过程的最后,Contoso 管理员更新应用程序的连接字符串,使其指向 OSTICKETMYSQL
VM 上运行的应用程序数据库。
使用 PuTTY 或其他 SSH 客户端与
OSTICKETWEB
VM 建立 SSH 连接。 由于 VM 为专用,因此使用专用 IP 地址进行连接。请确保
OSTICKETWEB
VM 可以与OSTICKETMYSQL
VM 进行通信。 当前,已使用本地 IP 地址172.16.0.43
对配置进行硬编码。更新前:
更新后:
使用 systemctl restart apache2 重启服务。
最后,在某一 Contoso 域控制器上更新
OSTICKETWEB
和OSTICKETMYSQL
的 DNS 记录。
需要更多帮助?
- 了解如何运行测试迁移。
- 了解如何将 VM 迁移到 Azure。
迁移后的清理
迁移完成后,osTicket 应用层将在 Azure VM 上运行。
现在,Contoso 需要执行以下任务:
- 从 vCenter 清单中删除本地 VM。
- 从本地备份作业中删除本地 VM。
- 更新内部文档以显示
OSTICKETWEB
和OSTICKETMYSQL
的新位置以及 IP 地址。 - 查看与 VM 进行交互的任何资源。 更新任何相关设置或文档以反映新配置。
- Contoso 结合使用 Azure Migrate 服务与管理 VM 来评估要迁移的 VM。 管理员应将迁移 VM 和 Web VM 从 VMware ESXi 服务器中删除。
查看部署
在应用程序正在运行的情况下,Contoso 需要完全操作和保护其新的基础结构。
安全性
Contoso 安全团队会审查 OSTICKETWEB
和 OSTICKETMYSQL
VM,确定是否存在任何安全问题。
- 团队需审查 VM 的网络安全组 (NSG),以控制访问。 NSG 用于确保仅允许到应用程序的流量可以通过。
- 团队还考虑使用 Azure 磁盘加密和 Azure Key Vault 保护 VM 磁盘上的数据。
有关详细信息,请参阅有关 Azure 中 IaaS 工作负载的安全性最佳做法。
业务连续性和灾难恢复
对于业务连续性和灾难恢复,Contoso 采取了以下措施:
确保数据安全。 Contoso 使用 Azure VM 备份来备份 VM 上的数据。
使应用程序保持正常运行。 Contoso 通过使用 Site Recovery 将 Azure 中的应用程序 VM 复制到次要区域。 若要了解详细信息,请参阅快速入门:为 Azure VM 设置到 Azure 次要区域的灾难恢复。
许可和成本优化
- 部署资源后,Contoso 分配 Azure 基础结构部署期间定义的 Azure 标记。
- Contoso 的 Ubuntu 服务器没有许可问题。
- Contoso 将使用 Azure 成本管理 + 计费,以确保公司保持在 IT 领导层制定的预算范围内。