当实例自动重启时如何防止 App Engine Flex 停机

Adr*_*ris 5 google-app-engine google-cloud-platform

情况

  • App Engine Flex 上的自定义运行时(Docker/Node)
  • 当我们自己管理资源时手动扩展到 1 个单个实例(2 cpu / 6 gb ram)
  • 已配置活动性和就绪性检查
  • 正如预期的那样,vm 实例每周自动重新启动以应用操作系统/系统更新
  • 这在 Google Cloud Console的“活动”窗格可见
  • Stackdriver 日志确认此活动(例如shutdown-script: INFO Starting shutdown scripts.startup-script: INFO Starting startup scripts.
  • 在这些重启期间没有可用的实例,导致访问在实例上运行的应用程序时出现 503 错误

目标

  • 对实例数量进行一些控制以防止停机
  • 例如,在 1 个实例重新启动时临时扩展到 2 个实例
  • 保持对可用资源的控制(cpu / ram)

我们曾考虑过让 2 个实例始终可用,但担心两者会同时重新启动,因为它们属于同一实例组。

什么能让我们在控制使用的实例/资源数量的同时保持一切正常运行?

gae*_*fan 3

我有一个 Flex 应用程序,由于类似的原因运行两个实例。对我来说,实例偶尔会超出内存限制并需要重新启动。由于我有第二个实例,因此应该始终有一个可用的实例。

我没有考虑 Google 对我的实例进行更新。我刚刚检查了我最近的历史记录,谷歌昨天重新启动了我的两个实例。重新启动相隔 7 分钟,因此至少在本示例中,我的用户始终有一个可用的实例。

我怀疑 Google 不会同时重新启动您的所有实例。这将为所有 Flex 客户造成短暂的停机时间,并且没有人希望云服务出现停机时间。

更新:

这是一个猜测,但我预计当 Google 更新 Flex 实例时,它将创建一个新实例,并且仅在新实例可用后才关闭旧实例。至少,如果我经营谷歌,我会这么做。这样您就拥有 100% 的正常运行时间,并且您将非常短暂地运行一个额外的实例。这甚至适用于单个 Flex 实例。