Microsoft Azure 傳統虛擬機器 (VM) 結構的工作流程
重要
截至 2024 年 9 月 1 日,所有客戶的雲端服務 (傳統) 均已淘汰。 自 2024 年 10 月起,Microsoft 將停止並關閉任何執行中的現有部署,且資料將永久遺失。 新部署應該使用 Azure Resource Manager 型的新部署模型 Azure 雲端服務 (延伸支援)。
本文概述當您部署或更新 Azure 資源 (例如虛擬機器) 時所發生的工作流程。
注意
Azure 針對建立和使用資源方面,有二種不同的的部署模型:Resource Manager 和傳統。 本文涵蓋之內容包括使用傳統部署模型。
下列圖表顯示了 Azure 資源的架構。
工作流程基本概念
A。 RDFE/FFE 是連接使用者到網狀架構的通訊路徑。 RDFE (RedDog 前端) 為公開的 API,是管理入口網站和傳統部署模型 API 的前端,例如 Visual Studio、Azure MMC 等等。 來自使用者的所有要求都需要先經過 RDFE。 FFE (網狀架構前端) 此層會將要求從 RDFE 轉譯為網狀架構命令。 所有來自 RDFE 的要求都會先經過網狀架構前端 (FFE),以觸達網狀架構控制器。
B. 網狀架構控制器負責維護及監視資料中心內的所有資源。 其與網狀架構作業系統上的網狀架構主機代理程式進行通訊,以傳送客體作業系統版本、服務封裝、服務設定以及服務狀態等資訊。
C. 主機代理程式位於主機 OS 上,負責設定客體 OS。 它也會處理與客體代理程式 (WindowsAzureGuestAgent) 的通訊,將角色更新為預定的目標狀態,並執行客體代理程式的活動訊號檢查。 如果主機代理程式持續 10 分鐘未收到活動訊號回應,則主機代理程式會重新啟動該客體作業系統。
C2。 WaAppAgent 負責安裝、設定及更新 WindowsAzureGuestAgent.exe。
D. WindowsAzureGuestAgent 負責的工作如下:
- 設定客體作業系統,包括防火牆、ACL、LocalStorage 資源、服務封裝、設定以及數位憑證。
- 為執行該角色的使用者帳戶設定 SID。
- 將角色狀態傳達給網狀架構。
- 啟動 Wahostbootstrapper.exe 並加以監視,以確保角色處於目標狀態。
E. 下列為 WaHostBootstrapper 負責的項目:
- 讀取角色設定,並啟動所有適當的工作和程序以設定並執行角色。
- 監視其所有子處理序。
- 引發角色主機處理序的 StatusCheck 事件。
F. 如果將角色設定為完整的 IIS Web 角色,則會執行 IISConfigurator。 下列為其負責的工作:
- 啟動標準 IIS 服務
- 在 Web 設定中設定重寫模組
- 針對服務模型中所設定的角色來設定 AppPool
- 將 IIS 記錄設定為目標指向 DiagnosticStore LocalStorage 資料夾
- 設定存取權限和 ACL
- 網站位於 % roleroot%:\sitesroot\0 中,而 AppPool 指向這個位置以執行 IIS。
G. 角色模型定義啟動工作,而 WaHostBootstrapper 會啟動這些工作。 啟動工作可以設定為以非同步方式在背景執行,而主機啟動程序載入程式會開始該啟動工作,然後繼續執行其他啟動工作。 啟動工作也可以設定為以簡單 (預設) 模式執行。 在簡單模式中,啟動程序載入程式會等候啟動工作執行完成,並傳回成功 (0) 結束代碼,再繼續執行下一個啟動工作。
H. 這些工作為軟體開發套件 (SDK) 的一部分,而且在角色的服務定義 (.csdef) 中會定義為外掛程式。 在展開為啟動工作時,DiagnosticsAgent 和 RemoteAccessAgent 的特別之處在於各自定義了兩個啟動工作,一個為一般啟動工作,另一個則具有 /blockStartup 參數。 會將一般啟動工作定義為背景啟動工作,如此即可在角色本身正在執行時於背景執行。 /BlockStartup 啟動工作是定義為簡單啟動工作,因此 wahostbootstrapper.exe 會等候其結束,然後再繼續進行。 /blockStartup 工作會等待一般工作初始化完成後,結束工作並允許主機主機啟動載入器繼續作業。 完成此流程後,您就可以在角色流程開始前設定診斷和 RDP 存取,而角色流程必須透過 /blockStartup 工作執行。 此流程也可讓診斷和 RDP 存取在主機啟動程序載入程式完成啟動工作 (透過一般工作執行) 之後繼續執行。
I. WaWorkerHost 是一般背景工作角色的標準主機處理序。 此主機處理序會託管所有角色的 DLL 和進入點程式碼,例如 OnStart 和 Run。
J. WaIISHost 是角色進入點程式碼的主機處理序。其針對使用完整 IIS 的 Web 角色。 此程序會載入使用 RoleEntryPoint 類別的第一個 DLL,並執行此類別的程式碼 (OnStart、Run、OnStop)。 在此程序中會引發在 RoleEntryPoint 類別中建立的任何 RoleEnvironment 事件 (例如 StatusCheck 和 Changed)。
K. W3WP 是角色設定為使用完整 IIS 時所使用的標準 IIS 背景工作處理序。 此處理序會執行從 IISConfigurator 設定的 AppPool。 在此流程中會引發在此處建立的任何 RoleEnvironment 事件 (例如 StatusCheck 和 Changed)。 如果您在這兩個流程中訂閱事件,則會在兩個位置 (WaIISHost 和 w3wp.exe) 引發 RoleEnvironment 事件。
工作流程程序
- 使用者提出要求,例如上傳 ".cspkg" 和 ".cscfg" 檔案、告知資源停止或進行設定變更等等。 您可以透過 Azure 入口網站或使用傳統部署模型 API 的工具提出要求,例如 Visual Studio 發佈功能。 此要求會傳送至 RDFE 以執行所有與訂閱相關的作業,然後將要求傳達給 FFE。 剩下的工作流程步驟是部署新的封裝,並加以啟動。
- FFE 會根據客戶輸入的內容(例如,「同質群組」或「地理位置」,還有來自網狀架構的輸入內容,例如機器可用性)來尋找正確的電腦集區,並與該電腦集區中的主要網狀架構控制器進行通訊。
- 網狀架構控制器會尋找具有可用 CPU 核心的主機 (或啟動一台新的主機)。 服務封裝和設定會複製到主機,而網狀架構控制器會與主機作業系統上的主機代理程式進行通訊,以進行套件部署 (設定 DIP、連接埠、客體作業系統等)。
- 主機代理程式會啟動客體作業系統,並與客體代理程式 (WindowsAzureGuestAgent) 進行通訊。 主機會將活動訊號傳送給客體,以確保角色正致力於達成其目標狀態。
- WindowsAzureGuestAgent 會設定客體作業系統 (防火牆、存取控制清單、LocalStorage 等等),將新的 XML 設定檔複製到 c:\Config,然後啟動 Wahostbootstrapper.exe 程序。
- 針對完整的 IIS Web 角色,Wahostbootstrapper 會啟動 Iisconfigurator,並告訴其從 IIS 中為 Web 角色刪除任何現有的 AppPools。
- WaHostBootstrapper 會從 E:\RoleModel.xml 讀取啟動工作,並開始執行啟動工作。 WaHostBootstrapper 會一直等到所有簡單啟動工作都完成並傳回成功訊息。
- 針對完整的 IIS Web 角色,Wahostbootstrapper 會告知 Iisconfigurator 設定 IIS AppPool,並將網站指向
E:\Sitesroot\<index>
,其中<index>
是以零為基底的索引,指向為服務定義的元素數目<Sites>
。 - WaHostBootstrapper 會依據下列角色類型來啟動主機處理序:
- 背景工作角色:WaWorkerHost.exe 已啟動。 WaHostBootstrapper 會執行 OnStart() 方法。 傳回之後,WaHostBootstrapper 就會開始執行 Run() 方法,然後同時將該角色標示為「就緒」,並將其放入負載平衡器輪替中 (如果已定義 InputEndpoints)。 之後,WaHostBootsrapper 會重複檢查角色的狀態。
- 完整的 IIS Web 角色:aIISHost 已啟動。 WaHostBootstrapper 會執行 OnStart() 方法。 傳回之後,就會開始執行流程執行 () 方法,然後將該角色同時標示為「就緒」,並將其放入負載平衡器輪替中。 之後,WaHostBootsrapper 會重複檢查角色的狀態。
- 完整 IIS Web 角色的傳入 Web 要求會觸發 IIS,啟動 W3WP 流程並處理該要求,如同在內部部署 IIS 環境中一般。
記錄檔位置
WindowsAzureGuestAgent
- C:\Logs\AppAgentRuntime.Log。
此記錄包含了服務的變更,包括啟動、停止及新的設定。 如果服務並無變更,在此記錄檔中出現長時間間隔是正常情形。 - C:\Logs\WaAppAgent.Log。
此記錄包含狀態更新和活動訊號通知,每 2-3 秒會更新一次。 此記錄檔包含執行個體狀態的歷程檢視,並會在執行個體不在就緒狀態時通知您。
WaHostBootstrapper
C:\Resources\Directory\<deploymentID>.<role>.DiagnosticStore\WaHostBootstrapper.log
WaIISHost
C:\Resources\Directory\<deploymentID>.<role>\WaIISHost.log
IISConfigurator
C:\Resources\Directory\<deploymentID>.<role>\IISConfigurator.log
IIS 記錄
C:\Resources\Directory\<guid>.<role>.DiagnosticStore\LogFiles\W3SVC1
Windows 事件記錄
D:\Windows\System32\Winevt\Logs