我一直在谷歌的App Engine中调整我的环境,以便为我的应用程序提供多个测试和生产实例。但是我不确定版本的预期用途是否适用于此。
应用背景:
- 使用Cloud sql在app引擎上配置Node.js表达应用程序
- 2个模块:
- - 默认/主要 - 前端代码和API
- - 工人 - 具有各种工作人员的独立应用程序
- Redis用于跟踪队列,kue.js用于实现
我的印象是我可以在这里使用版本,因此我只保留2个模块,我的默认模块和工作模块。然后每个都有2个版本,分期和生产。推送每一个的命令将是:
gcloud preview app deploy --version staging --no-promote
gcloud preview app deploy --version production --promote --no-stop-previous-version
这一切都很好,也许是版本的预期用途。但是,我无法实现的目标是停机时间。 似乎发生的事情是旧机器被拆除然后新机器堆积,导致部署期间3-4分钟的停机时间。而不是保持旧机器直到新机器完成并且然后只是重新路由。请注意,在这种情况下,生产版本应始终具有100%的流量。
我发现效果很好的是为每个版本保留一个模块,因此我最终得到4个模块(默认,默认登台,工作人员,工作人员登台),并且在部署期间没有指定真正的版本。使用此部署时,没有停机时间,但旧版本仍在运行:
gcloud preview app deploy --promote
我有一个帮助脚本来删除所有获得0%流量的版本。这是设置单独环境的正确方法吗?只是寻找一些反馈,以防我遗漏了一些明显的东西。