特集:Windows Azure SDK 1.3の新機能(後編)

すべてが自由自在なクラウド環境「仮想マシン・ロール」

株式会社 ビービーシステム 亀渕 景司
2011/02/15
Page1 Page2

Azure関連の記事

まだ知らない人のための最新Azure入門 - Build Insider

Azure TIPS - Build Insider

ここまで進化した、Azure Webサイトの世界観(2014年7月版) - Build Insider

連載:Windows Azureモバイルサービスで作る簡単スマートフォンアプリ - Build Insider

Microsoft Azureプレビュー・ポータルの機能とは? - Build Insider

特集:Windows Azureメディア・サービスを利用したストリーミング配信 - Build Insider

連載:Microsoft技術におけるアイデンティティ連携開発のいま - Build Insider

Vittorio Bertocci氏インタビュー: 開発者にとってのWindows Azure Active Directoryの役割と今後の展開 - Build Insider

その知識、ホントに正しい? Windowsにまつわる都市伝説(6):Microsoft Azureの秘密を探る[その1] - @IT

進化を続けるマイクロソフトのクラウド:Windows Azureの“いま”を知る - @IT

Azure - Build Insider

 前回は「Windows Azure SDK 1.3」(以下、SDK 1.3)の新機能である「リモート・デスクトップ接続」の概要について解説した。

 今回は「仮想マシン・ロール」について詳細な利用方法を解説していく。

仮想マシン・ロールの概要

 仮想マシン・ロールは、Windows Azureに標準で提供されているWindows Azure Guest OSではなく、開発者側で独自に構成したWindows Server 2008 R2のOSイメージをWindows Azure上で稼働させることができる、Windows Azure SDK 1.3で追加された新しいロールだ。

 通常、開発者は、Webアプリケーションなどを開発するだけでなく、Windows Azure上のホスト・サービス(Hosted Service)でアプリケーションをどのように稼働させるかをサービス・モデルで定義し、それをパッケージ化してWindows Azure上のホスト・サービスに配置する。配置されたサービス・パッケージは、Windows Azure Guest OS上で動作する。

 これに対し、仮想マシン・ロールでは、OSの部分からすべて開発者側で構成し、Windows Azure上のホスト・サービスにアップロードする。どのようなアプリケーションが稼働するかなどは、すべて開発者が作成したOSイメージ次第となり、またWindows Azure上のホスト・サービスでは、直接アップロードされたOSイメージが起動される。

 次の図は、この両者の違いを図示したものだ。

図1 仮想マシン・ロールの開発・運用イメージ(右側。左側は通常のWeb/Workerロールの開発・運用イメージ)
(青い実線の枠) …… マイクロソフトの管理対象。

 仮想マシン・ロールでは、WebロールやWorkerロールに存在するさまざまな制限に開発者はとらわれずに、自社設置型(=オンプレミス)のWindows Server 2008 R2上と同じようにアプリケーションを開発、構成できる。その一方で、OSそのもののインストールやセキュリティ・パッチの適用など、本来、PaaSであるWindows Azureでは考慮しなくてもよい範囲の管理も開発者側で行う必要がある。

 以降では、仮想マシン・ロールについて詳細な利用手順を解説する。

 なお、仮想マシン・ロールの利用を開始するに当たり、その事前準備として、Windows Azure Platform管理ポータル上でのホスト・サービスおよびWindows Azureストレージ・アカウント(Storage Account)の作成と、各作成手順で利用されるデジタル証明書を登録しておく必要がある。その具体的な手順については、前回の解説を参照してほしい。

仮想マシンを準備する

 本節〜次節では、仮想マシン・ロールの新規作成と利用の方法について解説する。

 仮想マシン・ロールを利用するには、大きく以下の4つのステップが必要だ。

【仮想マシンを準備する】
(1)Hyper-Vを使用した仮想ハード・ディスクの作成
(2)Windows Azure上へ仮想ハード・ディスクのアップロード

【仮想マシン・ロールを利用する】
(3)Visual Studio 2010を使用した仮想マシン・ロールの作成
(4)Windows Azure上へ仮想マシン・ロールの配置

【注意】仮想マシン・ロール(ベータ版)への課金とライセンス料

 執筆時点で仮想マシン・ロールはベータ版となっており、本稿の手順を実施するにはWindows Azure Platform管理ポータルからベータ・プログラムに参加し、(仮想マシン・ロールの利用が)アクティブな状態になっている必要がある。

 また、本稿で解説している手順はベータ時点のものであり、正式リリース時とは異なる可能性があるので注意していただきたい。

