sur*_*007 11 amazon-web-services aws-cloudformation autoscaling
以下是我在AWS中的内容:
一切正常.但是,当我需要对服务器进行更新或更改时,我当前正在手动创建新的AMI_B,使用AMI_B创建新的LaunchConfig,更新AutoScalingGroup以使用新的LaunchConfig,将最小实例数增加到4,等待它们变得可用,然后将数字减少到2以消灭旧实例.
我真的很想自动化这个过程.亚马逊给了我一些CLI的东西链接,我能够编写AMI创建脚本,创建LaunchConfig,并更新AutoScalingGroup ......但我没有看到一个简单的方法来编写新实例的脚本.
经过一番搜索后,我发现了一些CloudFormation模板看起来像他们想要的那样,但是大多数都做得更多,这对我来说有点混乱.
我应该探索CloudFormation吗?是否有一个简单的指南,我可以遵循开始?或者我应该继续使用我已经开始的脚本?
PS - 对不起,如果这是一个重复的问题.事情在AWS上经常发生变化,因此有时旧的响应可能不是当前最佳答案.
您有多种选项可以自动将 Auto Scaling 组中的实例更新为新的或更新的启动配置:
如果您确实想使用 CloudFormation 来管理对 Auto Scaling 组实例的更新,请参阅资源的UpdatePolicy
属性以AWS::AutoScaling::AutoScalingGroup
获取文档,以及“执行 Auto Scaling 组滚动更新的一些推荐最佳实践是什么?” AWS 知识中心中的页面以获取更多建议。
如果您还想在 CloudFormation 资源中编写 AMI 的创建/更新脚本,请参阅我对问题“创建 AMI 映像作为 cloudformation 堆栈的一部分”的回答。
但是请注意,CloudFormation 不是一个简单的工具——它是一个复杂的、级别相对较低的服务,用于编排 AWS 资源,并且由于其陡峭的学习曲线,将您现有的脚本迁移到它可能需要一些时间投资。
如果简单性最重要,那么我建议您评估Elastic Beanstalk,它在部署过程中支持滚动更新和不可变更新,在更全面管理、面向控制台的平台即服务环境中。请参阅我对问题“Elastic Beanstalk 和 CloudFormation 用于 .NET 项目有什么区别?”的回答。进一步比较 CloudFormation 和 Elastic Beanstalk。
如果您想要一个用于更新自动扩展组中的实例的解决方案,您可以将其插入到现有脚本中,AWS CodeDeploy可能值得研究。您在实例上安装代理,然后通过 API/CLI/控制台触发部署,它管理将应用程序更新部署到您的实例队列。有关完整教程,请参阅使用 AWS CodeDeploy 将应用程序部署到 Auto Scaling 组。虽然 CodeDeploy 支持“就地”部署和“蓝绿”部署(请参阅使用部署有关详细信息),我认为该服务采用了一种将 S3 托管的应用程序包交换到静态基础 AMI 上的方法,而不是在每次部署时替换 AMI。因此,它可能不是您的 AMI 交换用例的最佳选择,但无论如何都值得研究。
您需要在 Auto Scaling 组上使用自定义终止策略。
最旧的启动配置。Auto Scaling 终止具有最旧启动配置的实例。当您更新组并逐步淘汰以前配置中的实例时,此策略非常有用。
使用控制台自定义终止策略
选择自动缩放组。
对于操作,选择编辑。
在“详细信息”选项卡上,找到“终止策略”。选择一项或多项终止政策。如果您选择多个策略,请按照您希望它们应用的顺序列出它们。如果您使用默认策略,请将其设置为列表中的最后一个。
选择保存。
在命令行界面上
aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --termination-policies "OldestLaunchConfiguration"
Run Code Online (Sandbox Code Playgroud)
https://docs.aws.amazon.com/autoscaling/latest/userguide/as-instance-termination.html
归档时间: |
|
查看次数: |
5609 次 |
最近记录: |