2012-12-30 188 views
4

將單個Windows Azure雲服務應用程序部署到多個數據中心的建議方式是什麼?將Windows Azure雲服務部署到多個數據中心?

我應該在所有數據中心中放置一個現有的應用程序,然後在部署完成後重新啓用它們嗎?或者有更好的方法呢?

理想情況下,我希望能夠在Windows Azure雲項目的配置文件中設置數據中心列表,以便在單次發佈操作期間,該應用程序將同時上傳到多個數據中心(例如North Central美國,西歐和東亞數據中心)。

回答

2

你所描述的將需要一些自定義部署邏輯。我建議您熟悉PowerShell和Windows Azure Management CmdletsGithub上提供了一些關於如何使用PowerShell打包的示例。

我會將每個託管服務的Azure包和服務配置文件上載到每個數據中心(即多個數據中心)的每個主機服務的臨時插槽中,使用相同的PowerShell腳本和不同參數。您需要有一些自定義等待邏輯來輪詢臨時插槽部署的狀態並等待就緒狀態。完成此步驟後,您知道您的VM已準備就緒,如果您的應用程序加載速度很快,則可以使用PowerShell執行VIP Swap。

的PowerShell命令,你需要做到這一點有以下幾種:

  • 新的部署(使用此部署到每個數據中心的託管服務)
  • GET-HostedService (使用它來獲取新部署的託管服務的狀態)
  • 移動部署(使用此功能可在讀取所有臨時插槽部署後執行VIP交換Y)

需要注意的是,即使你建立這個有機會,事情會不同步在最好的幾秒鐘,幾分鐘,在最壞的情況,以便您的新部署將始終需要與向後的底層數據存儲系統/架構。

2

我建議使用Windows Azure Service Management REST API這個。對於多個部署,PowerShell往往會重複且速度慢(即,即使它是相同的包,該程序包也會上傳到存儲器以用於每個部署)。在Windows Azure ServiceManagement Sample上使用REST API有一個很好和完整的例子。我們針對相似的情況擴展了此示例:我們有45個以上的微型站點使用相同的代碼庫,並使用REST API異步部署到每個服務實例。我們將包上傳到Azure Blob,然後使用Blob URL觸發每個服務的異步更新。藉助REST API,您可以從構建服務器或Azure工作者角色運行更新。