日期:2014-05-18  浏览次数:20811 次

亲身体验Windows Azure VM Role云计算平台,分享体验结果
网上关于Windows Azure VM Role(虚拟机角色)的文章太少了,它到底是什么?怎么用?好不好用?为了探究这些问题,我花了一天时间亲自体验了一回。下面带来结果。

Windows Azure是微软去年推出的云计算平台,可以用来托管网站、WCF服务或者其它应用程序,稍后,微软又提供了对PHP、Java和Node.js托管的支持。在Windows Azure中,一个应用被称为一个角色(Role),Azure支持三种角色,Web Role、Worker Role、VM Role。前两种角色用得比较多,但是它们的缺点是显而易见的——只能用来托管专门为Azure编写的程序,并且类似虚拟空间,没办法对服务器有完整的控制。相比较而言,VM Role提供了一台完整的虚拟机,因此大部分Windows Server程序都可以搬上去直接用。但是VM Role目前还是内测阶段,介绍它的文章少之又少,本文重点就是介绍VM Role。

首先,你需要一个Windows Azure账户。为了拥有Azure的账户,你除了向微软付费申请以外,还可以得到90天免费试用的机会,方法是,去银行办一张支持美国运通、万事达或者威士的双币信用卡,找国外或境外(美国、瑞士、日本、德国、新加坡、澳大利亚、香港等支持Azure的国家或地区,朝鲜、古巴等国无效)的亲戚或者朋友帮忙,让他们提供联系方式即可。

除了90天免费试用申请,也可以使用MSDN订阅或者BizSpark,但是还是需要信用卡和国外联系方式。

登录https://www.windowsazure.com/zh-cn/,然后选择90天试用,按照提示一步一步注册即可。注意,Azure有限制支出功能,除非开启,否则不会从信用卡上扣钱的,这个可以放心。需要说明的是,一旦关闭限制支出功能,Azure就会转入收费模式,超出额度部分会按标准费率收费,并且,一旦关闭限制支出,就不能再开启了。所以操作这个功能要格外谨慎。微软的意图是,没有人会在生产环境中冒着停机的风险节省几个钱,因此一旦关闭,表明你是用于生产了,那么对不起,就要一直收费。如果开启支出限制功能,本月超过了使用额度,微软会停止你的账户,但是下一个月会恢复继续让你用。不过如果这个月没有用完的额度是不会转入下一个月的。(好像挺不公平)

在注册完成,并且成功激活订阅以后,VM Role还是不能用的。前面说了,它还是试用阶段。为此,你需要登录Azure门户,在左侧选择开始,然后选择试用活动,并且选择申请加入,大约需要等一个星期,如果微软批准了,你就可以使用VM Role了。虽然微软说名额有限,需要审批,不过目前来说,只要申请一般都可以批准的。请大家耐心即可。

Windows Azure门户是一个silverlight做的界面,看上去挺炫,实际上功能很弱,充其量只能是一个仪表板的作用,实际管理操作,还是需要借助Azure SDK中的命令行工具进行。

在使用VM Role之前,你需要准备如下条件:
(1)前文所述的Windows Azure账户,并且申请成功VM Role试用
(2)有一台安装了Windows Server 2008 R2的计算机,并且开启了Hyper-V角色。注意,必须有以下3个条件才能支持Hyper-V:首先CPU必须是64位的,否则无法安装2008 R2,其次,CPU必须支持硬件防病毒(这个从P4 6系列就支持了),最后,CPU必须支持虚拟化技术(Intel VT或者AMD V),而且所用的BIOS必须支持并打开虚拟化,一些品牌机和笔记本电脑的CPU虽然支持虚拟化,但是如果BIOS不支持,就悲剧了。相比来说,AMD AM2接口除了闪龙以外,基本都支持虚拟化技术,而Intel 775接口就不乐观了,低端的Core,相当部分的Pentium和Celeron都不支持虚拟化。不过新上市的处理器一般都支持,不行就买一个吧。
(3)需要Visual Studio 2010,最好安装SP1。这是因为一些配置操作用它比直接用SDK要容易。
(4)需要下载安装Azure SDK。我用的是1.6版本。SDK中包含了文档、例子程序、VS用的模板、工具还有本地模拟器,不过这里只用命令行工具和VS支持模板。
(5)Windows Server 2008 R2安装DVD,最好带SP1的。
(6)确保你的计算机有2GB(最好4GB)内存,最好有2个或者以上处理器核以及60GB以上硬盘空间。
(7)确保你的网速不是足够缓慢,因为需要把数GB的镜像上传到微软的数据中心。ADSL的上传带宽只有256K或者512K,一些ISP到境外的连接速率也过低,这些都不适合,最好使用光纤直连。

