使用Nuxt进行蓝/绿部署

问题描述 投票:1回答:1

我在我们的infra中有一个蓝绿色的部署设置(快速信息 - 新的服务器/容器以新的构建启动;流量以滚动的方式移动到这些新服务器; 1从旧设备向下移动,1从新设备向上移动)。问题是,在某种程度上可能存在从两个(旧/新)部署提供流量的情况。一个部署的JS可能在另一个部署中不可用。

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

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

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

vue.js nuxt.js ssr
1个回答
1
投票

只要您的S3具有所有部署的所有文件,它对JS和资产文件都是安全的。但是,在切换发生之前,必须确保所有文件都在S3内。

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

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

在切换期间,您的Green代码可能会调用Blue代码,并且由于响应结构不同,您的Green Vue代码不准备处理新的数据结构。

您可以通过适当升级API版本来缓解此问题。

有多个API版本example.com/v1.0/dataexample.com/v1.1/data。在部署期间,您的Blue / Green将被路由到相应的API。这很乏味。

我使用AWS Rolling Updates简要介绍了它:AWS Nuxt Zero Downtime

© www.soinside.com 2019 - 2024. All rights reserved.