今天微软宣布了In-Place Upgrade 特性有一些改进。主要的一个是,现在用户能够通过In-Place Upgrade 改变虚拟机的规格,而不用重新部署整个服务。
我们以前所做的
在这个升级之前,由于虚拟机的规格是定义在CSDEF文件中,我们需要重新部署服务来改变VM Size属性。这意味着我们需要删除现有的角色和VMs,然后让Windows Azure重新分配新规格VMs、安装操作系统和运行时、提取和部署我们的应用程序。
改变虚拟机的规格是按比例增加和减少的最普遍的需求,不应该导致服务不可用。但是在Windows Azure里,我们要使用重新部署,不能让服务在那一刻能够访问。
我们现在所能做的
让我们看看我们需要做什么来改变虚拟机的规格而不用重新部署服务。首先,我们需要通过developer portal创建一个托管服务。然后,在Visual Studio里创建一个新的Windows Azure项目。让我们添加一个ASP.NET MVC 3 Web Role,将VM Size设置到Extra Small。然后将这个项目部署到Windows Azure。
我们在Visual Studio中将VM Size从Extra Small改变为Small并创建一个新的包。在那之后我们回到developer portal并使用In-Place Upgrade 来上传那个新包。在In-Place Upgrade对话框里我们需要勾选“Allow VM size or role count to be updated”,否则升级将会失败。
与不改变VM Size相比,这个升级需要花更多的时间,因为Fabric Controller需要找到一个合适的机器来托管该应用程序。这需要花费更多的时间,更重要的是,通过In-Place Upgrade改变VM
Size将删除原来虚拟机上所有自定义的数据。
通过In-Place Upgrade我们还可以做什么
不仅是改变VM Size,现在我们能添加和删除角色,改变端口号,并通过In-Place Upgrade增加本地存储容量。例如,在Visual Studio里添加一个新的Worker Role并在MVC 3 Web Role上向8080中添加一个新的输入端。
然后封装和使用In-Place Upgrade上传到托管服务。正如你所看到的,新角色和终端已经被建立了。
PS:别忘了勾选 “Allow VM size or role count to be updated”。
我为什么要使用In-Place Upgrade
In-Place Upgrade使得我们能够在升级期间确保服务的正常运行和有效性。不同于重新部署,如果一个角色拥有不止一个实例,它将通过在每个升级区域中轮流进行操作,从而在In-Place Upgrade的整个过程中可用。例如,如果一个web角色拥有2个Small虚拟机实例,当我们将它设为Extra Small,一次只能改变一个实例,然后在它完成后,才能改变其他的实例。
接下来
据说在接下来发布的版本里,我们可以在Visual Studio里直接进行更多的操作而不用转到developer portal。那时候程序开发人员在Visual Studio里就能完成整个部署任务了。
希望有所帮助,
Shaun
本文翻译自:http://blogs.shaunxu.me/archive/2011/10/20/improvements-in-hosted-service-in-place-upgrade.aspx