大约每周一次,我们的灵活应用引擎节点应用会脱机,并且日志中会出现以下行:Restarting batch of VMs for version 20181008t134234 as part of rolling restart。
我们将应用设置为使用以下设置自动缩放:
runtime: nodejs
env: flex
beta_settings:
cloud_sql_instances: tuzag-v2:us-east4:tuzag-db
automatic_scaling:
min_num_instances: 1
max_num_instances: 3
liveness_check:
path: "/"
check_interval_sec: 30
timeout_sec: 4
failure_threshold: 2
success_threshold: 2
readiness_check:
path: "/"
check_interval_sec: 15
timeout_sec: 4
failure_threshold: 2
success_threshold: 2
app_start_timeout_sec: 300
resources:
cpu: 1
memory_gb: 1
disk_size_gb: 10
我理解 GCP/GAE 的滚动重启,但我很困惑为什么谷歌在让我们的主要虚拟机脱机之前没有启动另一台虚拟机。我们是否必须运行至少 2 个实例才能防止这种情况发生?有没有办法配置我的 app.yaml
以确保另一个实例在它重新启动唯一运行的实例之前启动?重启完成后,一切恢复正常,但仍有 10 分钟的停机时间,这是 Not Acceptable ,尤其是考虑到我们无法控制何时重启。
我们知道它是expected behaviour灵活实例每周重新启动一次。前提是health checks如果配置正确并且不是问题,建议的确是至少设置两个实例。
据我所知,App Engine Flex 中没有可引发新实例以避免因每周重启而导致停机的替代功能。您可以尝试直接在 Google Compute Engine 而不是 App Engine 上运行并自行管理更新和维护,也许这更适合您的目的。
我是一名优秀的程序员,十分优秀!