加快AMI和ASG的创建速度

13

使用 Ansible 创建一个 Ubuntu 实例的 AMI,然后使用此 AMI 创建一个启动配置,最后更新和自动伸缩组。有没有可以快速完成 ASG 和 AMI 步骤的捷径,以便在 10 分钟内完成?

2个回答

25
我曾通过 AWS 支持工单提出了类似的问题,以下是他们的回复:启动新的EC2实例时,主要耗时的过程是实例内OS的启动过程。无论安全组/网络ACL的数量多少、SSH密钥对的数量以及与实例相关联的角色如何,都不会对启动时间产生明显影响。实例启动所需的大部分时间都由OS本身消耗。
有了这个理解之后,让我来介绍一些在实例引导过程中可能耗费最多时间的主要项目,下面所有内容将集中在EC2的Linux环境:
- 本地文件系统挂载:如果实例需要挂载大量文件系统,则这将增加引导过程的时间。根据您使用的文件系统类型,您可能需要每隔一定数量的天数运行一次检查。例如,在Linux上,您可能需要每90天在ext4文件系统上运行fsck(此周期可能会因设置而异),并且在引导过程中自动触发此检查,如果检测到已超过该周期。防止这种情况的策略可以是在创建您将用于启动新实例的AMI之前执行这些检查,以便从此AMI启动的任何实例最近都已检查其文件系统,并且在首次启动实例时不会遇到意外的fsck执行。根据您使用的文件系统类型,可能可以完全禁用这些定期检查,但是我不建议这样做,因为它们是保持文件系统完整性所必需的。 - 远程文件系统挂载:如果实例需要挂载任何远程文件系统(例如,EFS共享或任何传统NFS共享),则取决于与共享此远程文件系统的服务器的网络连接情况,可能会延迟引导过程。在最坏的情况下,如果共享文件系统的服务器处于离线状态,则引导过程将被中断,直到此连接超时并失败。如果在启动实例时默认挂载任何远程文件系统,请确保共享它们的服务器在启动实例之前可用。 - 常规OS初始化脚本:引导过程消耗的时间中最大的部分将用于启动OS服务。在Linux中,有两个模型:传统的SystemV init(按顺序一个接一个地启动服务)和相对较新的systemd(能够并行启动服务,并因此在某些情况下缩短引导时间)。您使用哪种方式取决于您在实例中运行的Linux发行版。例如,如果需要启动DB服务器,并且每次启动实例都需要很长时间,则可以考虑使用systemd,因为它允许启动其他不相关的服务,只要它们没有此DB服务器作为先决条件。 - 用户数据和cloud-init脚本:这些在常规OS初始化脚本完成后执行。与前面提到的项目一样,您可能希望检查您执行的任何自定义脚本是否经过优化,以便它们可以尽可能地花费最短时间;建议在将任何自定义用户数据脚本添加到新实例启动之前逐个测试这些脚本以测量它们的时间,以便您可以更好地了解它们对实例启动整体时间产生的影响。如果您的脚本正在检索任何外部文件(例如,从S3存储桶下载某些内容,运行已安装包的自动更新等),则上述“远程文件系统挂载”中提到的相同注意事项适用-请确保没有可能会减慢或阻止此连接的网络问题,因为这会

谢谢,

相关链接: - 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


7

好的,我会尝试一下。有没有特定的实例大小可以加快速度? - James
当我查看云镜像列表时 - http://cloud-images.ubuntu.com/locator/ec2/hvm:ebs hvm:ebs-io1 hvm:ebs-ssd - James
我不认为实例大小有多大关系。我相信速度的提高来自于从EBS卷中获取OS映像与从S3下载整个OS映像之间的差异。 - Asaph
我会在文档中购买5分钟的时间,但是我从未见过任何EC2实例在不到1分钟内启动。我想这取决于您如何定义启动。现在在Google Compute Engine上,我可以在约23秒钟内“启动”虚拟机并进行ssh连接。 - Kuberchaun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接