我已将我的应用程序部署到Elastic Beanstalk,并使用Rolling Updates功能对其进行了配置。这听起来很酷,因为它始终在服务器场中保留一定数量的服务器,而其他服务器则被换出进行升级 - 因此似乎可以实现无中断升级。
但是根据我的推理,这不会起作用 - 在滚动更新期间的某个时刻,将会有一些服务器启用v1,而某些服务器启用v2。如果v1和v2之间的JS或CSS不同,那么可能会加载一个v1页面,它向负载均衡器发送请求并获取v2 JS / CSS,反之亦然。
我想不出一个避免这种情况的简单方法,所以我很难看到滚动升级的重点。
我错过了什么吗?有没有更好的方法来实现网站的无停机升级?我想我也可以在它上面建立一个完整的并行Elastic Beanstalk环境,然后将它们一次性切换 - 但这看起来要花费更多的时间。
答案 0 :(得分:3)
如您所述,要使用滚动部署并在同一环境中进行连续部署,您需要保证版本N与版本N + 1兼容。 “兼容”意味着它们可以同时运行,在不同文件和数据库架构更改等情况下可能会遇到挑战。
一种流行的解决方法是Blue-Green Deployments,您可以在其中部署到其他环境,然后重定向用户。 Swap URL feature有助于使用AWS Elastic Beanstalk实现该功能。
渐进式推出和蓝绿色不是互斥的。您可以使用渐进式卷展栏进行小幅更改,使用蓝绿色表示较大的更改。有关连续传送的更多模式和技巧,建议您选中Jez Humble's book。