试着在aws asg
上获取一些信息。
这是我的情景;
asg
launch config
发布ubuntu ami
asg
ansible
中配置(安装所有必需的软件包并配置)实例
python
快乐的日子里,每件事都是安定的。
问题是,如果我应该更改asg
的指标,以便终止所有实例,然后将其更改回原始指标,则新实例会变为空白!没有包裹,没有代码!
1 - 这是预期的行为吗?
2 - 如果asg
有2个实例并且最多可扩展到5个实例,它会添加3个空白实例,或者使用代码和包获取1个正在运行的实例的副本,并启动3个新实例? / p>
如果1为是,我该如何解决这个问题?我需要使用预先烘焙的图像吗?但即使这样也没有最新的代码。
基本上在非高峰时段,我希望能够将我的asg
“归零”,因此没有任何实例正在运行,然后在高峰时段再次重新启动。每天必须再次配置和部署代码是没有意义的。
任何帮助/建议表示赞赏。
答案 0 :(得分:2)
您的方法遇到的问题是您正在将代码部署到启动实例。因此,当您更改ASG指标实例关闭并再次出现时,它们将从AMI启动,因此他们会错过代码和配置。永远记住在自动缩放中,使用ASG正在使用的AMI和已启动的实例启动新启动的实例。
为避免这种情况,您可以使用将运行配置脚本的用户数据,并在从AMI启动实例时将数据从您的repo中提取到每个实例上的实例,以便空白实例不会启动
阅读此用户数据开发人员指南
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html
答案 1 :(得分:2)
blank
,则表示from my base image
)通常的选择是:
每次有新的代码版本时都会烘焙新图像(它可以很容易地自动化,作为构建/部署过程中的一个步骤),但只有在不经常这样做的情况下才可能有意义。
将您的实例配置为在启动时提取最新软件版本。有几个选项都涉及user-data scripts。您可以直接从SCM提取最新版本,或者将最新软件包作为构建过程的一部分放入S3存储桶,并在启动时配置实例以从S3中自动部署并自行部署,或者您认为合适的任何内容。