分享方式:


Microsoft Azure 傳統虛擬機器 (VM) 結構的工作流程

這很重要

截至 2024 年 9 月 1 日,所有客戶的雲端服務 (傳統) 均已淘汰。 從 2024 年 10 月開始,Microsoft 將停止並關閉任何現有的執行中部署,且資料將會永久遺失。 新部署應該使用 Azure Resource Manager 型的新部署模型 Azure 雲端服務 (延伸支援)

本文概述當您部署或更新 Azure 資源 (例如虛擬機器) 時所發生的工作流程。

備註

Azure 針對建立和使用資源方面,有二種不同的的部署模型:Resource Manager 和傳統。 本文涵蓋之內容包括使用傳統部署模型。

下列圖表顯示了 Azure 資源的架構。

<alt 關於 Azure 工作流程的影像>

工作流程基本概念

A RDFE/FFE 是連接使用者到網狀架構的通訊路徑。 RDFE (RedDog 前端) 為公開的 API,是管理入口網站和傳統部署模型 API 的前端,例如 Visual Studio、Azure MMC 等等。 來自使用者的所有要求都需要先經過 RDFE。 FFE (網狀架構前端) 此層會將要求從 RDFE 轉譯為網狀架構命令。 所有來自 RDFE 的要求都會先經過網狀架構前端 (FFE),以觸達網狀架構控制器。

B. 網狀架構控制器負責維護及監視資料中心內的所有資源。 其與網狀架構作業系統上的網狀架構主機代理程式進行通訊,以傳送客體作業系統版本、服務封裝、服務設定以及服務狀態等資訊。

C. 主機代理程式位於主機 OS 上,負責設定客體 OS。 它也負責與客體代理程式 (WindowsAzureGuestAgent) 的溝通,更新角色以達到預定的目標狀態,並執行客體代理程式的活動訊號檢查。 如果 Host Agent 持續 10 分鐘未收到心跳檢測回應,則 Host Agent 會重新啟動客體作業系統。

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) 中會定義為外掛程式。 在展開為啟動工作時,DiagnosticsAgentRemoteAccessAgent 的特別之處在於各自定義了兩個啟動工作,一個為一般啟動工作,另一個則具有 /blockStartup 參數。 一般的啟動工作被定義為背景啟動工作,這樣當角色本身運行時,它就可以在背景中執行。 /blockStartup 啟動工作被定義為簡單啟動工作,因此 WaHostBootstrapper 會等待其結束後再繼續。 /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 事件。

工作流程程序

  1. 使用者提出要求,例如上傳 ".cspkg" 和 ".cscfg" 檔案、告知資源停止或進行設定變更等等。 您可以透過 Azure 入口網站或使用傳統部署模型 API 的工具提出要求,例如 Visual Studio 發佈功能。 此要求會傳送至 RDFE 以執行所有與訂閱相關的作業,然後將要求傳達給 FFE。 剩下的工作流程步驟是部署新的封裝,並加以啟動。
  2. FFE 會根據客戶輸入的內容(例如,「同質群組」或「地理位置」,還有來自網狀架構的輸入內容,例如機器可用性)來尋找正確的電腦集區,並與該電腦集區中的主要網狀架構控制器進行通訊。
  3. 網狀架構控制器會尋找具有可用 CPU 核心的主機 (或啟動一台新的主機)。 服務封裝和設定會複製到主機,而網狀架構控制器會與主機作業系統上的主機代理程式進行通訊,以進行套件部署 (設定 DIP、連接埠、客體作業系統等)。
  4. 主機代理程式會啟動客體作業系統,並與客體代理程式 (WindowsAzureGuestAgent) 進行通訊。 主機會將心跳訊號傳送給客體,以確認角色正致力於達成其目標狀態。
  5. WindowsAzureGuestAgent 會設定客體作業系統 (防火牆、存取控制清單、LocalStorage 等等),將新的 XML 設定檔複製到 c:\Config,然後啟動 Wahostbootstrapper.exe 程序。
  6. 針對完整的 IIS web 角色,WaHostBootstrapper 會啟動 IISConfigurator,並告訴它從 IIS 中刪除與 web 角色相關的任何現有的 AppPools。
  7. WaHostBootstrapper 會從 E:\RoleModel.xml 讀取啟動工作,並開始執行啟動工作。 WaHostBootstrapper 會一直等到所有簡單啟動工作都完成並傳回成功訊息。
  8. 針對完整的 IIS Web 角色,WaHostBootstrapper 會告知 IISConfigurator 設定 IIS AppPool,並將網站指向 E:\Sitesroot\<index>,其中 <index> 是以零為基底的索引,對應到為服務所定義的 <Sites> 元素數目。
  9. WaHostBootstrapper 會依據下列角色類型來啟動主機處理序:
    1. 工作角色:WaWorkerHost.exe 已啟動。 WaHostBootstrapper 會執行 OnStart() 方法。 傳回之後,WaHostBootstrapper 就會開始執行 Run() 方法,然後同時將該角色標示為「就緒」,並將其放入負載平衡器輪替中 (如果已定義 InputEndpoints)。 之後,WaHostBootsrapper 會進入一個迴圈,不斷檢查角色狀態。
    2. 完整的 IIS Web 角色:aIISHost 已啟動。 WaHostBootstrapper 會執行 OnStart() 方法。 傳回之後,就會開始執行 Run() 方法,然後將該角色同時標示為「準備就緒」,並將其放入負載平衡器輪轉中。 之後,WaHostBootsrapper 會進入一個重複檢查角色狀態的循環。
  10. 完整 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