加速AMI和ASG创作

时间:2016-02-09 16:30:07

标签: amazon-web-services ansible autoscaling ami

使用Ansible我创建一个ubuntu实例的AMI,然后使用这个AMI创建一个Launch配置,然后更新并自动扩展组,是否有任何快捷方式可以加速ASG和AMI步骤,需要10分钟+

2 个答案:

答案 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