有没有办法减少Azure部署启动和被调用的角色OnStart()代码之间的时间?

时间:2012-05-11 06:40:15

标签: windows deployment azure

目前,当我使用Windows Azure管理门户创建部署时,需要大约9(9!)分钟才能运行我的角色OnStart()中的代码。我觉得有些不对劲 - 九分钟是非常长的。

我有一个小的启动任务,我期望在几秒钟内完成(并且在Compute Emulator下运行时几秒内完成),所以看起来Azure基础架构在那里做大事所有的时间。

有没有办法加快这个过程?

3 个答案:

答案 0 :(得分:12)

将应用程序部署到Windows Azure时,取决于您的VM大小和实例数,这就是:

  1. 您提供VM类型(小型,中型,大型,前大型)和实例计数(例如N)

  2. 依赖于VM类型设置,如果您选择了小型,则Fabric Controller(FC)需要找到一个可以为您启动单核VM的插槽,或者如果您选择了ex-large,那么FC需要找到一台主机来托管8核心的guest虚拟机。在这个步骤中,可能会出现两种可能性(有更多但是为了简单起见,我只引用了2):

    2.1 FC可以找到一个已准备好的节点(或机架),它已经有一个或多个可以自由托管VM的核心 2.2 FC可能无法在所有正在运行的主机节点中找到任何空核心,并且需要重新启动新节点来托管您的来宾虚拟机

  3. 如果为路径2.1选择了VM,则在这种情况下主机VM已经打开,主机只需要根据您的大小为您配置来宾VM。这可能需要更少的时间,因为系统只需要配置和启动您的VM。

  4. 如果你的VM被选为路径2.2,那么首先主机将启动(如果它没有运行且非常常见*),那么你的客户虚拟机需要配置并启动。此路径将比路径2.1更长。

  5. 注意:使用2.1和2.2时,您可能必须在部署相同的应用程序时分离经验。

    1. 同样的事情会发现为您的服务运行N个实例,但是这个过程将与2.1 / 2.2并行发生,但时间将基本相同。此外,FC还需要为每个实例找到不同的故障域,以便在一个实例关闭时,其他实例仍处于活动状态。
    2. 因此,在系统内部,除了简单地打开Windows Server 2008计算机外,还有很多工作要做。由于多个VM在单个主机上运行,​​因此安全性是主要的,因此在配置来宾VM时,需要做很多事情来保持工作正常。

      关于您对“随时可用的小型服务器队”的评论,这是一个很好的评论,但是当一个服务于全世界的数据中心“小”是非常“巨大”的数字并且只是为了让数千台机器运行没有任何客人是不合逻辑的。你也只是偶尔部署一次,这不是你每天都会做的,所以不到10分钟仍然可以理解。

答案 1 :(得分:8)

Windows Azure通常需要5到15分钟才能部署。它正在做的是启动服务器,虚拟机,启动Windows等。随着时间的推移,它会越来越快,但9分钟肯定不会与众不同。

答案 2 :(得分:0)

如果您指的是Azure中的现有虚拟机,您停止(取消分配)并暂时启动,那么是 - 有一种方法可以让它超级快,但您需要付费。 您必须将VM移动到使用高级存储。

主要区别在于,高级存储不仅适用于速度更快的SSD驱动器,而且在不使用时也不会存档 - 因此即使VM处于脱机状态,您也需要付费。 请参阅正常的stoage VM,当你启动它时,它们会将VHD复制到另一个存储它运行的存储中,当你完成它时,它会被存档而你不需要为该磁盘付费。

但是对于高级存储,您的VHD始终可以运行,因此当您启动VM时,它不会被复制到任何地方。这使它更快。缺点:即使VM被解除分配,您也需要为VHD付费。

所以,如果你想支付或不支付费用,由你决定 - 但有一种方法可以做到。

(我不是一个天蓝色的专家,但我确实询问了一些关于它的MVP以及他们所解释的内容。如果这不准确,我很乐意听到。)