今天我来和大家聊一聊微软System Center中的一个组件,System Center App Controlller很多在弄微软私有云的朋友,可能多多少少都会接触到这个产品,大部分人都喜欢叫它SCAC,实际上我也喜欢这样叫它,SCAC在微软私有云中的主要作用,四个字就可以概括:“自助门户”,我想大多数人,也都是这样理解这个组件的。
我们在后台通过SCVMM整合了数据中心的计算,存储,网络,形成了私有云的资源池,通过VMM整合了数据中心中的异构虚拟化,群集与非群集主机,通过SCVMM Deploy创建了许多的服务模板。完成这些准备工作后,我们在VMM中创建了一朵"云",将我们之前做的那些资源池化的工作都集成到这个云中,然后分配不同的委派管理员,只读管理员,自助用户,针对于私有云分配了不同的操作权限,资源权限。
Ok,做好了这一切后,那么问题来了,我们如果让用户去访问云计算?在每台用户机器上安装一个SCVMM的控制台吗?显然这种方案不好,不仅麻烦,而且控制台过多还会消耗服务器的性能,于是我们想,有没有一种简单便捷的方式,让用户来访问我们的云呢?这也是检验一个企业云计算实施的重要特性,"最终用户如何与云计算交互",如果你做好了一套云计算后,但是如果让用户访问起来觉得很麻烦,用户不愿意去用,那么你的这套云架构就是失败的,纵然你底层资源池化做的再怎么好也没有用。
微软针对于私有云的资源访问,提供了一个方案,也就是SCAC,通过这个组件,可以帮助管理员在一个统一的门户,同时管理企业内部的私有云,Windows Azure公有云,以及其它合作伙伴的SPF云,可以帮助用户在一个自助门户中,通过十分便捷的方式访问云计算,用户可以在SCAC门户界面执行虚拟机连接关闭重启,用户只需要选择需要部署的虚拟机类型,填入机器名称就可以了,后台SCAC会自动把租户的请求丢给SCVMM,然后SCVMM在后台会根据模板,快速的创建虚拟机,关联网络虚拟化,稍后虚拟机就会自动创建完成,租户就可以进行使用了。
在微软私有云中,除了支持用户在自助门户部署虚拟机外,还可以支持在私有云中部署“服务”,有人可能会问,你说的这个服务,是指的电脑上面计算机运行的那个服务吗?NONONO,此服务非彼服务,我说的这个服务,严格意义来说,它是属于在虚拟机上面的一层架构,怎么讲呢?简单来说,我们可以将很多个经过sysprep的虚拟机模板集中在一起,成为一个模板,然后部署一个模板,就会自动创建所有关联的虚拟机,举个例子,比如说,公司有一套web应用程序,该应用程序通过数据库层,中间件层,前端Web层构建起来的,其中的每个层,都有两台机器组成。
这种情况下,怎么在私有云中进行快速的部署呢?这个时候云服务就派上了用场,我们可以在SCVMM中设计这样一个服务模板,一个服务模板中,可以包括多个层,比如我们部署典型的三层架构,就可以在服务模板制作中,统一将三层的虚拟机模板,服务器硬件配置,计算机配置,负载均衡配置,都配置好,然后打包成为一个服务模板,这样用户在自助门户上面,只需要点击创建这个服务模板到云中,就会自动帮助租户创建出来应用程序所需要的,所有层 里面的虚拟机。同时,还会自动帮助租户将机器名,IP地址配置好。如果你想再深入一下,还可以在云服务模板中,通过SQL镜像安装的方式,再制作一个SQL模板,集成到数据库层的虚拟机中,这样,租户在部署云服务的时候,就会自动在部署好的数据库层机器上,已经装好一个SQL,最大限度的降低最终用户的配置量,包括象IIS,应用程序,不同角色功能,在私有云中都可以进行这种“高级镜像安装”将制作好的IIS Deploy包,Server APP-v应用程序,VS应用程序,集成到虚拟机中,实现开箱即用。
租户按照请求申请或者已分配的账户,登录SCAC自助服务界面,就可以看见自己能够使用的云资源,硬件资源,库模板,只需要通过点击选择,输入个性化名称的方式,就可以快速的部署一个虚拟机,或者一个云服务,以上就是微软私有云中SCAC,针对于虚拟机资源访问,云访问,最终用户的体验。
介绍完了,SCAC针对于最终用户的体验后,接下来我再来与大家聊聊,SCAC针对于管理员,应用程序开发人员,以及针对高级用户的一些功能,也是我最想和大家聊的部分。
之前开篇曾经和大家讲过,SCAC不光可以管理企业内部的SCVMM私有云,还可以管理Windows Azure,SCAC管理Azure,其实并不是很麻烦,只需要你规划好网络以及防火墙的连接就可以了,在SCAC上创建一个自签名证书,导出一遍带有私钥的证书,留在SCAC本地,再导出一遍不带有私钥的证书,不带私钥的证书,上传到国际版Azure的证书设置中,记录下该证书的订阅ID,然后回到SCAC本地,添加Windows Azure订阅,输入Azure的订阅ID,选择带有私钥的证书,输入证书的密码,就可以了,添加成功后,其实这个Windows Azure的订阅,真正存储在了后端的SCVMM,SCAC只是一个Web展示。添加好了Azure订阅后,好戏才刚刚开始。
这时候,我们的SCAC,就同时管理了本地的私有云,以及Azure的公有云 ,SCAC就可以显示出它的跨云平台管理能力。我们可以在SCAC自助门户中统一查看私有云,公有云中的服务模板,虚拟机运行状态,控制Azure云中的服务创建,控制本地私有云中的服务创建,可以将本地的服务模板,虚拟机模板,IIS模板,在SCAC门户界面中,通过“复制” “粘贴”的方式,将服务模板上传到公有云中,只需要进行复制粘贴的操作就可以。我们还可以在SCAC中,进行公有云以及私有云服务横向扩展与收缩的操作,那么什么是横向扩展呢?这个操作,在我们进行设计服务模板的时候会看到,比如说针对于一个Web层,当前我们创建了两台虚拟机,但是我们启用了横向扩展的功能,这样的话,如果有一天应用程序管理员觉得我的Web层性能不足,我需要再增加一台服务器,那么应用程序管理员只需要在SCAC界面针对服务模板点击一下横向扩展,服务模板中就会自动将层中的虚拟机向右再扩展一台,如果收缩的话,只需要输入收缩后虚拟机的数字,就会自动减少指定的虚拟机。
在SCAC自助门户中,支持针对于私有云公有云的跨云平台管理,大致有以下特性,支持私有云公有云,跨云平台的服务部署,跨云平台的虚拟机部署,支持以复制粘贴的方式,在私有云公有云中上传下载服务模板,虚拟机,在私有云公有云中管理服务模板横向扩展与缩放操作。
我们知道SCAC可以针对于公有云私有云统一管理,那么针对于混合云呢?针对于非微软的第三方托管服务提供商,支持的怎么样?答案是也支持的,SCAC支持其它具备SPF提供程序的云,因为SCAC去进行统一云平台管理的时候,是使用SPF的Web API去调用SPF,或者是利用公钥私钥证书来做校验。如果云不支持SPF提供程序,那么SCAC是无法调用的,这里比较典型的就是AWS云,SCAC支持对于Amazon云的管理,但是底层首先需要在SCVMM服务器上,安装一个Amazon针对于SCVMM提供的一个Add-in插件程序,安装好了插件程序后,插件程序就会集成到本地的SCVMM中,然后通过简单的配置,帮助我们连接到公网的AWS云,连接到了后,就可以在SCVMM服务器上,看见AWS中所有Windows EC2的实例,可以在VMM中,管理AWS中的虚拟机,可以进行开机关机,RDP连接等基本操作,监控EC2中的数据,经过SPF的链接配置后,我们在SCAC界面中,也可以看到AWS云的实例,只不过是作为“其它SPF提供程序”作为管理,之前,我曾经想过通过SCAC,能不能统一管理OpenStack,后来咨询了几位Liunx的专家,一直无果,当然,如果你是一位精通Rest API,Web API的开发人员,你可以自己设计一套属于自己的云,然互将云中的SPF Web API取出,对接到SCAC或者Windows Azure Pack,目前据我所知,支持微软云统一管理的第三方托管服务提供商,只有Amazon,以及Sanbolic的分布式数据存储。如果你知道其它支持微软云管理的第三方托管服务提供商,可以告诉我,谢谢。
那么,SCAC跨云平台管理,还有那些应用场景呢?在我曾经做过的一个项目中,那是一家大型的国企公司,他们有一套生产环境,还有一套和生产环境近乎完全相同的测试环境。 他们在生产环境与测试环境分别部署了SCVMM,生产环境SCVMM安装在群集中,同时也在测试环境部署了一台SCVMM,然后再SCAC中同时添加生产与测试的VMM服务器,在部署一套应用程序之前,他们首先会先在测试环境中,只做好服务模板,然后先在测试环境中进行部署,经过测试确认部署上去没有问题,可以满足开发人员需求后,在SCAC门户中,将测试环境中的服务模板,通过复制粘贴的方式,复制到生产服务器的库共享中,然后在生产服务器部署服务模板,成功部署后,删除原测试环境服务,通过这样一套流程,就可以保证,部署到生产环境的服务模板都是正常可用,满足需求的,还有其它的应用场景,比如说,按照不同的部门,部署了不同的VMM服务器,然后统一通过SCAC管理。
以上就是我想说的,SCAC的这个产品,大家可见,除了可以为最终用户提供自助服务界面,更加核心的是它还可以在一个集中的SCAC门户中,帮助我们去对接多个私有云,公有云,以及其它云提供服务商,然后在SCAC中进行简单方便的跨云平台的管理,所以大家千万不要以为SCAC只能针对企业私有云中的VMM,来做一个前端的自助门户,那你就错了,嘿嘿。
SCAC经历了最初的SSP,再到现在最新的SCAC2012R2,改进了许多,提供的功能也越来越完善了,但是仍然难免有不足的地方, 比如说,不支持用户在自助门户,输入虚拟机的内存,CPU,磁盘,只能通过选择虚拟机类型的方式,比如说,一些人觉得它界面不够美观,当然,如果企业有前端设计开发人员,完全可以自己重新定义SCAC的界面。每个产品都有它的优点与缺点,但是我想SCAC这个产品,在微软云计算架构中,也是必不可少的一环,尤其是它在混合云,跨云平台管理的应用。
最后我想与大家聊两种,关于私有云中服务模板的运维方式。
基于映像的服务模板更新
基于域的服务模板更新
首先,基于映像的服务模板更新,举个例子来讲,比如开发人员部署了一个服务模板,这个服务模板中具备了20台虚拟机组成的NLB,具备SQL配置模板,以及IIS配置,忽然开发人员和你说,Hi,我希望能在每台虚拟机中多安装一个应用程序,有没有什么快速的办法? 这个时候,如果我们和开发人员关系不好,你就可以告诉它,没有办法,自己一台一台装吧! 但其实我们完全可以不这样做,我们可以采取基于映像的服务模板更新的方式来快速解决这个问题,假设,这套20台虚拟机用的是一个2008R2的VHD虚拟机模板,那么我们就可以将这个VHD模板在VMM中模拟部署一次,部署好了后,我们将开发人员说的应用程序安装在这台新部署的虚拟机中,安装好了后,我们再对这个这个虚拟机进行模板制作,做好了后,我们会得到一个新的,经过sysprep后的VHD虚拟机模板,然后我们在服务模板设计的界面中将这个虚拟机模板,替换旧的未安装应用程序的虚拟机模板。这时候,服务模板就会自动去更新应用程序,自动为新的VHD关联SQL,IIS配置,稍后虚拟机服务模板就会尽快完成更新,这样,我们就过一次操作,就为20台虚拟机进行了更新。
其次,基于域的服务模板更新,还是上面那个例子,只不过这次这个服务模板是由信息安全部门与开发部门一起管理,这天信息安全的人员说,三天后这个批次的有5台虚拟机内存需要进行提升来做压力测试,然后开发人员说,7天之后,要更新发布其中几台服务器的App-v配置。这个时候管理员就可以使用这种基于域的服务模板更新的方式来说,假设现有的服务模板,版本是1.1,那么我们就可以在它的基础复制出1.2,然后在1.2服务模板中,针对于信息安全的需求,进行调整,调整好了后,保存这个模板,进行重命名,然后发布这个模板,发布完成,三天后信息安全人员在VMM控制台或者SCAC界面,就可以看见,“当前服务模板,有可用更新”点击更新后,VMM就会在后台,以“最短停机时间”的方式,帮助我们更新服务模板,更新完成后,重新上线。信息安全人员更新完成。然后我们再按照同样的方式,复制1.1模板,然后重命名为1.3,在1.3服务模板中,替换开发人员需要的App-v配置文件,替换完成后发布模板1.3,7天后,开发人员登录VMM控制台或者SCAC,就会看见当前服务模板有可用更新,请选择需要更新的模板,选择1.3后,服务模板以同样“最短停机时间”的更新方式,去更新服务模板,更新好了后,开发人员即可使用最新的应用程序,基于域的服务模板更新与基于映像的服务模板更新,最大的不同就是,前者可以由用户选择,需要更新到的版本,并且具备自动协调服务更新“最短停机时间”