加速AMI和ASG创作

Jam*_*mes 11 amazon-ec2 amazon-web-services autoscaling ansible amazon-ami

使用Ansible创建然后使用这个AMI创建一个启动配置,然后更新与自动缩放团的ubuntu的实例的AMI,是否有任何快捷方式我可以加快ASG和AMI步骤,取10分钟+

JD *_*D D 18

我通过AWS Support票询问了类似的问题,这里有回复:

启动新EC2实例时的主要耗时过程是实例中操作系统的启动过程:具有更多或更少的安全组/网络ACL,不同数量的SSH密钥对以及与实例关联的角色应该没有可衡量的影响在它启动的时间.启动实例所花费的大部分时间都由操作系统本身消耗.

考虑到这一点,请允许我查看实例启动时可能消耗最多时间的一些主要项目 - 对于以下所有要点,我将从EC2的角度专注于Linux:

  • 本地文件系统挂载:如果您的实例需要挂载大量文件系统,这将为您的启动过程增加一点时间.根据您使用的文件系统类型,您可能需要每隔固定天数定期运行一次检查 - 例如,在Linux上,您可能需要每隔90天在ext4文件系统上运行fsck(此期间可能会根据您的设置而更改) ,如果文件系统在检测到已超过该时间段时挂载,则操作系统会自动触发此检查.防止这种情况的一种策略是在创建用于启动新实例的AMI之前执行这些检查,以便从此AMI启动的任何实例最近都会检查其文件系统,并且在执行时不会遇到意外的fsck执行第一次启动您的实例.根据您使用的文件系统的类型,可能会完全禁用这些定期检查,但我不建议这样做,因为它们是维护文件系统长期完整性所必需的.

  • 远程文件系统挂载:如果您的实例需要挂载任何远程文件系统(例如,EFS共享或任何常规NFS共享),则启动过程可能会延迟,具体取决于与共享此远程文件系统的服务器的网络连接.在最坏的情况下,如果共享文件系统的服务器处于脱机状态,则启动过程将中断,直到此连接超时并失败.如果在启动实例时默认安装任何远程文件系统,请确保在启动实例之前共享它们的服务器可用.

  • 常规OS初始化脚本:启动OS服务将占用引导过程消耗的最大部分时间.在Linux中有两种类型的模型:传统的SystemV init(以串行方式,一个接一个地启动服务),以及相对较新的systemd(能够并行启动服务,从而减少启动时间)在某些情况下).您使用哪些将取决于您在实例中运行的Linux发行版.例如,如果您需要启动每次启动实例时可能需要很长时间的数据库服务器,那么考虑systemd可能是值得的,因为它将允许其他不相关的服务并行启动,因为他们没有这个DB服务器作为先决条件.

  • 用户数据和cloud-init脚本:这些脚本在常规OS初始化脚本结束后执行.与前面的项目一样,您可能希望检查您执行的任何这些自定义脚本是否已经过优化,以便它们可以花费最少的时间; 建议单独测试任何自定义用户数据脚本,以便在将它们添加到新实例启动之前测量它们的时间,这样您就可以更好地了解它们在实例启动的整个时间内的影响.如果您的脚本正在检索实例外部的任何文件(如果您从S3存储桶下载某些内容,运行自动更新已安装的软件包等),请注意我上面提到的"远程文件系统安装"项目apply - 确保没有可能减慢或阻止此连接的网络问题,因为这会为实例的整个启动过程增加更多时间.

  • 实例类型:实例类型确实会影响操作系统完成引导所需的时间.在相同的情况下,t2.large实例的启动速度比t2.nano快,因为它有更多的RAM,vCPU和更高的CPU积分 - 所有这些都允许操作系统更快地执行启动过程.此外,如果您需要在实例启动过程中检索大量数据,则可能需要使用增强联网模式和EBS优化实例,以确保您拥有满足您需求的最佳带宽; 有关详细信息,请参阅此消息末尾的链接.

  • EBS卷类型:与实例类型一样,EBS卷的性能也是影响实例启动时间总时间的因素.如果您的实例需要在引导过程中从sc1卷(为不经常访问的数据设计的低性能HDD卷)读取大量数据,则启动过程将比您的实例从PIOPS卷读取相同数据的速度慢具有更高的性能 - 如果您的用例包含受此影响的方案,您可能需要测试不同的卷类型以选择更适合您需求的卷类型.同样,实例的根卷类型也会影响启动性能,因为在所有情况下,您都必须从中读取信息.对于大多数情况,默认的"通用SSD"即gp2 EBS卷对于实例根卷来说已经足够了.

最终,启动新实例所需的时间将通过运行特定用例的基准来确定; 我上面提到的一般注意事项可以帮助你减少这个时间,但确定,直到你到达那里的启动时间,满足需要的时候你需要测试和微调每个参数,设置是最适合您的环境.

我在本回复的最后附上了几个链接,并提供了有关我在此回复中提到的项目的更多详细信息.

我希望这些信息对您有用.请让我知道,如果你有任何问题.

谢谢,

相关链接: - EC2实例类型:https://aws.amazon.com/ec2/instance-types/ - EBS卷类型:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html - EBS优化实例:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html - EBS卷的性能提示:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide /EBSPerformance.html - 在EC2 Linux实例上增强网络模式:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html


Asa*_*aph 5

使用EBS支持的AMI,而不是实例存储支持的AMI。从AWS文档中

           Amazon EBS-Backed             Amazon Instance Store-Backed
Boot time  Usually less than 1 minute    Usually less than 5 minutes
Run Code Online (Sandbox Code Playgroud)

- http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device