如何在没有停机的情况下仅使用一个活动节点部署到自动缩放组

时间:2015-05-30 21:17:15

标签: amazon-web-services deployment autoscaling

关于AWS自动调节和部署有两个问题,我无法清楚地回答:

  1. 我目前正在试图弄明白,最好的策略是部署到ELB后面的EC2实例,而ELB是自动缩放组中唯一没有停机的成员。
  2. 到目前为止,EC2设置将使用puppet完成,包括应用程序的部署,在jenkins成功构建之后触发。

    我找到的最佳解决方案是检查每个脚本在ELB注册了多少个实例。如果注册了一个,则生成一个新的,在启动时运行puppet(新节点将是最新的)并终止旧节点。

    1. 如何在不提供两个不同版本的应用程序的情况下部署(在ELB后面自动扩展EC2)?
    2. 可能的解决方案:检查每个脚本向ELB注册了多少EC2实例,生成相同数量的实例,注册所有新实例并取消注册所有旧实例。

      我与AWS的经验告诉我,AWS为所有事情提供服务。那么有没有任何服务来满足我的要求,我的解决方案很不方便?

2 个答案:

答案 0 :(得分:0)

您可以使用自己的ELB创建一个全新的环境,当它准备好并经过检查时,您可以将DNS记录切换到新的ELB。

无论如何短时间(60秒左右,取决于您的DNS记录的TTL),一些用户将看到您的旧版本,而其他用户将看到新版本。

答案 1 :(得分:0)

最后有两种可能的解决方案。他们俩都会暂时提供两个版本的应用程序。

  1. 使用AWS CodeDeploy执行顺序部署(一个接一个)。此解决方案提供了回滚到先前状态的可能性,可视化显示部署的状态和结果。

  2. 创建一个python脚本来获取已注册的节点(使用Boto)并在其上运行相应的puppet脚本(使用Fabric)。此解决方案提供了更多的部署控制,但需要一些时间来构建这些脚本。也可能有错误..

  3. 现在我选择AWS CodeDeploy,因为它已经可用并且 - 希望 - 经过充分测试。