SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

VM Role のインスタンスのライフサイクルについて

leave a comment

VM Role で展開したインスタンスのライフサイクルについて少しまとめていきたいと思います。

Microsoft の安納さんが以下のブログで情報を公開してくださっていて、この内容がとてもわかり易いです。
自分の勉強メモとしてまとめていますので、特に目新しいことは書いていないです…。
【Azure for ITPro】Active Directory ドメインコントローラーを VM Role にインストールすることがお勧めできない理由

公開されている技術情報としては以下の情報を参考にしています。
About the VM Role Deployment Lifecycle

■VM Role のインスタンスの基本構成


まずは、VM Role のインスタンスの基本構成のおさらいを。

VM Role 上でインスタンスを展開するためには事前に以下をアップロードしておきます。 
image

Visual Studio または、VIsual Web Developer  で事前にアップロードしていた VHD や Hosted Service 証明書、VM Role のインスタンスの各種設定を行い、VM Role のインスタンスを起動させます。
image

VM Role のインスタンスの VHD ですが以下の構成となっているようです。
image

VM Role のインスタンスはサービスモデルで指定した VHD で起動されるのではなく、サービスモデルでしていした VHD を読み取りイメージとしてコピーされたものを親ディスクとして指定した、差分 VHD を使用した仮想マシンとして起動がされるようです。

複数のインスタンスを起動した場合はこのようなイメージですね。
image

VM Role 上のインスタンスは、アップロードした VHD がそのまま使用されるのではなく、差分ディスクが使用されるようです。

■VM Role のインスタンスのライフサイクル


VM Role のインスタンスのライフサイクルですが以下のようになるようです。
image

VM Role のインスタンスをデプロイ / Reimage すると仮想マシンの作成が行われるようで、それまでにローカル (VHD) に格納していたデータはすべて初期化されます。

現在の Beta 版の VM Role では Reimage / Reboot であればローカルストレージのデータはそのまま残っているような挙動をするのですが、原則としては消えるものとして考えた方が良いと思います。

そのためローカルに格納しているデータは [非永続的] となり、永続的なデータとすることはできません。
image

データを永続化するためにはSQL Azure や Windows Azure Storage を使用する必要があります。
image

■現状の挙動について


現状の VM Role Beta 版の挙動についてまとめていきたいと思います。

– Reboot –

VM Role のインスタンスの再起動を行うためには、2 種類の方法があります。
一つが Management Portal の Reboot を使う方法。
もう一つがリモートデスクトップで接続をして、再起動を行う方法です。

Management Portal からのリブートはインスタンスを選択して、[Reboot] を押すことで実施できます。
再起動の確認は表示されず、即時に Reboot が開始されます。
image

Reboot をすることで、インスタンスのステータスが [Stopping (Rebooting).] となりインスタンスの再起動が行われます。
image

[Reboot] によるインスタンスの再起動ですが、これは各ディスクのイメージは現在使用しているものをそのまま使用しますので、C ドライブの内容は初期化されません。
image

また、ローカルストレージについても同様で、[Reboot] 前に格納されていたファイルもそのまま残っています。
image

どのタイミングで発生するかはよくわかっていないのですが、 [Reboot] をすると [Reimage] 相当の挙動となり、VHD が初期化されるということがたまにあります。
# 2,3 回 Reboot をすると発生するみたいですが…。
この場合は VHD の領域 (C ドライブ) は csupload でアップロードした VHD で再度デプロイが行われますので C ドライブのデータは初期化されます。ローカルストレージに関してはそのまま残っているのですが。

現状は、Reboot をするとたまに赤い線のライフサイクルになることがあるので注意が必要かと思います。
# この現象は、1 インスタンスで稼働させているからなのかもしれませんが。
image

– リモートデスクトップでのシャットダウン –

リモートデスクトップでの再起動はオンプレミスのサーバーの OS 再起動と変わりません。
image
通常の OS の再起動が実施されます。
この再起動に関しては何回か実施してみたのですが、[Reimage] 相当の挙動にはなりませんでした。

– Reimage-

Reimage は使用している VHD の再展開になります。
Reboot と同様、確認のメッセージは表示されずに即時に実行されます。
image
image

そのため、VHD 上の内容 (C ドライブ) の内容はすべて初期状態に戻ります。
一度環境を削除して、以下の動作が再度実行されるイメージですね。
image

VHD Images にアップロードしている VHD はSysprep 済みの状態のものになりますので、Sysprep から再度実行されることになります。
C ドライブの内容はアップロードした VHD が使用されるため初期化されますが、ローカルストレージの内容に関しては、Reboot と同様、継続して使用することができました。
何度も書いてしまいますが基本的にはローカルストレージも非永続領域のはずですので、これを永続領域としてみることはできなかと。
# 検証で一時的なデータをおいておくのには便利なんですけどね。
image

– リモートデスクトップでシャットダウン –

VM Role はリモートデスクトップで接続ができますので、インスタンスをシャットダウンすることも可能です。
image

リモートデスクトップで接続をしてシャットダウンをしても OS は自動的に起動されてきます。
# # Fabric Controller がインスタンスの停止を検知して起動させているのかもしれないですね。
image

そのため、一部のインスタンスだけを停止した状態にしたいというようなことは、シャットダウンではできないみたいですね。
自動起動してきた場合、環境はそのまま使用されますのでデータが初期化されるということは無いようです。

ただし、シャットダウン後の自動起動にはかなり時間がかかります。
image
一度 [Aborted] になってから起動するようなので、障害として検知されるまで時間がかかっているのからだと思いますが。

– Stop –

インスタンスでのサービスを停止する際には、プロジェクトを [Stop] する必要があります。
image
image
個別のインスタンス単位ではなく、プロジェクト単位での Stop になりますので、VM Role で提供しているサービス全体が停止されます。
image

再開するときは [Start] をクリックします。
image

[Start] した後の状態ですが、停止した時の状態を再開になるため、データの状態はそのまま継続されることになります。

-Delete → Deploy –

VWD / Visual Studio ですでに環境が存在している場合に発行した場合、
image
または Management Portal から [Delete] → [Deploy] した場合の挙動ですが、これは一度環境が削除されて再作成されますので C ドライブ / ローカルストレージともにデータが初期化されます。
ローカルストレージのデータ初期化も行われますので [Reimage] と全く同じというわけではないようですね。

■まとめ


今回、検証した内容では各操作によるデータの初期化状況は以下のようになりました。

操作 C ドライブ (VHD) ローカルストレージ
Reboot ※1 ○ (×)
Reimage ×
Stop
Start
リモートデスクトップ による再起動
リモートデスクトップ によるシャットダウン
VWD による再発行 (削除して実行) × ×
Delete → Deploy × ×

○ : データが初期化されない  × : データが初期化される
※1 : 数回実施すると [Reimage] 相当の動作になる場合あり

これだけ見るとデータはローカルストレージに置いておけばいいのではと考えてしまうかもしれないですが、[ローカルストレージは非永続領域] ですので、永続化したいデータに関しては Windows Azure Storage / SQL Azure / Azure Connect を使用してオンプレミス環境に保存等の対応をする必要があると思います。
# 一時的なデータを置いておくためにはローカルストレージを使っても何も問題はないと思いますが。

VM Role のライフサイクルを考慮した実運用環境での利用方法のノウハウは、まだまだ検討の必要がありそうですね。

Written by masayuki.ozawa

1月 30th, 2011 at 6:56 pm

Posted in Windows Azure

Tagged with ,

Leave a Reply

*