Azure PaaS - Cloud Service服务架构及快速调试
09/11/2014
17 minutes to read
In this article
开发Windows Azure云服务(Cloud Service)过程中,难免会出现一些代码异常或者部署失败,对于Azure开发者,有必要了解一下Azure云服务在云端的实际服务架构,并借此来调试和诊断Azure云服务,快速找出已有云服务中存在或隐藏的问题。本篇将覆盖以下两方面的内容:
1.了解Azure云服务的服务架构
2.了解云服务的快速调试方法
博主有幸在2013年的微软TechED会议(北京-上海) 上对本主题进行了讲解,本篇在之前的研究基础上,进行了部分更新。
1. 了解Azure云服务的服务架构
Microsoft Azure托管服务(Cloud Service)的启动和运行过程如图所示。
„ RDFE:Azure平台对外统一接口。图中步骤1表示开发者发起操作请求到RDFE,如上传发布包、更新托管服务配置、管理证书等。操作可以通过Azure管理门户来完成,也可以通过Visual Studio、PowerShell等工具完成。FFE模块将外部请求转成内部命令,模块查找到目标计算机群,开始与集群总控通信。
„ Fabric Controller:集群总控,维护和监控数据中心的所有计算资源。集群总控寻找可用的计算资源(CPU、Memory等),并与相应的Host Agent进行通信,将发布包和配置文件等信息复制到目标宿主服务器。
„ Host Agent:存在于Host OS中,负责准备Guest OS,并与Guest OS通信(WaAppAgent),10分钟无信号即重启Guest OS。
„ WaAppAgent:安装、配置、更新WindowsAzureGuestAgent。
„ WindowsAzureGuestAgent:配置Guest OS,包括防火墙、本地缓存、发布包、执行账号等;与集群总控Fabric Controller保持心跳同步;启动WaHostBootstrapper。
„ WaHostBootstrapper:读取配置,执行启动任务和部署发布包,监测所有子进程并汇报StatusCheck结果。
„ IISConfigurator:适用于SDK 1.2以上的发布包部署(非HWC模式),负责安装IIS并清空IIS下默认的Application Pool,待Startup Task执行完后,IISConfigurator完成网站部署和配置等。
„ Startup Tasks:预启动任务,包括用户自定义的依赖任务和角色需要的预装服务,以三种模式运行。对于background模式的预启动任务,被启动之后,WaHostBootstrapper不等待其返回值直接进入下一个Startup Task或后续工作流。其他两种模式的预启动任务,WaHostBootstrapper需要等待其返回值,确认预启动任务正确执行后,进入下一个流程。
„ WaWorkerHost:Worker Role程序的宿主进程,所有Worker Role相关的DLL和EntryPoint代码运行于此。
„ WaWebHost:适用于SDK 1.2等HWC(Hostable Web Core)模式的发布包,该模式下网站服务直接运行在该宿主进程下,不依赖于IIS(Application Pool)。
„ WaIISHost:Full IIS模式下的Web Role的宿主进程,加载、执行RoleEntryPoint代码(e:\entrypoint)。
„ W3WP:IIS子进程,负责托管网站服务,即IIS中Application Pool对应的进程。
„Load Balancer:负载均衡,外部请求被均分到同一个Web(Worker)Role下的多个实例中。
值得一提的是,如之前的文章https://blogs.msdn.com/b/jianwu/archive/2014/08/15/azure-paas-3-azure-caching.aspx 中所提,云服务在实际运行过程中,可能会因为云平台的更新或者云服务本身的程序问题而Recycling,或者有可能因为用户的操作而重启或者重新镜像还原(reimage),故此,需要了解一下,这些活动对云服务的最终影响,如下:
虚机内部重启:
C: 不变
D: 不变
E: 不变
从管理门户上重启虚机:
C: 不变
D: 不变
E: 还原到原始部署状态
从管理门户是镜像还原(reimage):
C: 不变
D: 还原到原始部署状态
E: 还原到原始部署状态
更新部署(in-place upgrade):
C: 不变
D: 不变
E: 还原到原始部署状态
后端节点迁移:
C: 还原到原始部署状态
D: 还原到原始部署状态
E: 还原到原始部署状态
基于上述云服务活动中虚机上磁盘的变化,在设计云服务时,务必要注意:不要使用虚机上的磁盘作为永久存储,不要在虚机上手动安装部署环境提供永久使用。
参考出处:
2. 了解云服务的快速调试方法
a. 本地调试云服务
调试工具跟踪包括本地常见的工具:模拟客户端、进程分析工具等等