我们正在使用带有CodeDeploy和EC2实例的AWS来运行多个Web应用程序。
我们有4个EC2实例,每个实例运行多个应用程序,并且可以在不同的端口上进行访问。我们为每个应用程序配置了CodeDeploy部署组。因此,对于5个应用程序,有5个应用程序/部署组。由于每个应用程序都部署到所有4个实例,因此每个部署组都包括所有4个实例(使用标记)。这些部署组被配置为执行“就地”部署。即使我们使用的是应用程序负载平衡器,也不会为这些部署组启用负载平衡。 (主要是因为我不清楚下面这个问题的答案。)
在AWS文档中,它表示在部署期间“部署组中的实例脱机” 。 这到底是什么意思? 部署期间是否会使整个EC2实例脱机?意味着在单个实例上部署单个应用程序时,在单个实例上运行的所有应用程序将不可用吗?
或者就特定的CodeDeploy应用状态和管理部署而言,它真的只是“离线”吗?实际的应用状态实际上是由生命周期事件如何在特定的appsec文件中实现/处理来定义的?这意味着EC2实例在技术上仍可用于流量,而不管文字应用程序是否可用或LB流量是否路由到该实例?
如果不清楚,用例是:由于我们在同一实例上运行多个应用程序,我们能否安全地将更新部署到单个应用程序,而完全不影响其他应用程序的可用性? / p>
答案 0 :(得分:0)
摘自documentation-重点:
就地部署:部署组中每个实例上的应用程序已停止,最新的应用程序版本为 安装,然后启动新版本的应用程序并 已验证。您可以使用负载均衡器,以便每个实例都是 在部署期间注销,然后在恢复后恢复服务 部署完成。仅使用 EC2 /本地计算平台可以使用就地部署。对于 有关就地部署的更多信息,请参见概述。 就地部署。
文档中没有任何有关实例停止的信息...
在部署过程中发生的情况由您的Appspec文件定义,其参考文档为here。
案例中的重要部分是hooks,您可以在其中指定部署期间发生的事情。
AWS文档中的此图显示了执行挂钩的顺序(在您的情况下,左流程应相关: