Windows Azure开发入门:从基础到实践
1. Windows Azure服务升级与监控机制
在Windows Azure中,当服务的任何部分需要升级时,结构控制器(fabric controller)会逐个更新域(update domain)对服务进行升级。而且,更新并不一定只能由用户发起,操作系统更新(如安全补丁、修复程序等)也会通过相同的机制定期推出。
监控也采用了相同的目标状态功能。结构控制器会监控所有角色的健康状况,一旦某个角色出现故障,它能迅速检测到。角色也可以主动向结构控制器报告自身处于不健康状态。
当结构控制器得知某个特定角色不健康时,它会更新其内部状态机,并尝试将该角色恢复到目标状态。这可能包括重启角色,或者采取特定的纠正措施。
此外,结构控制器还会监控数据中心中节点的健康状况。如果检测到某个节点离线(例如,由于无法收到该机器上代理的消息),结构控制器会将该机器上的所有角色实例迁移到一个新节点。新节点的选择基于服务模型中的约束条件。例如,如果故障节点上的角色实例属于一个单独的故障域,那么新的角色实例也会被放置在同一个故障域的节点上。之后,结构控制器会修复网络设置,将服务模型恢复到原来的状态,使服务恢复正常。
下面用流程图展示结构控制器的监控和处理流程:
graph TD;
A[开始监控] --> B{角色健康?};
B -- 是 --> C[继续监控];
B -- 否 --> D[更新内部状态机];
D --> E{是否节点离线?};
E -- 是 --> F[迁