如何在 Google Compute Engine 实例重新启动或迁移时接收通知?

6

我希望每当我的Compute Engine虚拟机重新启动时,能够收到电子邮件(或其他形式的通知),这样我就可以连接并查看所有内容是否已经正确地重新启动(并生成一个实例可靠性的总体印象)

我已经查看了Google Cloud Console中的所有选项,但没有找到任何东西...

2个回答

4
如果您还没有阅读过Live Migration文档,建议先了解一般的实时迁移工作原理。

实时迁移

Google提供控制选项来设置实例可用性策略, 这也让您可以控制实时迁移的方面。在这里,他们还提到了如何确定何时进行实时迁移的内容。

By default, standard instances are set to live migrate, where Google Compute Engine automatically migrates your instance away from an infrastructure maintenance event, and your instance remains running during the migration. Your instance might experience a short period of decreased performance, although generally most instances should not notice any difference. This is ideal for instances that require constant uptime, and can tolerate a short period of decreased performance.

When Google Compute Engine migrates your instance, it reports a system event that is published to the list of zone operations. You can review this event by performing a gcloud compute operations list --zones ZONE request or by viewing the list of operations in the Google Cloud Platform Console, or through an API request. The event will appear with the following text:

compute.instances.migrateOnHostMaintenance

获取实时迁移通知

此外,您可以在虚拟机上直接检测到维护事件即将发生。

元数据服务器通过调度/目录和维护事件属性提供有关实例的调度选项和设置的信息。您可以使用这些属性了解虚拟机实例的调度选项,并使用此元数据在属性上通知您何时将发生维护事件。默认情况下,所有虚拟机实例都设置为实时迁移,因此在VM实例实时迁移之前,元数据服务器将接收到维护事件通知。如果您选择在维护期间终止VM实例,则Compute Engine将自动终止并可选地重新启动VM实例(如果设置了automaticRestart属性)。要了解有关维护事件和实例在事件期间的行为的更多信息,请阅读有关调度选项和设置的文章。
您可以通过定期查询属性来了解何时会发生维护事件。该属性的值将在维护事件开始60秒之前更改,从而为您的应用程序代码提供了一种触发任何任务的方法,例如备份数据或更新日志。Compute Engine还提供一个示例Python脚本,演示如何检查维护事件通知。
您可以使用等待更新功能与maintenance-event属性一起使用,以在维护事件即将开始和结束时通知您的脚本和应用程序。这使您可以自动化您可能想在事件之前或之后运行的任何操作。以下Python示例提供了如何同时实现这两个功能的示例。

终止并(可选)重新启动

如果您想禁用实时迁移,可以选择在维护事件发生时终止实例,并可选地重新启动实例。

如果您不希望实例进行实时迁移,可以选择终止并可选地重新启动实例。使用此选项,Google Compute Engine 将向您的实例发送关闭信号,等待一段时间以使您的实例干净地关闭,终止该实例,并将其重新启动远离维护事件。此选项非常适合需要持续最大性能的实例,并且您的整个应用程序都构建为处理实例故障或重新启动。

请查看设置可用性策略部分,了解如何配置此选项的更多详细信息。

实时迁移和 GPU

如果您使用带有GPU或可抢占实例,请注意不支持实时迁移:

附有GPU的实例无法进行实时迁移。它们必须被设置为终止并可选择重新启动。Compute Engine在附有GPU的VM实例终止前提供60分钟通知。要了解更多关于这些维护事件通知的信息,请阅读获取实时迁移通知。要了解有关处理附有GPU的主机维护的更多信息,请阅读GPU文档上的处理主机维护。 无法配置抢占式实例进行实时迁移。抢占式实例的维护行为始终默认设置为TERMINATE,并且您无法更改此选项。还不可能为抢占式实例设置自动重启选项。注意:对于带有GPU的实例,属性更改在实例终止之前60分钟,以便您有时间关闭并在另一台主机上重新启动。具有GPU的实例不会进行实时迁移,而是终止并可选择重新启动。要了解更多信息,请阅读GPU文档上的处理主机维护。

2
是的,我已经看到了所有这些信息,但是没有告诉我如何在重新启动/自动迁移时收到通知。 - BruceM
@BruceM - 实时迁移是自动迁移。我添加的信息(https://cloud.google.com/compute/docs/storing-retrieving-metadata#maintenanceevents)可以告诉你如何直接从 VM 获取有关这些事件的通知。查看“maintenance-event”属性。您可以使用悬挂 GET 和元数据服务器等待属性更改,表示迁移正在开始/完成。正如帖子中已经提到的那样,查看您的区域操作日志以获取“compute.instances.terminateOnHostMaintenance”事件(可以使用 REST API 轮询)。您还在寻找什么? - Tuxdude
这几乎不算是“被通知”。那就是“创建一个轮询策略来确定” - 不太方便! - BruceM
它可以让你更精细地控制事件的检测。利用它来创建自己的通知(甚至使用Stackdriver来实际发送通知)。Stackdriver是一个高级工具,你仍然需要向该工具提供一些事件或信息。为什么不至少分享一下你将如何使用Stackdriver来获取所需的通知,以便其他人也能受益呢(这在已接受的答案或链接中都没有提到)? - Tuxdude
提前数小时或数天被通知(就像AWS一样)将比事件发生前60秒更方便。 - talonx
1
@talonx - 这就是实时迁移的全部意义,您不必担心何时发生维护事件。有两类维护事件-计划和非计划。作为软件开发人员,我希望设计我的应用程序来处理这两种事件。在AWS中,您仅会收到计划事件的通知,而不会收到非计划事件的通知。在AWS中,您还需要自行处理维护问题,而使用实时迁移则无需操心。实时迁移还可以处理某些可恢复的非计划事件。 - Tuxdude

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接