2012-01-27 81 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

相關問題