我正在尝试使用ELB,Auto-Scaling组和Pipeline(使用CodeBuild和CodeDeploy)构建堆栈。 我无法理解它应该如何工作: 自动扩展组正在启动两个实例并等待X分钟,然后再开始检查实例状态 CodeDeploy应用程序部署组正在等待创建并准备好Auto-Scaling组 管道大约需要10分钟才能开始部署应用程序
我的问题是当我创建堆栈时,看起来有一个循环:AG需要来自CodeDeploy的应用程序,而CodeDeploy需要AG稳定。需要明确的是,当应用程序准备好部署时,我的Auto-Scaling组已经开始终止实例并启动新实例,因此CodeDeployment正在尝试部署到已经终止或终止的实例。
我真的不想将HealthCheckGracePeriod和PauseTime配置为10-15分钟......这太长了。
是否有通过管道进行CloudFormation + ELB + AG + CodeDeploy的最佳实践? 应该采取哪些步骤来实现这一目标?
谢谢!
答案 0 :(得分:1)
这种停止/盯着实例很可能与部署类型相关联:就地与蓝/绿。 我在我的设置中尝试了两种方法,并且我将尝试总结它们的工作原理。
假设在本示例中,您有一个Autoscaling组,在部署应用程序时有2个正在运行的实例,部署配置为OneAtATime。流量由Elastic Load Balancer控制。然后:
就地部署:
重要提示: 启用ELB后,在部署之前阻止流量到达实例所需的时间,以及在流量直接依赖于您的运行状况检查后允许流量所需的时间:time = Healthy threshold * Interval。
蓝/绿部署:
来自经验: