我有一个Web应用程序设置与负载平衡器和自动伸缩组来pipe理缩放。 源代码在git仓库中,所以当代码改变时我不必更新图像,但是偶尔环境会改变,所以我们创build一个新的图像。 然后,该图像需要循环进入自动缩放组。
有没有办法自动循环图像? 现在我安排一个放大和缩小行动,摆脱旧的情况。
我想build议“AWS-HA-Release”来做到这一点 – AWS-HA-Release的工作方式:
在这种情况下,您可以在不停机的情况下发布新代码或新的AMI版本,并享受全新的实例。 AWS-HA-Release工具可在https://github.com/colinbjohnson/aws-missing-tools上find 。
更简单的方法是将ASG中的最小实例数增加到当前计数的两倍,等待所有这些实例启动,然后将最小实例数更改为原来的数。 ELB将杀死较旧的实例,并将使代码保留较新的实例。
您可以在这里查看AWS CLI参数和示例: http : //docs.aws.amazon.com/cli/latest/reference/autoscaling/update-auto-scaling-group.html
我pipe理这种情况的方式是使用云形成中的AWS :: AutoScaling :: AutoScalingGroup对象的UpdatePolicyfunction。 当云形成堆栈被更新时,它将pipe理实例的循环。
一些参考。 http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy html的
也看看现在开源的Netflix Asgard工具。 它不仅可以设置Auto Scaling组,还可以为一组实例执行新的AMI映像的滚动版本。
实际上没有一个真正的好方法。 我发现最好的办法是把一个版本放在ASG的名字里。 每当我更新AMI时,我都会使用新版本创build一个新的ASG +启动configuration,以便与其他组不冲突。 然后我终止旧组中的所有实例。
如果需要更多的容错部署,我build议通过创build一个新的负载均衡器来增加另一个步骤。 这样可以使ASG彼此隔离。 它还允许您在更新之前有一个“分段”区域来最后一次testing您的更改。 然后,当您准备好切换时,您将更新DNSlogging并终止旧组中的所有实例。