服务器虚拟化已经做的越来越成熟和普及了,不管是Xen还是ESX或者是Hyper-V,其实难分伯仲,就我接触过的客户,大部分人的惯性思维是觉得Hyper-V是基于操作系统层面之上的,不如思杰或者威睿的效果好,其实不然;各家实现机制其实差异不大,最重要的还是上层所能提供的服务,是否切合用户需要,能否实现一些客户想要的功能,这才是有力的卖点,这次主要说一下在SCVMM里做服务模版的一些方法
###################################################################################
我先用包含SQL服务的单层服务模版为例,之后再介绍一下包含Web应用程序的单层模板,最后结合在一起来说一下双层且支持负载平衡和横向扩展的服务模版,那么我们现在开始:
先通俗的说一下服务模版的概念,你就把他当成一套打包好的虚拟机组,当然也可以是单台,这一组虚机资源可以是只有纯操作系统(可以用服务模版来实现批量部署);或者是携带了你要推送出去的某种服务,SQL或者Web应用程序或者一些其他的虚拟化应用程序,总之就是说提供给用户一套环境,这套环境可大可小,还可扩展,还可以实现负载平衡等,最好是让用户开箱即用;
以SQL服务模板为例,首先你得有一个VM模板,来作为服务模版的计算机层,那么咱们就先来准备一个封装好的OS,我的环境以Windows Server 2012 R2+SQL2012 SP1为基础,先做SQLPrep,执行SQL安装介质,然后在高级中找到“映像准备”(我对微软的翻译特别不敢苟同。。。)
选择你要用的功能,本来就没提供几种,都选了吧,另外说一下,不带管理控制台,如果你想装的话,可以封装完了之后安装,不冲突
注意这个实例ID,一定要用心记住,这个你起什么名字都可以,但是无论你手动完成镜像,还是通过SCVMM自动完成镜像,你都需要再次输入这个ID,这个ID不是实例名,所以,请,记,下,它
确认无误之后直接点击“准备”
可以看到完成之后的一些帮助提示,这里我不做过多说明;完成SQLprep之后我们需要把SQL的安装文件拷贝到这台机器的硬盘下,一般虚机我们可能习惯使用127GB+仅C盘这样的配置,那么我们就放在C:\SQL下,随便你创建个文件夹都行,总之记得放进去,然后记住路径
然后你就可以做Windows系统的sysprep了,这个我想大家都很熟练了,我个人习惯在做sysprep之前关闭防火墙,关闭IE安全设置,开启远程桌面,安装.NET3.5;做好一切准备之后,我们把这台计算机转换成模板,留作接下来使用
############################################################################
我们有了VM模板资源后,就开始准备做服务模版了,首先我们要做一个SQL的配置文件,位置如下图,起一个名字,比如SQLPrep
然后添加一个SQL server部署,这里可以看到需要你输入之前的实例ID,实例名你可以随意,默认用MSSQLSERVER就好,你起别的名字无所谓,然后可以输入你的产品序列,不输入自然就是评估版了,然后选择运行方式账户,这里用域管或者有足够权限的账户就行
接下来输入你SQL安装文件的存放路径,我们之前放在了虚机的C:\SQL下,然后输入你想赋予的管理员账户,若要启用SA的话就在下面进行配置,然后选择是否开启命名管道或者远程连接,此外你还可以上传SQL的安装配置文件来进行更高级的自定义部署
最后设置服务账户,这里我选择了LOCAL SYSTEM,有关LOCAL SYSTEM,LOCAL SERVICE,NETWORK SERVICE之间的差别大家可以自己去百度一下
有了SQL配置文件和VM模板之后,我们就可以来做服务模版了;下图是我做好的一个服务模版,我们就来看一下他的具体内容
点击服务模版,选择“打开设计器”来进行编辑或查看
这里再提示一下:为了方便起见,请在你的VM模板里面选择SQLserver配置,然后把我们创建的那个SQL配置文件挂上去,这样你的VM模板和SQL配置就整合在一起了
打开设计器后,你可以新建一个服务模版,起一个名字,然后选择层级类型,咱们是做单层,那么你可以选择single,或者你用空白更灵活一些
我选择空白模板,然后就会出来一个十分空旷的界面。。仅仅一个服务模板名称,这里我们马上来丰富一下内容,按照下图添加一个VM模板
选择我们做好的那个包含SQL配置文件以及SQL安装文件的VM模板,直接拖拽出来即可
看到没!有没有?!完成了!没错,完成了,你现在看到下面的图示,就是一个单层的服务模版,有没有一种“你这不是坑爹呢么”的感觉~~~;但是作为单层服务模版而言,确实就是这么简单,主要工作是你之前的资源准备,你可以看到在这个计算机层里面,包含了一个SQL的内容,以及这个VM后面连接的VM网络和逻辑网络;之后点击左上方的“保存和验证”或者可以直接点击“配置部署”来创建这个服务
点击配置部署后,需要输入一个服务名称,这个名称什么意思,就是说你部署之后,这台虚拟机会带有一个服务名称,对客户而言,他获得不是一台空空如也的虚拟机而已,而是一个可以开箱即用的SQL实例,而且你可以选择要把这个服务部署到什么位置,是哪个Cloud
我们回到服务模版界面,上面的Publish与Revoke是可以把这个服务模版发布到App-controller,或者撤回发布,很灵活
下图就是部署好的这个叫做“SQL setup”的服务,你可以认为这不就是一台虚拟机么,是的,他所对应的后台资源确实仅有一台虚机,但如果你开启了上方的“Scale-Out”横向扩展功能呢?如果你这个模板的计算机层是10台虚机呢?如果是包含Web应用+中间件+DB的三层结构呢?
那显然我们需要一个统一的标示名称,也就是一个服务名称来交付给用户,你不可能说“亲,你申请的这套环境包含10台虚机,分别叫做VM01,02,03。。。”;所以说服务模版的意义就在于此,在概念上和普通VM模板是有很大差别的,应用的场景不一样
那么服务推送出来之后,你可以对这个服务进行操作,停止,暂停,关闭等等;那么他其实对应的是这套服务而言,举例来说,你这个服务后面100台虚机,你一关,就全都shutdown了
最重要的是:一你点“delete”就全TM删除了。。。。。所以千,万,别,手,欠
#####################################################################################
服务模版的概念以及创建单层模板的方法先说这么多,可能我讲的比较潦草,当然这也是我个人对这项功能的一些认识,接下来我会写一个Web应用的服务模版,然后再做一个两层的支持负载以及可扩展的说明;其实多层的服务模版会复杂一些,可能需要依赖一些脚本来执行,否则无法实现开箱即用的效果;对于这方面如果有朋友能提供一些实际案例,非常欢迎交流~谢谢!