2013-08-26 40 views
8

將完整的雲服務項目推到雲上非常耗時,所以如果它發生了一些細微的變化,我希望它們立即反映,那麼我將RDP轉換爲Web角色並進行這些更改並重新啓動IIS。像這樣的工作也可以爲工作人員完成嗎?我可以RDP並替換DLL文件,但我不知道如何重新啓動輔助角色,因爲它不會在IIS上運行。我不確定工作人員角色的運行情況。我知道這不是一個好的做法,但由於我仍處於開發階段,這將極大地加速我的測試過程。如何通過執行RDP手動更改雲上的輔助角色文件?

任何簡單的方法來更新雲上的工作者角色,而不是完全推動?

回答

12

布倫特是100%正確的,我已經upvoted他的答案。您應該小心不要通過RDP對生產服務進行任何更改。話雖如此,但您確實提到過,這只是爲了在開發階段進行測試,而且能夠在不必重新部署整個雲服務的情況下更新單個DLL文件並進行測試就具有很大的價值。在Azure虛擬機上進行故障排除時,我一直這樣做。

檢查http://blogs.msdn.com/b/kwill/archive/2011/05/05/windows-azure-role-architecture.aspx瞭解VM上進程的體系結構。尤其要注意的是,WaHostBootstrapper是工作角色和Web角色的父進程。要替換網絡或工作者角色中的DLL,最好的方法是:

  1. 終止WaHostBootstrapper。你可以通過任務管理器來完成。
  2. 替換該DLL。請注意,在執行此操作時需要快速,因爲在殺死WaHostBootstrapper *後,Azure會立即自動重啓所有內容。
  3. 等待WaHostBootstrapper自動重啓,然後自動重啓WaWorkerHost/WaIISHost。

*如果您需要更長時間進行更改,則可以將調試器(如WinDBG)附加到WindowsAzureGuestAgent並將其保留在進程中。這將阻止Azure自動重新啓動主機引導程序進程。進行更改後,可以分離調試器並讓WindowsAzureGuestAgent繼續運行。請注意,如果您將WindowsAzureGuestAgent保持停止狀態超過10分鐘,則主機代理將檢測到該虛擬機無響應並重新啓動虛擬機。

*編輯:更詳細的說明可在http://blogs.msdn.com/b/kwill/archive/2013/09/05/how-to-modify-a-running-azure-service.aspx

+0

非常感謝,這正是我想要的!但是我無法在任務管理器進程中找到WaHostBootstrapper。雖然有一個WindowsAzureGuestAgent進程,是否啓動了worker角色? – Bitsian

+0

如果您看到WindowsAzureGuestAgent,但不是WaHostBootstrapper,那麼很可能您的角色正在回收。查看http://blogs.msdn.com/b/kwill/archive/2013/08/20/troubleshooting-scenario-1-role-recycling.aspx上的疑難解答工作流程。 – kwill

+0

如果您需要停止幾秒鐘,請停止WindowsAzureGuestAgentService,然後終止WaHostBootstrapper任務。然後你有10分鐘,直到vm重新啓動。 – Archlight

6

簡而言之,你不需要。這樣做與Windows Azure PaaS雲服務的「無狀態」本質直接衝突。如果需要移動某個角色的實例,則該實例將始終恢復到其最初部署的狀態,從而取消您所做的任何更改。角色實例可能隨時被移動。因此,任何嘗試RDP並進行更改都會導致嚴重的痛苦。

如果您確實需要這種類型的動態部署,則可以創建一個啓動腳本,用於從外部存儲(例如Windows Azure Blob存儲)中提取內容文件,並在啓動之前將它們提取到角色實例中。

工作人員本身只是一個長時間運行的控制檯程序,初始進程由來賓虛擬機中的Windows Azure代理進程調用到角色實例的「OnStart」方法啓動。

+1

只是爲了補充一點,布倫特所說的同樣的無國籍狀態也適用於Web角色。您正在做什麼來更新Web角色可能適用於您的開發或測試,但您絕不應該爲生產系統執行此操作。這些更改不會在角色更新,操作系統補丁等方面得到維護。布倫特所示的一切。 – MikeWo

+0

感謝您的支持,但我不會在生產服務器上做任何這樣的更改。由於我仍然處於開發階段,所以爲了查看一些細微的變化而重新部署所有內容是一件非常痛苦的事情,因此正在尋找一些解決方法。我希望Kwill的答案能夠做到這一點。 – Bitsian

+0

有沒有需要在這裏,本地模擬器不履行? – BrentDaCodeMonkey

相關問題