唐突なアナウンスですがWindows AzureのIn-place Update機能が更新されたようです。まぁWindows Azure側の話なので、こちらで何か修正等があるわけではありませんし、既に展開されてるのでみんな恩恵にあずかれます。
元ネタ:Announcing Improved In-place Updates 、 Overview of Updating a Windows Azure Service
変更内容ですが、簡単にいうと以下のケースにおいて今までIn-place Updateが出来なかったのですが、それができるようになりました
( ゚Д゚ノノ"☆パチパチパチパチ
- 仮想マシンのサイズ変更(スケールアップ/スケールダウン) ※たとえばSサイズからLサイズ、SサイズからXSとか
- ローカルストレージの増加
- デプロイされてるロールの追加・削除
- エンドポイントの数や種類の変更
今まで再デプロイとかVIPスワップで対応しないと行けなかったのがIn-place Updateでもいけるのは嬉しいですね!
※ちなみにIn-place UpgradeなのかIn-place Updateなのかははっきりしてほしいですがw(管理ポータルとか見る限りUpgradeだとは思いますけど元ネタのBlogに合わせてます。どっちでもいいんじゃないですかね)
変更できる項目が元ネタのところにまとまってるのでそのまま持ってこようと思います。
変更内容 | In-place Update | VIP Swap | 再デプロイ |
Guest OSのバージョン | OK | OK | OK |
.NET Trustレベル | OK | OK | OK |
仮想マシンのサイズ | OK 注意:仮想マシンのサイズを変更するとローカルデータが破棄されます。 Management APIを使用してこの変更を行う場合は強制フラグが必要です メモ:Azure SDK 1.5以上が必要 |
OK | OK |
ローカルストレージの設定 | OK(ただし増加のみ) メモ:Azure SDK 1.5以上が必要 |
OK | OK |
ロールの追加または削除 | OK | OK | OK |
特定ロールのインスタンス数 | OK | OK | OK |
サービスエンドポイントの数や種類の変更 | OK メモ:Azure SDK 1.5以上が必要 エンドポイントが更新されるので、一時的に可用性が損なわれる(接続できなくなる瞬間がある) |
NG | OK |
ConfigurationSettingsの名前と値 | OK | OK | OK |
ConfigurationSettingsの値 | OK | OK | OK |
証明書の追加 | OK | OK | OK |
既存の証明書の変更 | OK | OK | OK |
新しいコードのデプロイ | OK | OK | OK |
再デプロイは基本的にまっさらな状態でデプロイになるので、まぁこの辺の制約はないわけで。
VIP SwapもIPアドレス付け替えと考えると、サービスエンドポイントが変わらなければOK(つまりそこだけNG)なので納得ですね。
In-place Updateで仮想マシン(インスタンス)のサイズやロール数を変更する場合は、アップグレードダイアログの「VMサイズまたはロール数の更新を許可する」にチェックを付けましょう。付けずに更新しようとするとエラーになります。(Management APIでやる場合も同様に強制フラグをOnにして実行しましょう)
さて他にも幾つか追加された機能がありまして。
In-place Updateをキャンセル/ロールバックなど細かくコントロールすることができます。
アップグレードモードが自動の場合はこれらはよしなにしてくれますが、マニュアルモードの場合、管理ポータルやManagement APIを使って細かく制御できます。
このへん詳しく載っていますので参照ください↓
まとめ
ということで、アップグレード手法をまとめるとこんな感じですかね(コピペですけど)
更新方法 | 説明 | メリット | デメリット |
In-place | 新しいパッケージを今稼働してるインスタンスやサービス上に適用する方法 | 1つのデプロイで済む 各ロールで2インスタンス以上あれば可用性を維持したまま更新できる |
更新してる間、更新対象のロールはダウンするのでサービス提供能力が落ちます。 全インスタンスが更新されるまでの間、新旧2つのバージョンのサービスコードが稼働するので動作に差がでてしまいます |
VIP Swap | 新しいパッケージを別の領域(ステージング)に展開し、IPアドレスを付け替える方法(サービスをスワップする) | サービスダウンタイムや提供機能のロスが無い | 少なくとも2つデプロイ(プロビジョニングとステージング)が実行されてる必要がある(スワップするのに必要) |
再デプロイ | 稼働してるサービスを削除して新しいパッケージをデプロイする方法 | 1つのデプロイで済む | サービス削除するので、提供していたサービスはダウンする。デプロイが変わるとIPアドレスも変わるので、DNSの伝達に時間がかかるケースもある |
ピンバック: インプレース更新の改善 « S/N Ratio (by SATO Naoki)
ピンバック: Windows Azure によるアプリケーション開発基礎 « ブチザッキ