将Windows Azure云服务部署到多个数据中心?

时间:2012-12-30 02:48:00

标签: azure cloud

将单个Windows Azure云服务应用程序部署到多个数据中心的推荐方法是什么?

我是否应该在所有数据中心暂停现有应用程序,然后在部署完成后重新启用它们?或者有更好的方法吗?

理想情况下,我希望能够在Windows Azure云项目的配置文件中设置数据中心列表,以便在单个发布操作期间将应用程序同时上载到多个数据中心(例如,North Central US ,西欧和东亚数据中心)。

2 个答案:

答案 0 :(得分:2)

您所描述的内容需要一些自定义部署逻辑。我建议你熟悉PowerShell和Windows Azure Management Cmdlets。有关如何使用PowerShell打包的部署示例,请参见Github

我会将Azure软件包和服务配置文件上传到每个数据中心(即多个数据中心)中的每个主机服务的临时插槽,使用相同的PowerShell脚本,每个托管服务具有不同的参数。您需要有一些自定义等待逻辑来轮询暂存插槽部署的状态并等待READY状态。完成后,您就知道您的虚拟机已准备就绪,如果您的应用程序加载速度很快,您也可以使用PowerShell执行VIP交换。

执行此操作所需的PowerShell命令如下:

  • 新部署(使用此部署到每个数据中心的托管服务)
  • Get-HostedService (使用此方法获取新部署的托管服务的状态)
  • 移动部署(使用此功能在所有暂存插槽部署准备就绪后执行VIP交换)

请注意,即使您构建了这个内容,也有可能在几秒钟内事情会不同步,最糟糕的几分钟会因此而导致您的新部署总是需要与底层数据存储系统一起倒退/架构。

答案 1 :(得分:2)

我建议您使用Windows Azure Service Management REST API。对于多个部署,PowerShell往往是重复且缓慢的(即,即使它是相同的软件包,也会将软件包上载到每个部署的存储中)。在Windows Azure ServiceManagement Sample使用REST API有一个很好的完整示例。我们已针对类似情况扩展了此示例:我们有45个以上的微型网站使用相同的代码库,并使用REST API异步部署到每个服务实例。我们将包上传到Azure Blob,然后使用Blob URL触发每个服务的异步更新。使用REST API,您可以从构建服务器或Azure辅助角色运行更新。