当咱们使用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