図2 仮想マシン・ロールがアクティブな状態の例

 ベータ段階ではあるが、仮想マシン・ロールをWindows Azure上に配置した場合、WebロールやWorkerロールと同様にWindows Azure上で配置されている時間単位で課金される。この課金は、仮想マシン・ロールで稼働しているWindows Server 2008 R2のインストール・メディアのライセンス状態に関係なく、サーバ・ライセンス料も含まれている(詳細は「MSDN:Windows Azure コンピューティング」の「VM ロールの価格情報とライセンス」を参照)。また、VHDファイル(=仮想ハード・ディスク)のアップロード時にかかるネットワーク転送に関する課金も発生するので、利用時には注意されたい。

 以降では各ステップの詳細について解説していく。

VHDファイル(=仮想ハード・ディスク)の作成

 最初に、仮想マシン・ロールの基となるOSがインストールされた仮想ハード・ディスク(=.VHDファイル。仮想マシン内のハード・ディスク。以下、「VHD」と表記)を作成する。

 このVHDファイルは、Windows Server 2008/Windows Server 2008 R2(推奨)上のHyper-VおよびHyper-Vマネージャを使用して作成する。Hyper-Vが有効なサーバの構築についての詳細は、「Windows TIPS:Windows Hyper-V Server 2008を利用する」を参考に準備していただきたい。

 なお、VHDファイルの容量は、Windows Azure上の仮想マシン・サイズによって上限が規定されているので注意してほしい。

Windows Azure仮想マシンのサイズ マウントできる最大VHDサイズ
Extra Small(XS) 15 GBytes
Small(S) 35 GBytes
Medium(M)、Large(L)、Extra Large(XL) 65 GBytes
表1 仮想マシン・ロールでマウントできる最大VHDサイズ

 以下に、仮想マシン(および、その基となる仮想ハード・ディスク)の作成手順を示す。

(1) ([スタート]メニューの[管理ツール]−[Hyper-Vマネージャー]から)Hyper-Vマネージャを起動し、そのメニューバーより[操作]−[新規]−[仮想マシン]を選択する。

(2)[仮想マシンの新規作成ウィザード]が表示されるので、新しい仮想マシンの設定を行う。

(3)[仮想ハード ディスクの接続]ページでは、[仮想ハード ディスクを作成する]ラジオボタンを選択し、[サイズ]欄に仮想マシン・ロールでマウントできる最大VHDサイズ以下の容量を指定する(例えばSmallインスタンスを利用する場合は、最大VHDサイズに合わせて「35」GBytesを指定すればよい)。

図3 [仮想ハード ディスクの接続]ページの設定例
[仮想マシンの新規作成ウィザード]の[仮想ハード ディスクの接続]ページでは、VHDサイズを指定する。
  使用する仮想マシン・サイズで規定されている最大VHDサイズ以下の容量(例:「35」GBytes)を指定する。

(4)[インストール オプション]ページでは、[ブート CD/DVD-ROM からオペレーティング システムをインストールする]ラジオボタンを選択し、[イメージ ファイル (.iso)]欄にWindows Server 2008 R2のインストール・メディア(.isoファイル)を指定する。

【注意】インストール・メディアについて

 仮想マシン・ロールに使用するWindows Server 2008 R2のライセンスはWindows Azureを通じて提供されるため、利用するには正しくライセンス・キーを受け取れるようにボリューム・ライセンス版のインストール・メディア(.isoファイル)を使用してWindows Server 2008 R2をインストールする必要がある。ここで利用されるボリューム・ライセンス版のインストール・メディアは、ボリューム・ライセンスの契約者が利用できる「Volume Licensing Service Center (VLSC)」や「MSDN サブスクライバ ダウンロード」などからダウンロードできる。ボリューム・ライセンスまたはMSDNサブスクリプションの契約がない場合、ボリューム・ライセンス版のメディアを入手することができないので注意が必要だ。

 また、執筆時点では標準的な手法を用いて日本語版OSを動かすことができないため、本稿では英語版のWindows Server 2008 R2を使用して仮想マシンを作成している。

 後は[仮想マシンの新規作成ウィザード]の[完了]ボタンをクリックすれば、仮想マシン(および、その基となる仮想ハード・ディスク)の作成は完了だ。

 続いて、この仮想ハード・ディスク上への実際のOSインストールや、そのOSに対して各種設定を行う。

