5

情况

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

目标

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

问题

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

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

4

2 回答 2

3

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

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

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

更新:

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

于 2019-07-18T12:59:02.580 回答
1

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

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

于 2019-07-17T00:15:10.563 回答