我刚刚开始设置我们最初使用本地虚拟机执行的功能,现在通过 Google Cloud Platform 执行,但其中的一些功能和术语让我感到困惑。
我需要启动一个批量操作,其中多个虚拟机启动并通过 RESTful API 相互交互大约 10 分钟,然后关闭。我们使用可抢占的现货虚拟机来节省成本,因此故障情况高度相关且可能频繁发生。
我们正在关注有状态托管实例组对于我们的用例:
有状态 MIG 适用于具有状态数据或配置的应用程序,例如:
...
使用检查点来批量处理工作负载。通过此配置,您可以保留长时间运行计算的检查点结果,以应对工作负载或虚拟机故障或实例抢占。有状态 MIG 可以重新创建发生故障的机器,同时保留其数据磁盘,以便您的计算可以从最后一个检查点继续进行。
我们的用例的性质是,任何一台机器被抢占都意味着整个批次都需要重新启动,这似乎很容易通过 GCP Compute Engine API 实现。我遇到的问题是 GCP 的文档在谈到“检查点”和“快照”的概念时是什么意思,因为它一直将事物称为“磁盘状态”,对我来说这意味着不是内存/全机状态。
重申上面引用的文献:
有状态 MIG 可以重建发生故障的机器,而保留其数据磁盘,以便您的计算可以从最后一个检查点继续。
如果只是这磁盘已创建快照/检查点,这意味着只会恢复磁盘上捕获的进度,而不会恢复内存中的进度,对吗?虚拟机仍将需要经历引导/启动过程,以及使应用程序运行所需的任何其他引导后初始化?它不像 Docker 映像,我只需保存一个映像,然后从确切的机器状态轻松启动?
或者这里的术语是否实际上意味着完整的机器状态实际上被保留了,就像传统的 VM 快照一样?
答案1
为了澄清您对有状态 MIG 的疑虑;通常,当您部署托管实例组时,如果虚拟机崩溃或托管实例停止运行,这将尝试重新创建您的实例。并且,如果此状态更改不是由 MIG 发起的,则 MIG 会根据您在创建 MIG 时为虚拟机指定的配置自动重新创建该实例,或者将尝试根据在创建 MIG 之前为您创建的实例模板重新创建实例。因此,基于此,有状态 MIG 会在计算机重启、重新创建、自动修复和更新事件中保留每个实例的唯一状态(实例名称、附加的持久磁盘和元数据)。关于快照和磁盘状态,有状态 MIG 将实例模板中定义的配置磁盘变为实例的有状态(通过将这些磁盘添加到每个实例的配置中)或变为无状态(通过从每个实例的配置中删除这些磁盘)。因此,您可以在 MIG 中部署有状态磁盘,以便即使在磁盘的 VM 重新创建状态的情况下也能保留磁盘上的数据。您可以按照此操作指导在 MIG 中部署有状态磁盘。还建议部署有状态持久性磁盘然后你可以配置快照如果您需要的话,可以从此磁盘获取。