仮想マシンへの各種インストール

(5)[仮想マシンの新規作成ウィザード]の完了後、Hyper-Vマネージャの中央部分に表示される仮想マシンの項目(本稿の例は「VMRoleBase」)の右クリック・メニューから[接続]を実行する。これにより[仮想マシン接続]ダイアログが表示されるので、[開始]ボタンをクリックして仮想マシンを起動する。これにより、先ほどの[インストール オプション]ページで指定したWindows Server 2008 R2が自動的にインストールされる。

(6)Windows Server 2008 R2インストール後、そのWindows Server 2008 R2にログインして、([スタート]メニューの[Administrative Tools]−[Server Manager]から起動できる)サーバ・マネージャより、以下の[Roles](=役割)と[Features](=機能)を追加する。

  • 「Web Server (IIS)」 Roles *1
  • 「.NET Framework 3.5.1」 Features *2
*1 本稿では、仮想マシン・ロール上でWebページを表示させるため、Webサーバ(IIS)の役割をOSに追加する必要がある。
*2  .NET Framework 3.5.1は、仮想マシン・ロールでは必須のコンポーネントである。

(7)上記の役割と機能の追加後、Windows Updateを実行し、OSのセキュリティ・パッチなどのインストールを実施し、OSを再起動する。

仮想マシンでのWindows Updateサービスの設定

(8)Windows Azure上では、不用意なWindows Updateによるサーバ停止を防ぐため、(図4の手順で)Windows Updateサービスの無効化を行う(=サービスのスタートアップ・タイプを「無効」(=Disabled)に設定する)。

図4 Windows Updateサービスの無効化
このウィンドウは、[スタート]メニューの[Administrative Tools]−[Services]から起動できる。「Windows Update」というサービス項目を右クリックして、(表示されるコンテキスト・メニューから)[Properties]を選択する。これにより表示されるダイアログで、[General]タブを開き、[Startup Type]コンボボックスで「Disabled」を選択する。さらに[Stop]ボタンをクリックしてWindows Updateサービスを確実に止めた後、[OK]ボタンをクリックしてダイアログを閉じる。

Webサイトの準備

(9)仮想マシン・ロールの動作を確認するために、簡単なWebページを仮想マシン上の「C:\inetpub\wwwroot」フォルダに作成し、保存する(図5参照)。

図5 動作確認用のWebページの例
本稿では、作成した仮想マシン・ロールがWindows Azure上で稼働しているかの確認だけを行うため、単純なHTMLコードを記述し、保存している(実運用するわけではないので、HTMLコードの妥当性などはここでは追求していない)。

仮想マシンへのWindows Azure統合コンポーネントのインストール

(10)再び、Hyper-Vマネージャに戻り、(中央に表示される)仮想マシンの項目(本稿の例は「VMRoleBase」)の右クリック・メニューから[設定]を実行する。これにより[<仮想マシン名>の設定]ダイアログが表示されるので、図6の手順でWindows Azure SDK 1.3に含まれているwavmroleic.isoファイルをマウントする。

図6 Windows Azure統合コンポーネントのマウント例
Windows Azure統合コンポーネントをインストールするために、wavmroleic.isoファイルをマウントする。
  [IDE コントローラー 1]の[DVD ドライブ]に、[イメージ ファイル]として「wavmroleic.iso」を設定する。
wavmroleic.isoファイルは64bit版Windows Azure SDK 1.3の場合、以下のファイル・パスに保存されている。
  C:\Program Files\Windows Azure SDK\v1.3\iso\wavmroleic.iso

 wavmroleic.isoファイルをマウントした後、仮想マシン内でDVDドライブが利用できるようになる。Windows Server 2008 R2に戻って、そのDVDドライブ内にあるWindows Azure統合コンポーネント(=通常のWindows ServerにWindows Azure向けの機能を組み込むためコンポーネント)のインストーラ(WaIntegrationComponents-x64.msi)を実行する。

(11)[Windows Azure VM Role Integration Components Setup]ウィザードが起動するので、ウィザードに従ってインストールを行い、インストール完了後にOSを再起動する。そのインストール手順を、以下に示す。

