作为云架构师或 IT 管理员,当您计划在 Compute Engine 中运行应用时,您需要设计可高效预配和操作的虚拟机拓扑。
Compute Engine 提供一系列部署选项:例如,您可以将自己管理的一组虚拟机部署为单个实体,也可以将虚拟机作为单独的资源进行预配和管理。每种方法都有其优点和局限性。如何选择最佳部署策略?
- 首先评估应用的主要要求。
- 查看可用的部署选项及其相对优点。
- 选择满足您的要求并可充分利用 Compute Engine 功能的策略。
评估您的工作负载
使用以下问题可以分析您要部署的工作负载的关键要求。您的答案将帮助您将每个部署选项(在下一部分中列出)的功能映射到工作负载的要求。
- 应用状态 - 应用是否为有状态应用? - 有状态应用存储某些数据(例如客户端或会话 ID),直到不再需要这些数据为止。例如,在在线购物应用中,购物车服务可能会存储用户继续购物时添加或移除的商品的详细信息,并在用户启动结账过程时保留最终的购物车状态。
- 无状态应用无需存储任何客户端、事务或会话数据。 例如,网络服务器可能会在传送客户端请求的内容后关闭会话。
 - 如需详细了解有状态应用和无状态应用,请参阅有状态工作负载与无状态工作负载之间的区别。 
- 您的虚拟机重新启动时或 Compute Engine 重新创建(自动修复)虚拟机时,是否应该保留任何特定于实例的元数据? 
 
- 预配 - 虚拟机是否应该混合使用机器类型或映像?例如,某些虚拟机是否需要针对内存进行了优化机器类型,而其他虚拟机是否使用通用机器类型?
- 基础架构是否应根据负载变化自动扩缩,以便在费用和响应时间之间保持最佳平衡?
- 所有虚拟机是否可以在单个可用区、VPC 网络和子网中运行?
- 应用是否应与某些其他资源在同一可用区中运行?例如,应用是否需要与数据库的低延迟连接?
 
- 操作 - 是否要以单个组的形式管理虚拟机?例如,您是否想要跨所有虚拟机自动滚动更新应用?
- 您是需要使用自定义工具还是第三方工具来管理虚拟机?
- 您是否需要控制如何处理失败的虚拟机?例如,如果虚拟机发生故障,您是否希望在确定故障的根本原因时使虚拟机保持停止状态?
- 您是否需要控制虚拟机的开始-停止-暂停-恢复序列或时间表吗?例如,为了节省费用,您打算在周末或一天中的某些时段停止运行虚拟机吗?
 
- 弹性 - 应用是否需要针对可用区故障的防护?换句话说,如果某个可用区发生故障,您是否希望应用继续处理来自该区域中其他可用区的虚拟机请求?
- 如果虚拟机因任何原因停止或崩溃,或者应用未响应请求,Compute Engine 是否应自动重新创建虚拟机?
- 应用是否需要主机虚拟机的固定内部或外部 IP 地址?
 
现在您已经评估了需求,接下来请了解 Compute Engine 提供的部署选项。
查看可用的部署选项
查看并了解将工作负载部署到 Compute Engine 时可考虑的选项的特性和相对优势。
- 独立虚拟机
- 如果采用此选项,您可以为预配的每个虚拟机单独选择机器类型、映像、磁盘和其他特性。而且您可以将虚拟机作为单独的资源进行管理。
- 非代管式实例组
- 您可以预配独立的虚拟机,并将它们添加到实例组。然后,您可以将非代管式实例组用作负载均衡器的后端。
- 代管式实例组 (MIG)
- MIG 是使用实例模板预配的一组相同或相似配置的实例。 - 您可以将 MIG 设为有状态,以便保留特定磁盘或元数据。 
- 对于无状态 MIG,您可以启用自动扩缩并配置扩缩政策。 
- 创建 MIG 时,您可以选择在单个可用区中部署这些虚拟机,也可以将这些虚拟机分布在一个区域内的多个可用区中,以实现高可用性。 
 
