AWS 中滚动、附加批量滚动和不可变部署之间的区别?

问题描述 投票:0回答:3

我正在使用 Elastic Beanstalk 来处理我的部署。

我阅读了这些部署选项的解释,但我不太清楚。

有人可以用更简单的语言解释一下吗?

amazon-web-services amazon-elastic-beanstalk
3个回答
40
投票

我认为这会有所帮助。

Immutable
– 首先将应用程序代码部署到单个新创建的 EC2 实例。在第一个实例上成功部署后,将创建创建并行队列所需的剩余实例数,并将应用程序代码部署到它们。在整个并行队列上部署成功后,运行旧应用程序版本的实例一次终止 25%。此部署策略可确保部署失败的影响最小(即:单个 EC2 实例),并使您的应用程序能够在持续部署期间以满负荷提供流量。

Rolling with an additional batch
– 首先将应用程序代码部署到一批新创建的 EC2 实例。一旦第一批实例部署成功,应用代码将分批部署到剩余实例,直到剩下最后一批实例。至此,最后一批实例终止。此部署策略可确保部署失败的影响仅限于单批实例,并使您的应用程序能够在持续部署期间以满负荷提供流量。

Rolling
– 首先将应用程序代码部署到一批现有 EC2 实例。一旦第一批部署成功,应用程序代码将分批部署到其余实例。此部署策略可确保部署失败的影响仅限于单个批次。但是,由于在部署期间不会创建新实例,因此您的应用程序可以以降低的容量提供流量(即:在部署期间的任何给定时间,一批实例都停止服务)。


12
投票

我发现这篇文章比接受的答案更容易理解,所以这是我的看法。

按风险从高到低排序,并将已部署的版本称为

v1
v2

  • 一次性全部:同时将所有
    v1
    替换为
    v2
    。失败未处理。
  • Canary:部署并观察
    v2
    。 如果成功,所有剩余的
    v2
    实例将立即部署。
  • 滚动:将
    v1
    实例替换为
    v2
    实例,一次一个。注意失败。
  • 批量滚动:创建一些新的
    v2
    实例。如果成功,请在
    v1
    实例上推出。当全部都是
    v2
    实例时,缩放回原始大小。
  • 不可变:不要更改
    v1
    实例。创建相同数量的
    v2
    实例。等待成功,然后停止
    v1
    个实例。
  • 蓝色/绿色:不是在就地环境中操作,而是创建一个完全配置有
    v2
    的新环境(网络等),并在准备好时进行切换。

0
投票

这篇文章也是一个很好的参考,带有有用的图表:https://webmobilez.com/awsmaterial/elastic-beanstalk-deployment/

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