[Next]ボタンをクリック
管理者アカウントのパスワードを入力して[Next]ボタンをクリック
[Install]ボタンをクリック
[Install]ボタンをクリック
[Finish]ボタンをクリック
[Yes]ボタンをクリックして再起動する
図7 Windows Azure統合コンポーネントのインストール手順
Windows Azure統合コンポーネントのインストーラ(WaIntegrationComponents-x64.msi)を実行すると、[Windows Azure VM Role Integration Components Setup]ウィザードが起動するので、ウィザードに従ってインストールを行い、インストール完了後にOSを再起動する。
  Windows Azure上に仮想マシンが配置された際に、(仮想マシンのWindows Server OSで使用される)管理者(Administrator)アカウントのパスワードを入力する。
  ドライバ・インストールの許可を求められるので[Install]ボタンをクリックし、インストールを行う。
  インストール完了後、OSの再起動を求められるので、[Yes]ボタンをクリックし、OSを再起動する。

システム準備(sysprep)ツールによる初回起動時のシステム初期化準備

(12)「C:\windows\system32\sysprep」フォルダに格納されている「システム準備ツール」(sysprep.exeファイル)を右クリックし、(表示されるコンテキスト・メニューから[Run as administrator]を選択して)システム準備ツールを管理者として起動する。

(13)システム準備ツールが起動したら、図8の実行例に従って設定した後、[OK]ボタンをクリックして実行する。

sysprep.exeファイルの右クリック・メニューから[Run as administrator]を選択
図8 システム準備ツールの実行例
システム準備ツール(sysprep)により、Windows Azure上でOSが初回起動されるときのシステム初期化準備を行う。
  Windowsエクスプローラでsysprep.exeファイルを右クリックし、表示されるコンテキスト・メニューから[Run as administrator]を選択する。
  [System Cleanup Action]コンボボックス …… [Enter System Out-of-Box Experience (OOBE)]を選択する。
  [Generalize]チェックボックス …… チェックを付け、一般化されるように設定する。
  [Shutdown Options]コンボボックス …… [Shutdown]を選択する。

 システム準備ツールの実行が完了すると、設定した値に従って(ここまでの手順で作成した)仮想マシンのOSイメージの一般化が行われ、仮想マシンが自動的にシャットダウンされる。

 このOSイメージの一般化により、Windows Azure上で仮想マシンを起動した際に(つまり次回起動した際に)初期設定が実行され、Windows Azure上で正しく稼働する状態にできる。この手順がない場合、仮想マシン・ロールは正しく動作しないので注意が必要だ。

 以上でWindows Azure上で稼働させるための仮想マシンの準備が完了した。この仮想マシンのOSイメージは、指定したVHDファイルに格納されている。

VHDファイルのアップロード

 次の手順では、作成したVHDファイルをWindows Azure上へアップロードする。

 VHDファイルのアップロードには、Windows Azure SDK 1.3に含まれているCSUploadツールを使用する。CSUploadツールは下記の手順で使用できる。

(1)Windows Azure SDK 1.3をインストールしたマシン上で、[スタート]メニューの[すべてのプログラム]−[Windows Azure SDK v1.3]−[Windows Azure SDK Command Prompt]を右クリックし、(表示されるコンテキスト・メニューから[管理者として実行]を選択して)Windows Azure SDKコマンド・プロンプトを管理者として実行する。

(2)CSUploadツールを使用し、VHDファイルのアップロード先となるWindows Azureのサブスクリプションを設定する。

csupload Set-Connection "SubscriptionId=<サブスクリプションのID>;CertificateThumbprint=<証明書の拇印(ぼいん)>"
CSUploadツールによるアップロード先の指定(Windows Azure SDKコマンド・プロンプト)
  サブスクリプションのIDおよび証明書の拇印(ぼいん)は、(前回説明した)事前準備の手順にて(メモなどに)控えた情報を入力する。

(3)CSUploadツールを使用し、VHDファイルをWindows Azure上へアップロードする。