下表汇总了每个部署选项的主要功能。
| 能力 | 独立虚拟机 | 非代管式实例组 | 有状态 MIG | 无状态 MIG | 
|---|---|---|---|---|
| 基于模板预配一组虚拟机 | ||||
| 机器类型和映像的组合 | ||||
| 固定的内部或外部 IP 地址 | ||||
| 自动修复失败的虚拟机 | ||||
| 控制虚拟机启动-停止和暂停-恢复操作 | ||||
| 将一组虚拟机设置为负载均衡器后端 | ||||
| 磁盘保留和元数据保留(适用于有状态工作负载) | ||||
| 特定虚拟机的受控更新 | ||||
| 自动滚动更新所有虚拟机 | ||||
| 自动(和预测)横向扩缩 | 
下图并排展示了示例部署以帮助您了解主要区别。
| 独立虚拟机 | 有状态 MIG | 无状态 MIG | 
|---|---|---|
| 本示例显示了单独创建的三个虚拟机。 | 此示例显示了包含三个类似配置的虚拟机的 MIG,这些虚拟机是使用实例模板预配的。 | 此示例显示一个包含三个相同虚拟机的 MIG,这些虚拟机是使用实例模板预配的。 | 
|  |  |  | 
| 
 | 
 | 
 | 
现在,您已评估工作负载、查看 Compute Engine 提供的部署选项并已准备好选择部署方法。
选择部署策略
此处讨论的建议基于特定工作负载特性与每个 Compute Engine 部署选项的功能之间的映射。
使用以下决策流程。如果您更喜欢直观指南,请参阅本文档后面的决策树。
- 在独立虚拟机和实例组之间进行选择。 - 要求 - 推荐的部署策略 - 在您的工作负载中,以下至少一个要求是必要的。 - 应用必须在混合使用机器类型或映像的虚拟机上运行。
- 应用需要主机虚拟机的固定内部或外部 IP 地址。
- 您需要控制处理失败的虚拟机。
- 您需要控制虚拟机的启动-停止或暂停-恢复操作。
- 您需要使用自定义脚本或第三方工具来预配和移除虚拟机。
 - 选择独立的虚拟机。 - 如果所有独立虚拟机可以在单个可用区、VPC 网络和子网中运行,请考虑将虚拟机添加到非代管式实例组。然后,您可以将非代管式实例组用作负载均衡器的后端。 - 跳过此决策流程的其余部分。 - 上述要求均不适用于您的用例。 - 使用 MIG 来设置易于管理、可用性高且可扩缩的 Compute Engine 拓扑。 - 继续下一步。 
- 在有状态 MIG 和无状态 MIG之间选择。 - 要求 - 推荐的 MIG 类型 - 应用需要保留磁盘和元数据;也就是说,应用是有状态的。 - 选择有状态 MIG,并配置 Compute Engine 应在虚拟机重新创建、自动修复和更新等破坏性事件期间保留的磁盘。 - 继续下一步。 - 应用不是有状态应用。 - 选择无状态 MIG,并充分利用自动扩缩功能。在中断操作期间,Compute Engine 会根据实例模板重新创建磁盘。 - 继续下一步。 
- 选择可用区级 MIG 和区域级 MIG。 - 要求 - 推荐的 MIG 类型 - 应用必须在单个可用区中运行,或者避免可用区故障不是基本要求。 - 选择可用区级 MIG。 - 即使发生可用区故障,应用也必须继续运行。 - 选择区域级 MIG。 
决策树
下图指导您在确定 Compute Engine 部署策略时考虑的因素:
后续步骤
- 详细了解实例模板。
- 了解有状态 MIG 的工作原理。
- 详细了解区域 MIG。
- 创建代管式实例组 (MIG)。
- 自动扩缩实例组。
- 将现有工作负载迁移到有状态 MIG。