我想按以下方式设置自动缩放。
- 我将网站数据以 zip 格式存储在 aws s3 存储桶中(未启用版本控制)
- 当以自动缩放方式启动实例时,用户数据将具有从 S3 存储桶中获取 zip 文件并将其解压缩到适当位置的 shell 脚本。
- 将来,当我拥有 zip 文件的第 2 版时,自动扩展应该会停止为旧网站提供服务的旧实例。而新实例应该会启动新网站(使用相同的用户数据 shell 脚本)。
如何实现这个?
答案1
我认为您需要设置 CodeDeploy 和 CodePipeline 来执行此操作。Codepipeline 可以监控源 s3,然后将更新发送到 codedeploy 以更新 EC2 实例。
http://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html
http://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html
答案2
我认为使用默认的自动缩放是不可能的。
自动扩展终止政策是:
- 终止实例数最多的可用区中的实例。
- 最早的启动配置
- 最接近计费时间
- 随机的
如果您有一个可用区,解决方案可能是更改启动配置。即使只是当前配置的副本也足够了。不过这不是立即的,如果定期扩大和缩小规模,最终就会实现。
如果您有多个可用区,新的启动配置最终将会起作用。
你可以手动保护实例免于终止。不过这是手动的,你必须在每次发布 zip 文件时更改它们。
Lambda 为您提供了强大的功能和灵活性。您可以让 CloudWatch Events 触发 Lambda 函数。该函数可以检查最新 zip 文件的日期和实例启动日期,并可以终止比 zip 文件更早的实例。这可能是最好的自动化方式。
只要您不频繁发布 zip 文件,手动终止可能是最简单的。
问题:
- 您使用了多少个可用区?
- 您多久发布一次 zip 文件?