使用Ansible我创建一个ubuntu实例的AMI,然后使用这个AMI创建一个Launch配置,然后更新并自动扩展组,是否有任何快捷方式可以加速ASG和AMI步骤,需要10分钟+
答案 0 :(得分:15)
我通过AWS Support票询问了类似的问题,这里有回复:
启动新EC2实例时的主要耗时过程 是实例中操作系统的启动过程:或多或少 安全组/网络ACL,不同数量的SSH密钥对,以及 与实例关联的角色应该没有可衡量的影响 它启动所需的时间。大部分时间都需要 启动一个实例被操作系统本身消耗。
考虑到这一点,请允许我查看一些主要项目 实例启动时可能消耗的时间最多 - 对于所有实例 我将从EC2的角度专注于Linux 视图:
本地文件系统挂载:如果您的实例需要挂载大量文件系统,这会为您的启动添加一点时间 处理。根据您使用的文件系统类型,您可能需要 每隔一定天数定期检查一次 - 例如,开启 Linux你可能需要每隔90天在ext4文件系统上运行fsck (此期间可能会根据您的设置而改变)和操作系统 在安装文件系统时自动触发此检查 如果检测到已超过该时间段,则启动。一个策略 防止这种情况可以在创建之前执行这些检查 AMI您将用于启动新实例,以便任何实例 从这个AMI启动将最近检查他们的文件系统 并且在启动你的时候你不会遇到意外的fsck执行 这是第一次实例。根据您的文件系统类型 使用,可以完全禁用这些定期检查, 但是我不会推荐它,因为它们是维持时间的必要条件 文件系统的完整性。
远程文件系统挂载:如果您的实例需要挂载任何远程文件系统(例如,EFS共享或任何传统的NFS共享), 您的启动过程可能会延迟,具体取决于网络连接 共享此远程文件系统的服务器。在最坏的情况下 方案,如果共享文件系统的服务器脱机,则启动 进程将被中断,直到此连接超时并失败。 如果您在启动时默认安装任何远程文件系统 您的实例,确保共享它们的服务器可用 在启动实例之前。
常规操作系统初始化脚本:启动操作系统将占用启动过程所消耗的大部分时间 服务。在Linux中有两种类型的模型: 传统的SystemV init(以串行方式启动服务,一个 在另一个之后)和相对较新的systemd(能够 并行启动服务,从而减少一些启动时间 情况)。您使用哪些将取决于Linux 您在实例中运行的分发。例如,如果您需要 启动一个数据库服务器,每次启动时可能需要很长时间 例如,考虑systemd它可能是值得的 其余的无关服务并行启动,如 只要他们没有这个数据库服务器作为先决条件。
用户数据和cloud-init脚本:这些脚本在常规OS init脚本结束后执行。就像之前的项目一样,你 可能想要检查您执行的这些自定义脚本中的任何一个 优化,以便他们可以花费最少的时间;它' S 建议单独测试任何自定义用户数据脚本 在将它们添加到新实例启动之前测量它们的时间 可以更好地了解它们在整体时间内的影响 实例启动。如果您的脚本正在检索外部的任何文件 实例(如果您从S3存储桶下载某些内容,请运行 自动更新已安装的软件包等),同样如此 考虑因素我已经提到了#34;远程文件系统安装"项目 上面提到的应用 - 确保没有网络问题 可能会减慢或阻止此连接,因为这会增加更多 时间到您的实例的整个启动过程。
实例类型:实例类型确实会影响操作系统完成引导所需的时间。在同样的情况下,一个t2.large 实例将比t2.nano更快启动,因为它有更多 RAM,vCPU和更高的CPU积分 - 所有这些都允许 操作系统更快地执行启动过程。此外,如果你需要 作为实例启动过程的一部分检索大量数据, 您可能希望使用增强联网模式和EBS优化 确保您拥有最佳可用带宽的实例 需要;有关详细信息,请参阅此消息末尾的链接 此
EBS卷类型:就像实例类型一样,您的EBS卷的性能也是影响整体时间的因素 实例启动时间。如果你的实例需要读大 从sc1卷(HDD)启动过程中的数据量 为不经常访问的数据设计的低性能卷), 如果您的实例读取相同的引导过程将比较慢 来自PIOPS卷的数据具有更高的性能 - 如果您使用的话 case包含一个你受此影响的场景 想要测试不同的卷类型来选择更好的卷类型 适合您的需求。同样,您实例的根卷的类型 也将影响启动性能,因为在所有情况下你都会 必须从中读取信息。对于大多数情况,默认为"一般 用途SSD" a.k.a. gp2 EBS卷对于root来说已经足够了 卷。
最终,将确定启动新实例所需的时间 通过为您的特定用例运行基准测试;一般 我上面提到的注意事项可以帮助你减少这个时间,但是 确定哪种设置最适合您的环境 需要测试并微调每个参数,直到达到某一点 启动时间适合您的需求。
我在本回复的最后附上了几个链接 有关我在此回复中提到的项目的详细信息。
我希望这些信息对您有用。如果,请告诉我 你有任何问题。
谢谢,
相关链接: - 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
答案 1 :(得分:4)
使用EBS支持的AMI而不是支持Instance Store的AMI。来自AWS docs:
Amazon EBS-Backed Amazon Instance Store-Backed Boot time Usually less than 1 minute Usually less than 5 minutes
- http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device