关于如何部署虚拟机到VM Role,请看这篇教程:
http://msdn.microsoft.com/en-us/gg502180

我就是根据它做的。

这里主要说说步骤和我遇到的麻烦。

(1)新建一个Hyper-V虚拟机,在虚拟机中安装Windows Server 2008 R2.
记住虚拟机的硬盘尺寸务必小于64GB,最好小于30GB,超过32GB将不能使用small实例,超过64GB则根本不让上传。我一开始没注意(我直接用的以前做的镜像),使用了128GB的磁盘,结果出错。不得不使用一个叫VHDResizer的小工具才搞定。具体做法参考:http://www.cnblogs.com/dlbrant/archive/2012/04/02/2430044.html
另外需要记得的是,尽可能在本地对虚拟机做足够的测试,满意再上传,因为上传很耗时,虽然有差分镜像,仍然如此。你最好安装Web Role等所需部件,再创建一个用户,打好补丁。我启用了远程桌面连接。我不清楚后面会不会帮我做,另外应该激活Windows Server 2008 R2。硬盘大的,可以备份下镜像。
(2)在虚拟机中安装Azure驱动以及做系统封装,之后关机。
(3)按照http://msdn.microsoft.com/en-us/wazplatformtrainingcourse_vmrolelab_topic6所介绍的方法,制作证书,并且获得指纹,这个指纹下面反复要用。
(4)将文件上传到数据中心。
文章给出的命令行要注意,<PATH-TO-VHD-FILE>这个参数需要带vhd文件名,此文件名和后面-name指定的不同,这里是本地vhd文件名,后者是Azure存储中表示的文件名,而且后者文件名中不能带下划线否则会出错。我使用的是美国中北部数据中心,需要使用-Location "North Central US",注意引号,你可以根据需要选择,作为测试,不妨选择一个上传数据快一点的。
上传程序首先会在本地压缩vhd文件。原来7GB的文件被压缩到4GB,然后在数据中心创建文件,再上传。期间出现一个错误。重新运行命令行就成功了。建议你首先在记事本里面编辑命令,再拷贝到控制台上,可以减少出错。
整个上传大约是1小时,显示的速率是8~9Mbps,我对这个网速比较满意。
(5)创建服务模型。可能你遇到图43会发现没有VM Role可以添加。文章说因为VM Role是试用的,加入测试计划,微软会给你指示,你需要根据指示启用。很扯淡,微软根本没有给我任何指示。好在搜索了下,找到了办法,办法就是修改注册表,添加一个项,在VS中打开它,参考:http://www.simonrhart.com/2012/02/where-is-new-virtual-machine-role-menu.html 这里有现成的注册表文件,下载导入就可以了。
(6)图46配置endpoint,取决于你使用哪些服务。有点类似配置防火墙。注意,协议只能是tcp或者http,不能是udp,一会儿要说,这是vm role的局限。建议你根据需要配置好。比如你要开ftp,你可以配置21端口。因为之后修改很麻烦的。
(7)将配置好的模型打包然后上传,我发现使用文中介绍的Azure门户的方式总是出错,幸好在VS中选择Publish可以成功。注意先关闭掉门户网站,否则文件会被锁定。再不行的话,在VS发布中双击状态,可以看到日志,根据日志排错吧,这个我搞了半天。
之后需要等待虚拟机准备、初始化、开机,这个过程大约10分钟。只要发布成功就可以放松下。
(8)这些都搞好,就可以使用远程桌面连接访问了。

有图有真相。
另外,如果你配置了web role,可以使用azure门户提供的ip地址访问网站啦。如果你有域名的话,网站就可以上线了。
(9)文章介绍了如何配Powershell访问以及制作差分磁盘来更新系统。差分磁盘很有用。因为如果你上传后发现虚拟机还有些配置不到位(是虚拟机OS的配置,不是VMRole的配置),你可以在本地修改后,然后将磁盘的差异传上去,而不是重新传整个文件。可以节约一些时间。但是差异的磁盘仍然动辄几百MB。