当我们使用VS发布一个Cloud Service或者在Portal上上传发布包后,就能启动和运行一个云服务,可以保护WebRole,WorkerRole的一个或者多个实例。
Windows Azure是怎么实现这一个过程的呢?要了解这个过程,需要首先了解Windows Azure 的云服务角色架构。
总的来说可以用下面一张图来概括,非常经典的一张图,很多问题都可以在这张图上得到答案。Windows Azure 这些年不断更新,对于这张图来说基本没有变化。
首先对这张图上的名称做解释:
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。
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