在微软私有云解决方案里,System Center是重要一环。System Center的各大组件类似于三权分立:SCSM是立法和审判机构(服务请求与审核),SCOM是监察机构(监控数据中心的性能和事件),而Orchestrator则是执法机构(负责驱动底层的组件)。
在盆盆录制的这段视频里,描述了这样一段场景,分布式应用的Web前端过载时,会触发runbook新建变更请求;领导批准后,会触发另一个runbook,或者新建结点以横向扩展/或者启动池中可用的节点,以应对业务系统访问量暴涨。
其中最关键的地方就是Orchestrator的Runbook,它可以根据SCOM监控的性能警报自动执行复杂的操作,以下是视频中所示的runbook。
由于视频里所示的demo相对复杂,需要引入SCSM,所以该runbook中的初始化数据和更新RB活动这两个Activity都和SCSM有关。
为方便描述,我们将该runbook略作修改,如附图所示:
该runbook可以实现的功能如下:
- 从SCOM中获取Web前端的报警
- 根据SCOM警报中的源虚机名称,得出其所在的计算机层的名称
- 在该计算机层中,寻找是否有未启动的虚机
- 如果有,则启动该虚机
- 如果没有,则对该计算机层执行scale-out
这里着重描述几个关键的Activity(括号内是来自VMM IP中的实际Activity Name):
获取Web层信息(Get Tier)
根据Member VM Instance Names来倒推计算机层的名称,如附图所示:
其中的Value采用了Orchestrator独特的所谓databus的技术,我们可以右键单击,选择订阅前几个Activity所发布的数据。在活动一栏,选择第一个Activity(监控Web前端报警),然后选择其所发布的数据NetbiosComputerName。这表明我们根据SCOM警报中显示的源计算机的名称,来查询其计算机层的名称。这样我们就无需在runbook里采用硬编码,而根据前面Activity发布的动态数据作为变量,十分方便。
Web层有否未启动VM(Get VM)
查到该虚机所在Web层名称,就可以查询该计算机层中是否有未启动的虚机。
查询参数有两个:Comuter Tier和Status,表示所在的计算机层和运行状态。返回同时满足这两个条件的虚机。
其中Computer Tier的值可以订阅前一个Activity(获取Web层信息)发布在Databus上的数据(Tier Name)。
Status的值可以选择正在运行(注意中文版的VMM,必须输入正在运行,英文版的话,应该选择running)。
判断分支
如果实现后续的判断分支?我们无需编写代码(尽管runbook可以直接使用powershell或者代码)。我们别小看活动之间的连接线(smart link),这些连接线也可以进行自定义!
例如当Web层有否未启动VM返回空值时(下方的分支),我们将连接线的属性值配置为返回对象数等于0。
在包括部分,单击添加,然后设置已发布数据为Number of Objects。
设置条件表达式为等于。数据值可以填0。
同理设置上方的分支为Number of Objects大于0
发送电子邮件
Runbook执行成功后,会自动发送电子邮件,报告给指定的人员,告知哪台虚机发生性能问题,并且已经执行了解决措施。
更有意思的是,邮件正文里涉及到的故障主机,也可以订阅databus上的数据!
本文转自 ahpeng 51CTO博客,原文链接:http://blog.51cto.com/markwin/1132830,如需转载请自行联系原作者