如何在不停机的情况下部署到只有一个活动节点的自动缩放组
How to deploy to autoscaling group with only one active node without downtime
有两个关于AWS autoscaling + deployment的问题我没法回答清楚:
- 我目前正在尝试弄清楚,部署到 ELB 后面的 EC2 实例的最佳策略是什么,ELB 是自动缩放组中唯一没有停机的成员。
现在,EC2 设置将使用 puppet 完成,包括应用程序的部署,在 jenkins 成功构建后触发。
我找到的最佳解决方案是检查每个脚本在 ELB 上注册了多少个实例。如果注册了一个,则生成一个新的,它在启动时运行 puppet(新节点将是最新的)并杀死旧节点。
- 如何在不交付两个不同版本的应用程序的情况下进行部署(在 ELB 后面自动缩放 EC2)?
可能的解决方案:检查每个脚本有多少 EC2 实例注册到 ELB,生成相同数量的实例,注册所有新实例并注销所有旧实例。
我在 AWS 上的经历告诉我,AWS 可以为一切提供服务。那么有没有什么服务可以满足我的要求而我的解决方案不方便?
您可以使用自己的 ELB 创建一个全新的环境,当它准备就绪并经过检查时,您可以将 DNS 记录切换到新的 ELB。
无论如何,在很短的时间内(60 秒左右,取决于您的 DNS 记录的 TTL)一些用户会看到您的旧版本,而另一些用户会看到新版本。
最终有两种可能的解决方案。他们都将临时提供两个版本的应用程序。
使用 AWS CodeDeploy 执行顺序部署(一个接一个)。此解决方案提供了回滚到先前状态的可能性,并且可视化显示部署的状态和结果。
创建一个 python 脚本以获取已注册的节点(使用 Boto)和 运行 相应的人偶脚本(使用 Fabric)。此解决方案提供了对部署的更多控制,但需要一些时间来构建这些脚本。也可能有错误..
现在我选择 AWS CodeDeploy,因为它已经可用,并且希望经过良好测试。
有两个关于AWS autoscaling + deployment的问题我没法回答清楚:
- 我目前正在尝试弄清楚,部署到 ELB 后面的 EC2 实例的最佳策略是什么,ELB 是自动缩放组中唯一没有停机的成员。
现在,EC2 设置将使用 puppet 完成,包括应用程序的部署,在 jenkins 成功构建后触发。
我找到的最佳解决方案是检查每个脚本在 ELB 上注册了多少个实例。如果注册了一个,则生成一个新的,它在启动时运行 puppet(新节点将是最新的)并杀死旧节点。
- 如何在不交付两个不同版本的应用程序的情况下进行部署(在 ELB 后面自动缩放 EC2)?
可能的解决方案:检查每个脚本有多少 EC2 实例注册到 ELB,生成相同数量的实例,注册所有新实例并注销所有旧实例。
我在 AWS 上的经历告诉我,AWS 可以为一切提供服务。那么有没有什么服务可以满足我的要求而我的解决方案不方便?
您可以使用自己的 ELB 创建一个全新的环境,当它准备就绪并经过检查时,您可以将 DNS 记录切换到新的 ELB。
无论如何,在很短的时间内(60 秒左右,取决于您的 DNS 记录的 TTL)一些用户会看到您的旧版本,而另一些用户会看到新版本。
最终有两种可能的解决方案。他们都将临时提供两个版本的应用程序。
使用 AWS CodeDeploy 执行顺序部署(一个接一个)。此解决方案提供了回滚到先前状态的可能性,并且可视化显示部署的状态和结果。
创建一个 python 脚本以获取已注册的节点(使用 Boto)和 运行 相应的人偶脚本(使用 Fabric)。此解决方案提供了对部署的更多控制,但需要一些时间来构建这些脚本。也可能有错误..
现在我选择 AWS CodeDeploy,因为它已经可用,并且希望经过良好测试。