在AWS中滚动,滚动与其他批处理和不可变部署之间的区别?

时间:2016-07-29 10:31:40

标签: amazon-web-services elastic-beanstalk

我正在使用弹性beanstalk来处理我的部署。 我阅读了这些部署选项的解释,但不是很清楚。 有人可以用更简单的词来解释吗?我正在尝试构建一个nodejs部署系统。

任何帮助将不胜感激!

谢谢!

2 个答案:

答案 0 :(得分:10)

我认为这会有所帮助。

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

使用其他批处理滚动 - 首先将应用程序代码部署到一批新创建的EC2实例。在第一批实例上部署成功后,应用程序代码将批量部署到其余实例,直到最后一批实例保留为止。此时,最后一批实例终止。此部署策略可确保部署失败的影响仅限于一批实例,并使您的应用程序能够在正在进行的部署期间以满容量提供流量。

滚动 - 首先将应用程序代码部署到一批现有EC2实例。在第一批部署成功后,应用程序代码将批量部署到其余实例。此部署策略可确保将部署失败的影响限制为单个批处理。但是,由于在部署期间没有创建新实例,因此应用程序可以以较低的容量提供流量(即:在部署期间的任何给定时间,单批实例都将停止服务)。

答案 1 :(得分:2)

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

按风险从高到低排序,并调用已部署的版本 v1v2

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