2012-01-27 90 views
2

假设我有一个运行三个实例的Azure角色。我要求Azure通过Management Portal或Management API将角色数量更改为两个。当我缩放Azure角色时,哪些实例会停止?

如何将Azure的决定采取哪个角色了吗?

+0

难道这不是落入“如果你要问,你这样做是错误的”的范畴?实际情况是否可以根据需要来来回回? – 2012-01-27 08:37:03

+0

@Damien_The_Unbeliever:分类。当一个角色被取消时,它应该停止并正确地完成其工作,因此意外取消的角色会导致失去已完成工作的一部分。 – sharptooth 2012-01-27 08:41:16

+1

@Damien_The_Unbeliever - 实例失败,您可以用幂等操作处理失败并导致工作延迟。尽管如此,在非失败情况下:假设有一个呈现作业在每个工作者实例上执行,并且每个都需要一个小时。你有大量的请求,所以你从两个实例跳到5.几个小时后,流量下降,所以你转回到2.你不能指定关闭哪些实例。假设3个实例处于空闲状态,2个正忙着渲染。可能会关闭1或2个繁忙实例,导致重新运行渲染作业。 – 2012-01-27 10:51:46

回答

4

正如英国开发者所提到的,在Windows Azure结构控制器决定实例关闭其。你无法控制这个过程。我不认为它总是最后一个数字,因为我不确定结构控制器在关闭后是否不重命名这些实例。所以即使关闭IN_1,在进程结束时,我们仍然会有IN_0和IN_1,例如IN_0和IN_2。

可以使用RoleEnvironment.Stopping事件来处理您的实例的正确停止(干净关闭)。在虚拟机退出负载平衡器旋转之后并在调用RoleEntryPoint类的OnStop Method之前,将引发此事件。

我不知道我在哪里注意到,但我知道有一个很难完成清洗的时间限制,也就是说,我认为等待OnStop或Stopping处理程序5分钟后,实例会关闭(我记不清楚了,但是fabrci控制器不会永远等你清理)。

+0

Stopping事件的时间限制一度被传言为大约30秒。但实际上这是由于一个已经修复的bug。最后,我听说没有时间表需要完成Stopping事件,但我总是会提醒人们尽可能简短地保持它。 – BrentDaCodeMonkey 2012-01-27 13:47:26

+0

这是5分钟的停止时间,然后它被迫。这不是无限的。 – dunnry 2012-01-28 19:51:52

+1

添加一些澄清,因为这个答案只是从另一个问题。缩小时删除的实例始终是最后一个(即具有最高IN_ 号码的实例)。目前没有文件记录,理论上可以在将来改变,但目前没有计划改变这种行为。 – kwill 2014-04-04 16:32:52

1

它通常会被纺了最后一个。所以你有IN_0 IN_1和IN_3。我只有在看到IN_3时才会看到IN_3,因此看起来就像是IN_3。

然而,这不是任何地方通过微软因此这不能保证是下降的一个记录......似乎只是在实践中。

+1

微软的内部人员在1.2 SDK时间范围内对此进行了测试。就像你说的那样,最新的(最高的)90%的时间。但是,有一些结果不是。所以,这只是一种启发式的方法。 – dunnry 2012-01-28 19:54:56

相关问题