2017年7月19日

VM ScaleSet版本更新

最近有個需求是要對架在VM ScaleSet上的服務做版本更新;並且在版本更新時,希望確保在版本更新的同時降低Downtime。因為在測試階段會有Staging環境,可能的話希望透過Production/Staging切換的方式進行。

下面是幾個SurveyVM Scaleset上的版本更新方式比較。

  • 更新VM Base Image

n   https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-upgrade-scale-set

n   設定新版本的VM ImageVMSS,然後"手動"Rolling update以確保沒有Downtime

u  預設UpgrdePolicyManual,表示我們必須自己手動更新所有的Instance;這樣可以確保客戶端沒有Downtime

u  也可以將UpgradePolicy設定為Automatic,如此一來,VMSS"同時"更新所有InstanceImage為新版本的Image;會造成Downtime

  • VIP Swap

n   透過Script切換Production/Staging環境的VIP

u  http://blog.michaelchi.net/2017/07/vm-scale-setvip-swap.html

n   在切換的過程中,使用者會感受到明顯的Downtime;在我的環境上,約有10-20秒的時間無法連線。

  • Application Gateway

n   如果前方有Application Gateway;可以透過重新關聯Application Gateway Rule的方式做切換

u  Production/Staging環境應該都已經設定了Backend PoolListenerRule

u  StagingRule解除關聯

u  ProductionBackend Pool重新指定到StagingBackend Pool

u  Application Gateway目前只支援Dynamic Public IP,並且不可指定DNS Name;使用前須注意。

n   切換過程中沒有明顯的Downtime;但是切換需要的時間較長,我的測試中,將環境從Staging切換到Production約需要一分鐘左右。

 

 

沒有留言:

Blog Archive

About Me