最近有個需求是要對架在VM ScaleSet上的服務做版本更新;並且在版本更新時,希望確保在版本更新的同時降低Downtime。因為在測試階段會有Staging環境,可能的話希望透過Production/Staging切換的方式進行。
下面是幾個Survey的VM Scaleset上的版本更新方式比較。
- 更新VM Base Image
n 設定新版本的VM Image給VMSS,然後"手動"作Rolling update以確保沒有Downtime
u 預設UpgrdePolicy為Manual,表示我們必須自己手動更新所有的Instance;這樣可以確保客戶端沒有Downtime。
u 也可以將UpgradePolicy設定為Automatic,如此一來,VMSS會"同時"更新所有Instance的Image為新版本的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 Pool、Listener與Rule
u 將Staging的Rule解除關聯
u 將Production的Backend Pool重新指定到Staging的Backend Pool
u Application Gateway目前只支援Dynamic Public IP,並且不可指定DNS Name;使用前須注意。
n 切換過程中沒有明顯的Downtime;但是切換需要的時間較長,我的測試中,將環境從Staging切換到Production約需要一分鐘左右。
沒有留言:
張貼留言