Nuxt的蓝色/绿色部署



我在我们的基础设施中有一个蓝绿色的部署设置(快速信息-一个新的服务器/容器以新的构建开始;流量以滚动方式移动到这些新服务器;1个从旧服务器集向下,1个从新服务器集向上)。问题是,在某一点上,可能会出现两种(旧的/新的)部署都提供流量的情况。一个部署的JS在另一个部署上可能不可用。

在控制台的请求选项卡中,我可以看到对chunk的请求是以domain.com/_nuxt/<component>/<part><hash>.js的形式出现的。在nuxt的构建文件夹中,组件以<component>_<part><hash>.js的形式存在。

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

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

只要S3拥有所有部署的所有文件,JS和资产文件是安全的。但是,在切换之前,必须确保所有文件都在S3中。

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

  • 绿色:example.com/v1.0/data,返回Array
  • 蓝色:example.com/v1.0/data,返回Object

在切换期间,您的绿色代码可能会调用蓝色代码,由于响应结构不同,您的Green Vue代码无法处理新的数据结构。

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

有多个API版本example.com/v1.0/dataexample.com/v1.1/data。在部署过程中,您的蓝色/绿色将被路由到相应的API。这很乏味。

我使用AWS滚动更新简要介绍了它:AWS Nuxt Zero Downtime

最新更新