AMI发布真的很慢

时间:2011-02-02 03:33:00

标签: amazon-ec2 cloud amazon-web-services

我正在使用的Windows AMI(EBS支持)的启动时间存在巨大差异。有些人在3分钟内就开始了。其他人可能需要20多分钟。我的理解是默认的Windows AMI可能很慢,因为它们需要两次重新启动才能激活,但在我的情况下,这些都是自定义的机器,无论是我创建的公共机器还是快照。


在类似的说明中,我正在检索EC2控制台中的日志文件,以了解我的机器何时启动。但是,有些机器似乎没有生成任何日志?实际上,我有一个可变的启动时间和变量日志记录,在这种情况下,我怎么能真正告诉Windows机器已成为可用的?

2 个答案:

答案 0 :(得分:5)

需要花费不同的时间在EC2中启动Windows AMI。您可以通过为实例设置固定的计算机名称来最小化它。像在任何Windows计算机上一样执行此操作 - 在“我的电脑”,“计算机名称”选项卡的属性中。然后,从“开始”菜单的“所有程序”列表中运行“EC2ConfigService Settings”。该程序由亚马逊在大多数基础AMI上安装。在该程序中,在“常规”选项卡上,取消选中“设置计算机名称”。 这样可以避免系统在启动图像时重新启动一次,就像设置名称一样。

但是,当您的实例准备就绪时,您希望 通知 !这对亚马逊的简单通知服务来说是一个完美的工作。该服务(也称为SNS)易于以编程方式(例如,来自Windows .NET项目)免费使用(对于前100,000条消息,总共小于1GB),并且通知是即时的。

发送通知的代码(在VB.NET中):

    Imports Amazon.EC2.AmazonEC2Client  
    Imports Amazon.SimpleNotificationService  
    DIM LabSNS As New AmazonSimpleNotificationServiceClient(Lab_AWSKey, Lab_AWSSecretKey)  
    Dim PubReq As New Amazon.SimpleNotificationService.Model.PublishRequest  
    Dim Msg As String 'Messege to be built up, then be sent.  It is body of eMail.  
    Msg = "The instance is running and ready!"  
    Msg = Msg + vbCrLf + "Previous State of machine was:" & PreviousState 'A made-up global  
    Msg = Msg + [Any other info. I want to send myself about the start of the instance.]  
    PubReq.WithTopicArn(Topic)'Topic is a global. It's value is a key from SNS topic setup.  
    PubReq.WithSubject("EC2 Instance is Ready!")  
    PubReq.WithMessage(Msg)  
    LabSNS.Publish(PubReq)  

该代码需要免费的亚马逊SDK for .NET。编写包含上述代码的程序。将程序设置为在计算机启动后运行,在登录之前,使用Windows任务计划程序 - 创建一个在“系统启动时”触发的调用程序的任务。

此处记录了SNS的设置:SNS Documentation

发送电子邮件看起来很麻烦,但是,在发送电子邮件时,亚马逊的EC2环境具有很高的限制性。许多人试图将EC2用作垃圾邮件平台,因此亚马逊已经彻底阻止了SMTP(电子邮件)流量,除非亚马逊规定。您不能只在Amazon安全组上打开一个端口来绕过Amazon的阻止。

亚马逊确实拥有可在EC2内使用的一般电子邮件设施。它被称为亚马逊简单电子邮件服务(SES)。这对您来说效果不佳,因为它是专为批量电子邮件设计的。因此,SES的定价,异常处理和消息传递不能很好地满足您的需求,我不这么认为。

另一方面,SNS对此非常有用。它包括一个初始电子邮件给收件人(您,也许您可​​能希望通知您的服务器上线),询问他们是否希望收到该主题的未来消息;他们可以选择退出,并且必须回复以进一步接收。

设置过程(如上面的方框所示)可以通过亚马逊的AWS管理控制台轻松完成。 (您的问题暗示您已经拥有此EC需要的AWS EC2帐户。)设置完成后,从AMI启动的任何实例都会发送一个电子邮件,其中包含您选择的任何信息(可用于您的程序)准备好了。

在设置中它是免费的,并且在操作中坚如磐石。

答案 1 :(得分:1)

无论Windows AMI的来源如何,它都会在启动过程中重新启动多次,然后才能通过RDP获得。所有Windows AMI都源自亚马逊生产的Windows AMI,它们具有设计的启动过程。 [有人建议将此引导过程硬编码到在来宾VM中运行的自定义内核中。]

控制台日志通常需要2到5分钟才能显示。

不幸的是,EC2上的Windows比linux更难自动化和跟踪。 RightScaleScalr人已经做了一些很好的工作,将Windows集成到他们的管理平台中。 Opscode Chef配置管理工具还支持EC2中的Windows,可以帮助您发现实例何时可以使用。