我正在使用EC2上托管的Web服务,并且需要根据负载运行不同数量的实例。我们已经启动并运行了基本服务,但是我们苦苦挣扎的事情之一是调配和启动Windows实例所花费的时间(我们使用了仅在Windows上运行的第三种工具)。我已经看到这需要10分钟到45分钟的惊人时间。
是否有人对如何加快EC2实例的启动有任何提示?例如,由于Windows服务器的AMI比Linux AMI大,所以我想知道是否可能要确保包含AMI的S3存储桶位于启动实例的同一区域中,所以大概使配置新实例更快。
我正在使用EC2上托管的Web服务,并且需要根据负载运行不同数量的实例。我们已经启动并运行了基本服务,但是我们苦苦挣扎的事情之一是调配和启动Windows实例所花费的时间(我们使用了仅在Windows上运行的第三种工具)。我已经看到这需要10分钟到45分钟的惊人时间。
是否有人对如何加快EC2实例的启动有任何提示?例如,由于Windows服务器的AMI比Linux AMI大,所以我想知道是否可能要确保包含AMI的S3存储桶位于启动实例的同一区域中,所以大概使配置新实例更快。
Answers:
昨晚我安装了3个实例的Windows 2003 Server实例。前两个耗时约45分钟,第三个耗时约一个小时,整整花了2个小时才准备就绪!
那些根本没有任何S3用法。我怀疑除了等待亚马逊逐步提高部署速度之外,是否有办法加快这一基本步骤。因此,我得出的结论是,可以预料会有一定的延迟,而Kurt的建议是好的,那就是保留1或2个已经准备好的储备。
您可以做的另一件事是多次创建AMI类型的新实例。然后尝试使用您的S3存储几次,看看会增加多少时间。我假定图像和S3之间的可用区域应该匹配,尽管我不知道会有多少时间差。
一旦确定了配置的最长时间,就将负载/使用率提前几分钟。
Amazon Windows实例在启动时会重新启动,因为“ EC2 Config” Windows服务的默认配置是将您的主机重命名为实例的内部DNS名称。重命名主机需要在Windows上重新启动。如果不需要使用实例的内部DNS名称,则可以通过禁用SetComputerName功能而受益。Windows实例还具有不必初始化启动驱动器的优势,因为在启动驱动器中您可能已经再次捆绑了配置,从而节省了更多实例启动时间。所有这些都可以通过EC2 Windows配置服务来实现。
Windows配置服务: http : //docs.amazonwebservices.com/AWSEC2/latest/UserGuide/appendix-windows-config.html
我的Windows小型实例通常需要15-18分钟才能启动(较大的实例会更快)。根据您的要求,您也许可以将所有软件捆绑在AMI内,并可以在此期间启动并运行所有程序。我理解不将所有内容捆绑到AMI中的保留意见,但是在生产时间中将所有捆绑在一起的生产AMI值得改善。如果要在构建环境中,请使构建脚本分开。
此外,由于Amazon已经发布了EBS根卷,而不是实例存储根卷。在EBS卷上运行的Windows小映像在将近5分钟的时间内启动,而之前花费了将近20分钟。另外,您不需要终止-您可以停止/启动它们-根据您的设置,这可能会在某些启动脚本中节省几分钟的时间。
从本质上定制Windows EC2 Config服务,AMI并可能使用EBS引导卷,应将启动时间减少到将近5分钟。您可以避免根据您的应用在ec2实例启动时运行的sysprep,尤其是出于开发目的。避免在启动时更改主机名的未经系统准备的m1.large映像可以在大约2分钟内启动,这一点还不错。
就目前而言,据我所知,这是在Amazon EC2上使用Windows可以做到的最好,但这确实还不错。如果您能够根据平均使用模式来预测未来将近10分钟,那么您应该能够启动更多实例并处理额外的负载。
我们已经遇到了这个确切的问题,但是以一种非常严肃的方式-我们的新公司将Amazon EC2扩展到了虚拟实验室环境(多用户,策略,共享等)中,因此我们需要加快启动时间。 Windows机器。我们最大的决定是在应用程序中仅支持基于EBS的卷,因为它们是唯一可以在5到10分钟内启动的卷。在我们的测试中,我们发现实例存储的启动时间变化很大,有时会花费大量时间,这对我们来说毫无用处。
Simon @ EC2上的LabSlice虚拟实验室管理