2016-04-01 75 views
1

我們已經爲MS Azure編寫了一個高擴展性的Cloudservice,其中有兩個角色:「WebsiteRole」和「WebsiteWorkerRole」。爲了獲得更好的性能,我們在多個地區部署這個Cloudservice(2x US,2x EU,1x JP)。我們爲每個區域配置了不同的配置文件(EuWestProductive.azurePubxml,ServiceConfiguration.CloudEuWest.cscfg,Web.ReleaseEuWest.config)。Azure:不要按配置部署角色

現在的問題:在每個地區我們都運行「WebsiteRole」和「WebsiteWorkerRole」。但是「WebsiteWorkerRole」只有很小的任務,所以在一個地區只有一個額外的小實例已經足夠了。

我們嘗試將角色實例計數設置爲零(ServiceConfiguration.CloudEuWest.cscfg)。但這是不允許的: Azure Feedback: Allow a Role instance count of 0

在部署Cloudservice時是否有其他方式來刪除角色?

回答

2

不,正如您發現的那樣,雲服務不允許將比例調整爲零。您必須有效地移除部署。要對已有的內容進行最低限度的更改,可以將兩個角色分成兩個不同的部署。然後,有一個Azure自動化腳本或一組腳本可以在其他地方運行,在需要時處理部署工作者角色,並在不需要時退出。

根據工作負載的類型,您也可以考慮採用另一種使用Azure Automation之類的工具來執行工作。如果是一天只發生幾次的少量處理,情況尤其如此。您需要按照自動化腳本的分鐘來收費,所以請確保它的運行時間比實際當前實例少。

這真的歸結到工人正在做什麼,它需要做多少處理,需要多少資源以及需要多長時間運行。有很多選項,比如Azure自動化,Web角色的另一個線程,獨立的雲服務部署等等,每個選項都有自己的優缺點。一種選擇甚至可以查看他們剛剛宣佈的新的Azure函數(在預覽中並由執行收取費用)。

簡短答案是將工作人員與WebSiteRole部署分開,然後爲該工作人員角色確定最佳託管機制,確保該選項包含僅在需要時才能運行的功能。

0

感謝@MikeWo,您的想法將部署分開很棒! 我已經通過一個小例子項目驗證了這一點,它工作得很好。現在,也可以更改每個區域的VM大小和其他配置。

Example project

(評論不允許圖像)

+0

從技術上說,是的,但對於一些設置,在服務定義文件,如虛擬機大小,你必須做一些工作,得到那個因爲該文件與代碼打包在一起,因此在構建和部署之前就會發生。有很多方法可以實現這一點,例如自定義構建步驟,VS中單獨的Cloud Project項目,比如上面所做的等等。服務配置中的任何配置都可以在部署時輕鬆處理。 – MikeWo