Nuxt的蓝色/绿色部署

时间:2019-01-17 11:24:13

标签: vue.js nuxt.js ssr

我在我们的基础设施中有一个蓝绿色的部署设置(快速信息-新服务器/容器以新版本启动;流量以滚动方式移动到这些新服务器;旧版本中的流量减少了1,新版本中的流量增加了1一)。 问题是,有时可能会出现两种(旧/新)部署都提供流量的情况。一种部署的JS可能在另一种上不可用。

在控制台的请求选项卡中,我可以看到对块的请求采用domain.com/_nuxt/<component>/<part><hash>.js的形式。在nuxt的build文件夹中,组件以<component>_<part><hash>.js的形式存在。

将生成的js文件同步到s3,并通过静态托管服务(例如AWS-S3)提供服务,并在Nginx上创建代理服务器以重新路由部分,将是安全的。我找不到任何现有的解决方案。

大多数解决方案都描述了如何在零停机时间内进行部署,并提出了通过软链接更改目录以处理零停机的方法。并不能解决用户可能已经在网站上,并且不一定浏览过webapp的所有页面(因此已加载所有js文件)的情况。

1 个答案:

答案 0 :(得分:1)

只要您的S3具有用于所有部署的所有文件,对于JS和Assets文件来说是安全的。但是,在进行切换之前,必须确保所有文件都在S3内部。

唯一需要考虑的是您的API,服务和业务逻辑。在切换期间,不得部署冲突的API版本。

  • 绿色:example.com/v1.0/data,返回一个数组
  • 蓝色:example.com/v1.0/data,返回一个对象

在切换过程中,您的绿色代码可能称为蓝色代码,并且由于响应结构不同,因此您的绿色Vue代码未准备好处理新的数据结构。

您可以通过正确升级API版本来减轻这种情况。

具有多个API版本example.com/v1.0/dataexample.com/v1.1/data。在部署期间,您的蓝色/绿色将被路由到相应的API。这很繁琐。

我使用AWS Rolling Updates简要地谈论了它:AWS Nuxt Zero Downtime