1

是否可以通过就地部署实现零停机部署?我知道在部署组描述中(对于就地部署)我们有这个:

使用最新的应用程序修订更新部署组中的实例。在部署期间,每个实例将短暂脱机以进行更新。

我的问题是:假设我至少有两个实例连接到负载均衡器。是否可以使用以下顺序进行就地部署:

  • 实例 A 与 LB(负载均衡器)断开连接
  • 实例 A 安装最新更新并重新启动
  • 实例 A 升级到最新的代码版本
  • LB 与仍具有旧代码修订的实例 B 断开连接,并专门指向实例 A
  • 实例 B 安装最新版本并重新启动
  • 实例 B 升级到最新的代码版本
  • LB 也连接到实例 B

以上可能吗?如果是这样,我该如何设置?我已经尝试过一次部署一个,一次全部部署等,但发生的情况是,在所有情况下,部署总是同时发生在所有实例上,因此有一些停机时间。

4

2 回答 2

1

我认为一种选择是在单独的文件夹中为每个部署创建一个修订版,并最终在部署完成后使用 afterInstall 钩子通过符号链接链接它。

例如。

 releases
    ├── release1
    └── release2

public_html -> (symlink) release2
于 2018-12-13T23:07:04.630 回答
0

是的,您可以完全按照您的描述进行操作。如果您使用部署选项 WITH_TRAFFIC_CONTROL配置部署组并配置负载均衡器,CodeDeploy 将在运行通常的生命周期挂钩脚本集之前从负载均衡器中删除您的实例。

您可以在此处看到一个图表,该图表演示了钩子的执行顺序(请注意,BlockTraffic并且AllowTraffic正在执行绑定和解除绑定)。主机选择逻辑将是相同的 - 您的最低健康主机设置。如果您一次将部署设置为一个,CodeDeploy 将不会同时部署到多个实例。

于 2018-11-20T15:40:24.107 回答