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

时间:2019-07-16 10:48:53

标签: google-app-engine google-cloud-platform

情况

  • App Engine Flex上的自定义运行时(Docker / Node)
  • 在我们自己管理资源时(2 cpu / 6 gb ram),手动扩展到1个单实例
  • 配置了生命力和准备就绪检查
  • 按预期,虚拟机实例为automatically restarted on a weekly basis,以应用操作系统/系统更新
  • 这是visible in the Activity pane的Google Cloud Console
  • Stackdriver日志确认此活动(例如shutdown-script: INFO Starting shutdown scripts.startup-script: INFO Starting startup scripts.
  • 在这些重新启动过程中没有实例可用,导致访问实例上运行的应用程序时导致503错误

目标

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

问题

我们曾经考虑过一直有2个实例可用,但是由于它们属于同一实例组,因此担心两个实例会同时重新启动。

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

2 个答案:

答案 0 :(得分:1)

也许您应该尝试此处显示的自动缩放:Scaling instances

这使您的应用程序可以根据请求率,响应延迟和其他应用程序指标自动创建实例。当您的一个实例关闭时,可以创建另一个实例以“覆盖”丢失的实例。因此,您的服务不会被中断。

答案 1 :(得分:1)

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

我没有考虑过Google对实例的更新。我刚刚查看了最近的历史记录,Google昨天重新启动了我的两个实例。重新启动间隔7分钟,因此至少在此示例中,我的用户始终可以使用一个实例。

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

更新:

这是一个猜测,但是我希望Google更新flex实例时,它将创建一个新实例,并且只有在新实例可用后才关闭旧实例。至少,如果我运行的是Google,那将是我的工作方式。这样,您的正常运行时间将达到100%,并且您将很快运行一个额外的实例。甚至可以在单个flex实例中使用。