csupload Add-VMImage -LiteralPath C:\temp\vmroletest\VMRoleBase.vhd -Location "East Asia" -Name VMRoleTest.vhd
CSUploadツールによるVHDファイルのアップロード(Windows Azure SDKコマンド・プロンプト)
この例で使われているCSUploadツールのコマンドライン・オプションの意味を以下に示す。
LiteralPathオプション …… アップロード対象のVHDファイルのパスを指定する。
Locationオプション …… アップロード対象のWindows Azureのデータセンターの場所またはアフィニティ名(例:East Asia)を指定する。
Nameオプション …… Windows Azure上で表示されるVHDファイル名(例:VMRoleTest.vhd)を指定する。

 以下に、上記のコマンドの実行例を示す。

VHDファイルをアップロードしようとすると、の段階で[Windows Azure VHD Verification Tool]ダイアログが表示される
図9 コマンドの実行例(Windows Azure SDKコマンド・プロンプト)
管理者としてWindows Azure SDKコマンド・プロンプトを実行して、CSUploadツールによりVHDファイルをアップロードする。
  CSUploadツールの接続先となるWindows Azureサブスクリプションを指定する。
  CSUploadツールにてVHDファイルをアップロードするコマンドを実行する。
  VHDファイルをアップロードする事前処理として、VHDファイルをマウントして(Windows Azureにアップロード可能な仮想マシンであるかの)検証処理が実行される。その際、[Windows Azure VHD Verification Tool]ダイアログが表示される。
  [Windows Azure VHD Verification Tool]ダイアログでは、VHDファイルをマウントし、検証処理を続行する場合、[OK]ボタンをクリックして処理を続行する。
 Windows Vistaなど、VHDファイルが(OSの機能として)マウントできないOS上でアップロードする場合や、差分VHDファイルをアップロードする場合は、(CSUploadツールで)-Skipverifyオプションを指定し、VHDファイルの検証をスキップする必要がある。

 CSUploadツールによるVHDファイルのアップロードが完了した後、Windows Azure Platform管理ポータルから正しくアップロードされたことを確認する。次の画面はその例だ。

図10 VHDファイルの確認(Windows Azure Platform管理ポータル)
アップロードしたVHDファイルを削除する場合は、Windows Azure上で稼働している仮想マシン・ロールでVHDファイルが使用されていないこと(具体的には、右側の[Properties]ペインの[In use]欄が「False」であること)を確認し、リボン・インターフェイスにある[Delete Image]メニューをクリックすればよい。
  アップロードしたVHDファイルが正しく登録されている。

【コラム】VHDファイルの差分アップロードについて

 仮想マシン・ロールでは、Hyper-Vマネージャを使用して作成できる差分VHDファイル(=前回のVHDファイルとの差分で変更点のみを含むファイル)を利用することも可能だ。

 OSの基本的な設定など、変更があまりない部分を基本のVHDファイルにまとめ、アプリケーションのインストールや設定変更など、利用目的によって変更される部分を差分VHDファイルにまとめることで、ファイルのアップロードの手間を軽減し、アプリケーション管理の利便性を向上させることができる(差分VHDファイルについてはこちらの記事を参照)。

 差分VHDファイルを利用する場合は、(基となるVHDファイルに追加して)差分VHDファイルをCSUploadツールにてアップロードした後、以下のコマンドを実行して、基となるVHDファイルと差分VHDファイルを関連付ける必要がある。

csupload Set-Parent -Child differencing.vhd -Parent base.vhd
CSUploadツールによる差分VHDファイルの関連付け(Windows Azure SDKコマンド・プロンプト)

 また、サービス設定ファイル(=.cscfgファイル)内に定義されている<OsImage>要素のhref属性に指定するVHDファイルは、差分VHDファイルを指定する必要がある(サービス設定ファイルの変更はWindows Azure Platform管理ポータル上でも可能だ)。

 次節では、いよいよ仮想マシン・ロールの利用手順を説明する。


 INDEX
  特集:Windows Azure SDK 1.3の新機能(前編)
  Windows Azure 1.3の新機能の概要
    1.Windows Azureの新機能とSDK 1.3
    2.新しい管理ポータル/そのほかのアップデート
 
  特集:Windows Azure SDK 1.3の新機能(中編)
  Windows Azure実行環境へのリモート・デスクトップ接続
    1.リモート・デスクトップ接続の概要/事前準備
    2. リモート・デスクトップ接続を利用する
 
  特集:Windows Azure SDK 1.3の新機能(後編)
  すべてが自由自在なクラウド環境「仮想マシン・ロール」
  1.仮想マシン・ロールの概要/仮想マシンを準備する
    2. 仮想マシン・ロールを利用する


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間