【问题标题】:What does AWS CodeDeploy mean by taking an instance offline?AWS CodeDeploy 使实例脱机是什么意思?
【发布时间】:2019-06-19 18:26:49
【问题描述】:

我们使用 AWS、CodeDeploy 和 EC2 实例来运行多个 Web 应用程序。

我们有 4 个 EC2 实例,每个实例运行多个应用程序,可通过不同端口访问。我们为每个应用程序配置了 CodeDeploy 部署组。因此,对于 5 个应用程序,有 5 个应用程序/部署组。由于每个应用程序都部署到所有 4 个实例,因此每个部署组都包含所有 4 个实例(使用标签)。这些部署组被配置为执行“就地”部署。即使我们使用的是应用程序负载均衡器,这些部署组也没有启用负载均衡。 (主要是因为我不清楚下面问题的答案。)

在 AWS 文档中,它表示在部署期间“部署组中的实例已脱机”这到底是什么意思? 是否在部署期间使整个 EC2 实例脱机?这意味着在将单个应用部署到该实例时,在单个实例上运行的所有应用都将不可用?

或者就特定的 CodeDeploy 应用程序状态和管理部署而言,它真的只是“离线”吗?实际的应用程序状态实际上是由生命周期事件在特定 appsec 文件中的实现/处理方式定义的吗?这意味着 EC2 实例在技术上仍可用于流量,无论字面应用程序是否可用或 LB 流量是否正在路由到实例?

如果不清楚,用例是:由于我们在同一个实例上运行多个应用程序,我们是否可以安全地将更新部署到单个应用程序,而不影响其他应用程序的可用性?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 devops aws-code-deploy


    【解决方案1】:

    来自documentation - 强调我的:

    就地部署:部署组中每个实例上的应用程序都停止了,最新的应用程序修订版是 安装,并启动新版本的应用程序并 验证。您可以使用负载均衡器,以便每个实例都 在部署期间取消注册,然后在之后恢复服务 部署完成。仅使用 EC2/本地计算平台可以使用就地部署。为了 有关就地部署的更多信息,请参阅 就地部署。

    文档没有说明实例被停止...

    部署期间发生的事情由您的 Appspec-File 定义,其参考文档为 here

    在您的案例中,重要的部分是 hooks,您可以在其中指定部署期间发生的情况。

    AWS 文档中的这张图显示了执行钩子的顺序(在您的情况下,左边的流程应该是相关的:

    【讨论】:

    • 我通过一些实际测试确认这是正确的。 CodeDeploy 不会使“实例”脱机,而只是根据 appsec 文件中的描述以及任何事件挂钩脚本尝试替换特定的“应用程序”。
    猜你喜欢
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 2017-12-06
    • 1970-01-01
    • 2017-11-03
    • 2022-07-21
    • 1970-01-01
    相关资源
    最近更新 更多