SCVMM的“服务模版"模块是一个很强大的功能,之前写过两篇比较简单的服务模版构建方法,不过只能算“半自动”交付;相关博文可以参照如下链接:
http://maomaostyle.blog.51cto.com/2220531/1322938(单层Web)
http://maomaostyle.blog.51cto.com/2220531/1332336(单层Web带NLB)
这次将会带来一个完全“开箱即用”的Web应用程序服务模版;不过先展示一个单层结构的,也就是说后端SQL是一台已经存在的服务器,不包括在本次模板当中;所谓“开箱即用”就是指这个服务交付出去之后,用户直接访问NLB地址即可打开应用,不需要再去人为的配置后端连接或者权限等等
因为之前对服务模版已经做过一些铺垫,所以接下来直接从创建服务模版开始,前期的准备工作略有不同,我会配合截图顺便回顾一下
#################################################################################
这次演示环境的Web应用还是选择开源的CMS门户“DotNetNuke”,基于.NET开发同时也便于后期展示SCOM的APM监控以及自动化横向收缩
下载地址:http://www.dnnsoftware.com/Community/Download
本次环境的资源包下载地址:http://www.microsoft.com/en-ph/download/details.aspx?id=39698
#################################################################################
首先解压缩下载好的资源包,我们需要用到“standard04062013.cr”这个文件夹,将它上传至SCVMM库中
在此文件夹中有几个脚本,因为我们后端的SQL已经准备好了,且我将会把dotnetnuke直接挂在默认站点下并使用默认的应用程序池,所以我只会用到“mod_folder_permission”这个脚本
因此这个场景主要需要解决的两个问题就是:
1.如何自动实现前端web服务器和后端SQL的连接配置
2.如何自动给应用程序文件夹赋予访问权限
如果上述两个问题无法自动实现,那我们这个服务模板就毫无意义;创建完了之后还要手动的登上去配一下sql connection string,然后再给文件夹改权限
#######################################################################################
接下来我们需要做的就是把一个配置好的Web应用打包导出
在导出的时候注意需要添加一行参数
也就是在此可以把我们的SQLconnectionstring写好,如下图
写好之后再导出,这样我们的应用程序配置文件就可以识别到这条参数了
然后回顾一下之前的内容,在应用程序配置文件里,我们需要添加一条pre-install脚本,目的是为了把webdeploy装到目标机器上,因为只有安装了webdeploy才可以导入我们的zip压缩包(就是上一步导出的包)
而在此我们需要追加另外一条脚本来实现第二个自动化需求,就是赋予文件夹权限;如下图我们调用“mod_folder_permission”脚本来实现,注意要在后边跟一个@@,这个是用来最后部署服务时,我们可以灵活的给@@变量赋值,也就是指定你要修改文件夹名称(默认位置C:\inetpub\wwwroot\)
计算机层的准备工作一定切记如下几点:
1.勾选Web Server(IIS)角色
2.勾选NLB功能
3.IP地址和MAC地址必须都为静态
4.必须开启MAC地址欺骗
接下来我们的服务模版准备就绪了,之后在准备部署前预览的时候可以点击上方的setting
此时就会弹出自定义对话框,这里可以给我们的@@变量赋值,如果之前你添加了多个脚本,并且有若干的@@,就都可以在这里识别到(我会在后续的双层开箱即用模板中提到);另外请注意配置好你的负载平衡器以及Web层的可收缩数量;确认无误之后我们就可以点击左上方的“部署服务”了
完成部署之后,我们可以看到这个服务的大体结构,如下图所示;服务的名称——层次命名——虚机——应用;到此一切OK,我们来看一看效果
下图是通过powershell查到的VIP地址,10.10.1.172,注意这个NLB地址是不会自动注册到DNS中的,如果有需要,必须手动添加一条A记录;通过ping命令显示此地址可用
直接访问负载平衡器虚拟IP,一切OK;我们没有进行任何的二次手动操作,直接打开了DotNetNuke的门户
######################################################################################
接下来我们看看横向扩展的效果;假如我们的前端负载压力太大了,默认的两节点已经扛不住了,此时你只需要点一下右键——选择“扩展”
扩展向导十分简单,首先选择你要在哪一层收缩,因为我们当前环境只有一个计算机层,所以没得选,下面可以看到有关该层的可收缩限制,当前2台,最小2台,最多5台,以及虚机的默认通配符名称格式(由OS配置文件获取的)
这里可以定义你要扩展的这台虚机的名称,下面的提示说明如果留空的话,会自动根据通配符格式生成,这里我保持留空
之后选择要放置的位置
确认无误之后就可以扩展了,感兴趣的话可以把shell保存下来研究
之后看到Job里面正在执行创建VM的进度
而在服务下面可以看到多出来一台虚机正在部署且名称自动生成;如下图所示
Job完成
至此横向扩展完成,Web层由默认的2台变成了3台,缓解了前端负载
#####################################################################################
以上便是一个“开箱即用”的单层Web应用服务模板,并且它支持很实用的横向收缩;所谓缩,其实就是delete一台虚机,注意是一台虚机而不是这个服务,前面的博文提到过,切勿手欠删除服务,不然整套环境就没了,哭都来不及;因此操作时候一定要注意,接下来根据时间安排我会尝试部署带SQL层的“全自动”交付服务模板,这个才真够酷够实用
那么有了以上的环境就可以结合SCOM对应用程序执行性能监控,或者监控服务器状态,当前端压力上升触发告警时,可以把警报继续后传给Orchestrator,接下来通过runbook来调用SCVMM的activity,比如scale-out或者scale-in;实现真正意义上的云平台资源管理