【问题标题】:AWS: how to configure EC2 instances during auto scaleAWS:如何在自动扩展期间配置 EC2 实例
【发布时间】:2017-11-14 23:58:38
【问题描述】:
我目前正准备更多地利用 AWS 的功能,但在我的研究过程中仍然出现了一些问题。我目前对 AWS 自动缩放与多个自动缩放组(每个服务一个)的组合以及使用 AWS 代码部署的部署感兴趣。
我想知道配置 EC2 实例的常见做法是什么,当 AWS 注意到我需要一个新的 EC2 实例时,该实例会启动。我考虑过创建一个自定义 AMI,其中安装了应用程序运行所需的所有内容。还有其他可能性吗? Ansible 之类的东西如何在这个设置中发挥作用?另外,如果我需要更改实例(例如安装安全更新)怎么办,这样做的常见做法是不通过 ssh 连接到每个服务器实例并手动进行。
谢谢
【问题讨论】:
标签:
amazon-web-services
amazon-ec2
【解决方案1】:
基本上有两种选择来配置使用 Auto Scaling 创建的 Amazon EC2 实例:
您也可以将两者结合使用——将大部分配置在 AMI 上,然后通过用户数据进行最终配置。
Puppet、Chef 和 Ansible 等工具也很受欢迎。它们通过用户数据脚本触发,然后运行 Puppet/Chef/Ansible 在实例上安装软件。
使用完全配置的 AMI 的好处是实例的可用速度更快,这在您需要更多容量的自动缩放情况下非常方便快速 . 缺点是您必须在软件更新后创建一个新的 AMI。 Netflix 已使用 Aminator 自动执行此过程,它会在软件更新时自动构建新的 AMI。
使用用户数据脚本的好处是配置非常灵活,您无需维护 AMI 库。
【解决方案3】:
首先,如果您正在寻找 AWS 基础设施的 Provisioning Automation,然后通过 Ansible、CloudFormation 和 Terraform,您可以选择。
您可以准备GoldenImage,其中安装了所有必需的包、工具和安全配置。之后,您可以为Auto Scaling Group 创建Launch Configuration,在启动配置中,您还可以提供您的自定义startup scripts。
Afterworld,如果对于任何ad-hoc 任务或命令执行,ansible 是最佳选择。