當咱們使用VS發佈一個Cloud Service或者在Portal上上傳發布包後,就能啓動和運行一個雲服務,能夠保護WebRole,WorkerRole的一個或者多個實例。windows
Windows Azure是怎麼實現這一個過程的呢?要了解這個過程,須要首先了解Windows Azure 的雲服務角色架構。服務器
總的來講能夠用下面一張圖來歸納,很是經典的一張圖,不少問題均可以在這張圖上獲得答案。Windows Azure 這些年不斷更新,對於這張圖來講基本沒有變化。架構
首先對這張圖上的名稱作解釋:app
A. RDFE / FFE 用來鏈接用戶到Azure的Fabric. RDFE (RedDog Front End) ,RedDog紅狗是一種酒的名稱,當時負責這個項目的人喜歡這個酒,就以此命名。REFE是一套向外公開的接口,管理網站的API和Service Management的API(ie. Visual Studio, Azure MMC等)。用戶全部的請求都會通過RDFE,而後經過FFE傳給Fabric。異步
B. Fabric controller 就像PC及其的操做系統,它管理和監控數據中心(DataCenter)中的全部資源。它與部署在Host OS上的Host Agent通訊,Host Agent 與Guest Agent (部署在VM,WebRole,WorkerRole上)通訊,收集將Guest OS的版本、服務包、配置和狀態 。網站
C. Host Agent 是Host OS上一個應用,用來部署Gust OS和Gust Agent 通訊。經過心跳方式獲取Gust Agent狀態,若是10分鐘沒有獲得心跳響應,就會重啓Gust OS。操作系統
C2. WaAppAgent 負責安裝、配置和升級WindowsAzureGuestAgent.exe。.net
D. WindowsAzureGustAgent 的職責是:代理
a. 配置Guest OS的防火牆、ACLs、本地存儲資源、服務包和服務配置,以及RDP證書。日誌
b. 爲Role運行設置用戶帳戶
c. 與fabric 就角色(WebRole,WorkerRole)的狀態進行溝通
d. 啓動WaHostBootstrapper進程並檢視這個進程和保證角色運行在良好的狀態
E. WaHostBootstrapper的職責是:
a. 讀取角色配置和啓動角色所需的全部任務和進程。
b. 監控全部子進程。
c. 發起角色狀態檢查。
F. IISConfigurator 的職責是:
a. 啓動IIS服務。
b. 配置.net module
c. 根據<sites>節點的配置建立AppPool和站點。
d. 配置IIS的日誌路徑。
e. 配置站點訪問權限。
G. Startup tasks 在RoleModel的配置文件中。這些任務須要進程WaHostBootstrapper啓動. Startup tasks 能被異步運行(Background startup task )和同步運行(Simple startup task )。
H. DiagnosticsAgent 用來監聽和記錄診斷信息的代理,這個任務是後臺運行任務。RemoteAccessAgent 是用於RDP遠程訪問,這個任務是簡單任務。
I. WaWorkerHost 是worker role的標準宿主進程,宿主了全部關於Role的DLL,執行代碼如OnStart和Run方法嗎。
J. WaWebHost 是Web Role的標準宿主進程,使用HWC。這個在SDK1.2可使用,如今的SDK已經不支持了。
K. WaIISHost 是角色的宿主進程。加載角色訪問的第一個DLL,入口是實現RoleEntryPoint的類,執行OnStart,Run,OnStop等方法。
L. W3WP 是IIS的工做進程。
一下是每一個虛機VM和節點(Node)以及FC的內部結構。
Physical Node: 物理節點(Node),就是一個單片機服務器,能夠分紅多個(通常8個,16個)Guest Partition。
Guest Partition: 包括Guest OS, 角色實例和Guest Agent
Reference:http://blogs.msdn.com/b/kwill/archive/2011/05/05/windows-azure-role-architecture.aspx