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

Windows Azure 1.3の新機能の概要

株式会社 ビービーシステム 亀渕 景司
2010/12/27
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

 2010年11月29日、Windows Azure Platformがアップデートされ、多数の新機能が公開された。また開発者向けのキットであるWindows Azure SDK 1.3(以下、SDK 1.3)も同時にリリースされている。

 今回のアップデートで新しく追加された機能は以下のとおりだ。

  • XSインスタンス(Extra Small Instance)
  • スタートアップ・タスクでの特権の昇格(Elevated Privileges for Startup Tasks)
  • WebロールでフルIIS機能(Full IIS in Web Role)
  • Adminモード(Admin Mode)
  • Windows Azure Guest OS 2.0
  • Windows Azure Connect/仮想ネットワーク(Virtual Network)
  • リモート・デスクトップ接続(Remote Desktop Access)
  • 仮想マシン・ロール(Virtual Machine Role、VM Role)
  • 新しい管理ポータル

 前編では、これらWindows Azureの新機能について開発者向けに解説する。

Windows Azureの新機能とSDK 1.3

XSインスタンス(Extra Small Instance)

 XS(エクストラ・スモール)インスタンスは、Windows Azureコンピューティング・インスタンスに追加された新しい仮想マシンのサイズだ。

 XSインスタンスは、従来のS(スモール)インスタンスに比べ(下記の表を参照)、より低コストで提供されるが、割り当てられるメモリやインスタンス・ストレージは低容量になり、I/Oに対するパフォーマンスも低くなる。このため比較的小規模なアプリケーションを、コストを抑えて実行したい場合に適するだろう。

インスタンスのサイズ CPU
(GHz)
メモリ
(Mbytes)
インスタンス・ストレージ
(Gbytes)
I/Oパフォーマンス 時間あたりのコスト
(円)
XS 1 × 1.0 GHz 768 MB 20 GB \4.9(予価)
S 1 × 1.6 GHz 1.75 GB 225 GB \11.76
M 2 × 1.6 GHz 3.5 GB 490 GB \23.52
L 4 × 1.6 GHz 7 GB 1,000 GB \47.04
XL 8 × 1.6 GHz 14 GB 2,040 GB \94.08
表1コンピューティング・インスタンスの比較(2010年11月末現在)
 XSインスタンスはベータ版のため、価格は予価となっている。

 インスタンス・サイズは、次の画面のように、Windows Azureのプロジェクト(=WebロールやWorkerロールなど)のプロパティで設定できる。

図1 XSインスタンスの設定例
Visual Studio 2010のIDEで、Windows Azureのプロジェクト(WebロールやWorkerロールなど)のプロパティを開いたところ。[ソリューション エクスプローラー]にあるプロジェクト項目の右クリック・メニューから[プロパティ]で開ける。
  WebロールやWorkerロールのプロジェクト・プロパティの[構成]タブにある[VM サイズ]コンボボックスから「極小」(XS)を選択することで、インスタンス・サイズをXSインスタンスに設定できる。また、この設定はサービス定義ファイル(=.csdefファイル)でも設定することもできる。

 XSインスタンスは(執筆時点で)ベータ版となっており、利用するにはWindows Azure Platform管理ポータルからベータ・プログラムに参加する必要がある。

スタートアップ・タスクでの特権の昇格(Elevated Privileges for Startup Tasks)

 「スタートアップ・タスクでの特権の昇格」機能は、WebロールおよびWorkerロールの実行前に、アドミニストレーター権限を使用して.CMDファイル(=コマンド・プロンプト用のスクリプト・ファイル。いわゆる、バッチ・ファイル。参考:「Windows Server Insider:Windows 2000 コマンドライン徹底活用 第3回 スクリプト入門」)を実行することが可能だ。

 SDK 1.3では、スタートアップ・タスクとしてサービス定義ファイル(=.csdefファイル)に指定した.CMDファイルを、アドミニストレーター権限またはロールの既定の権限で実行できる。これにより、例えばWebサーバ「IIS」に対し、追加モジュールのインストールやレジストリの変更などを行えるので、各ロールの仮想マシンをより柔軟に構成できるようになっている。

 次の画面は、サービス定義ファイルをコード・エディタで開いたところ。

図2 スタートアップ・タスクの設定例
サービス定義ファイル(=.csdefファイル)を、Visual Studio 2010のコード・エディタで開いたところ。
  [ソリューション エクスプローラー]上で、スタートアップ・タスクとして実行する.CMDファイルを追加。
  binフォルダに出力されるように、[プロパティ]ウィンドウで[出力ディレクトリにコピー]プロパティを「常にコピーにする」に変更する。
  サービス定義ファイル内に<Startup>要素および<Task>要素を追加し、<Task>要素のcommandLine属性に.CMDファイルへのパスを、executionContext属性に特権利用の有無(特権利用を有効にする場合は「elevated」)を、taskType属性にタスク種別(現タスクが完了するまで次のタスクを待機させる場合は「simple」)をそれぞれ指定することで、Windows Azure上に配置・展開された際に、指定した.CMDファイルのタスクが実行される。

 .CMDファイル内に記述する内容は、通常のWindows Server 2008上で実行する際に利用できるものと同等のコマンドを記述できる。

WebロールでフルIIS機能(Full IIS in Web Role)

 SDK 1.3のWebロールでは、IISのフル機能を利用することが可能になった。1つのWebロール・インスタンスでの複数のWebサイトやWebアプリケーションの構成、IISディレクトリ配下での実行など、多数の機能がサポートされる。

 フルIIS機能を利用する場合、アプリケーションはWindows Azure既定のWebサーバである「Windows Azure Hosted Web Core」(=IIS 7以降で提供されているWebコンポーネント)ではなく、Windows Server標準のWebサーバである「IIS」の配下で動作する。そのため、FastCGI(=PHPなどを実行するモジュール)の設定やRoleEntryPoint派生クラス(=WebRole/WorkerRoleクラス)内での処理が必要になるなど、Webアプリケーションの処理や設定方法に変更が必要なケースがあるので注意されたい。

 SDK 1.3に対応したWindows Azure開発環境である「Windows Azure Tools for Microsoft Visual Studio」を使用してWebロール・プロジェクトを新規作成した場合、既定でフルIISの設定となる。

 次の画面は、既定でのサービス定義ファイルのコード例。

図3 フルIISの設定例
Webロール・プロジェクトを新規作成した場合のサービス定義ファイルのコード例。既定でフルIISが有効。
  サービス定義ファイル内に<Sites>要素を定義し、IIS上でホストするWebアプリケーションの設定を定義することで、フルIISとしてWindows Azure上で稼働させられる。

 もしフルIIS機能が不要で、従来のWindows Azure Hosted Web Coreで動作させたい場合は、このサービス定義ファイルを変更することで(具体的には<Sites>要素の定義を削除することで)対応できる。

Adminモード(Admin Mode)

 Adminモードは、WebロールやWorkerロールをシステム権限(=Local Systemアカウント)で動作させられる機能だ。各種ロールをAdminモードで動作させることで、COMコンポーネントの登録やレジストリへの書き込みなど、アプリケーション内で操作できる範囲を大幅に広げることが可能だ。

 ただし、フルIISとの組み合わせるかどうかにより、システム権限が有効な範囲が異なるので注意が必要となる。

 次の画面は、サービス定義ファイルにおけるAdminモードの設定例。

図4 Adminモードの設定例
Adminモードの設定は、サービス定義ファイルで行う。
  サービス定義ファイル内の<Runtime>要素を追加し、そのexecutionContext属性に「elevated」を設定することで、対象のWebロールまたはWorkerロールがシステム権限で動作する。

 Adminモードを設定するとシステム権限で動作することになるため、実際の利用に当たってはアプリケーションの構成やシステム権限がどの範囲で必要かなど、十分に検討してほしい。

Windows Azure Guest OS 2.0

 Windows Azure Guest OS(=Windows Azure仮想マシンのOS)は初のメジャー・バージョン・アップが行われ、Windows Server 2008 R2ベースのGuest OS 2.0となった(ちなみに、Guest OS 1.xはWindows Server 2008 SP2ベース)。Windows Azure Guest OS 2.0では、Windows Server 2008 R2およびIIS 7.5の機能を利用することが可能だ。

 Windows Azure Guest OS 2.0はすでに利用可能だが、Guest OSの自動更新を有効にしている場合でも、メジャー・バージョン(=OSファミリ)が異なるバージョンへの自動アップグレード(つまり、1.xから2.xへのアップグレード)はサポートされていない。その場合、Windows Azure Guest OS 2.0へのアップグレードは、(管理ポータルを使用したOSの設定変更や、サービス設定ファイル(=.cscfgファイル)の修正などで)手動により行う必要があるので注意したい。

Windows Azure Connect/仮想ネットワーク(Virtual Network)

 Windows Azureにおける仮想ネットワークに関する機能は、新しく「Windows Azure Virtual Network」としてカテゴライズされた。Windows Azure Connect(旧称:“Project Sydney”)は、そのWindows Azure Virtual Networkの最初の機能として、CTP版がリリースされている。

 Windows Azure Connectは、IPSecを使用してWindows Azure上のロール・インスタンスとローカル・コンピュータを仮想ネットワークで直接接続する機能だ。TCPの443番ポートを使用して接続するため、ファイアウォールなどに特別な設定変更を加えることなくロール・インスタンスと通信することが可能になる。

 また、仮想ネットワーク接続であるため、ローカル・コンピュータからロール・インスタンスへの接続だけでなく、逆方向の接続も可能で、双方向での通信が行える。例えばWindows Azure上から企業内のSQL Serverデータベースへ接続し、情報を取得するといったことが可能だ。

 Windows Azure Connectは、次の画面のように、Windows Azureのプロジェクト(=WebロールやWorkerロールなど)のプロパティで設定できる。

図5 Windows Azure Connectの設定例
Visual Studio 2010のIDEで、Windows Azureのプロジェクト(WebロールやWorkerロールなど)のプロパティの[仮想ネットワーク]タブを開いたところ。
  [Windows Azure Connect のアクティブ化]チェックボックスをチェック。
  [ローカル コンピューターに接続できるようにこのロールの Windows Azure Connect をアクティブ化するには、 Windows Azure ポータル からアクティブ化トークンを取得して、ここに貼り付けます]欄に、Windows Azure管理ポータルより取得したアクティブ化トークンを設定する。またこの設定は、サービス定義ファイル(=.csdefファイル)およびサービス設定ファイル(=.cscfgファイル)に記述することでも設定可能だ。

 Windows Azure Connectは執筆時点でCTP版となっており、利用するにはWindows Azure Platform管理ポータルからベータ・プログラムに参加する必要がある。

 また、Windows Azure Connectを使用するために必要なローカル・コンピュータ側のエージェント・アプリケーションは、執筆時点で英語版Windows OSのみにインストールすることができる。

リモート・デスクトップ接続(Remote Desktop Access)

 リモート・デスクトップ接続機能を使えば、Windows Server 2008 R2などのOSで提供されているリモート・デスクトップ接続と同様に、Windows Azure上で稼働しているロール・インスタンスにリモート・デスクトップ経由でログオンし、遠隔操作を行うことができる。

 これにより、例えばアプリケーションをWindows Azure上に配置した後での設定変更や、サーバ上のログの確認、トラブルシューティングなど、いままでサービス・パッケージの再配置が必要な修正やサーバの状況の遠隔確認などを、より容易に行うことが可能となった。

 次の画面は、その設定例である。

[リモート デスクトップ接続の構成]をクリック
図7 リモート・デスクトップ接続の設定例
リモート・デスクトップ接続は、Windows Azureプロジェクトを配置する際に構成できる。
  [Windows Azure プロジェクトの配置]ダイアログで[リモート デスクトップ接続]をクリックすると、[リモート デスクトップ接続]が表示される。
  [リモート デスクトップ接続]の[すべてのロールの接続を有効にする]チェックボックスをチェックする。
  リモート・デスクトップ接続時に使用するログオン・ユーザー名とパスワード、アカウントの有効期限を設定する。また、これらの設定はサービス定義ファイルおよびサービス設定ファイルに記述することでも設定可能だ。

 リモート・デスクトップ接続については、後編でより詳細に説明する。

仮想マシン・ロール(Virtual Machine Role、VM Role)

 仮想マシン・ロールは、あらかじめ提供されているWindows Azure Guest OSではなく、独自に作成したWindows Server 2008 R2のOSイメージを、Windows Azure上で稼働させることが可能な新しいロールだ。

 仮想マシン・ロールでは、WebロールやWorkerロールとは異なり、Hyper-V管理ツール(参考:「Windows TIPS:Windows Hyper-V Server 2008を利用する」)を使用して作成した独自のOSイメージを指定する。アプリケーションのインストールや設定など、Webサーバへの展開に時間のかかる処理や、スタートアップ・タスクによる自動化が不可能な処理をパッケージングし、導入時間/作業を短縮できる点が優れている。

 仮想マシン・ロールを利用することで、コストを抑えてWindows Azure上に既存アプリケーションを移行することも可能な一方、WebロールやWorkerロールにはない運用時に考慮すべき事項が増える点には注意が必要だ(これについては後編で解説予定)。

 仮想マシン・ロールに関する設定は、次の画面のように、仮想マシン・ロールのプロジェクト・プロパティで行う。

図8 仮想マシン・ロールの設定例
仮想マシン・ロールのVHD(=仮想ハード・ディスク)に関する設定は、次の画面のように、仮想マシン・ロールのプロジェクト・プロパティの[仮想ハード ディスク]タブで行う。また、仮想マシン・ロールに関する設定は、サービス定義ファイルおよびサービス設定ファイルに記述することでも設定可能。
  [Windows Azure アカウントの資格情報を選択または作成します]コンボボックスでは、仮想マシン・ロールをホストするWindows Azure Hosted Servicesの資格情報(=ログインのための情報。事前に作成するか、この場で作成可能)を選択する。
  [Windows Azure ストレージ アカウントから仮想マシン ロールの VHD を選択します]コンボボックスでは、仮想マシン・ロールとして起動させるOSイメージをWindows Azureストレージ内から選択する。

 仮想マシン・ロールは執筆時点でベータ版となっており、利用するにはWindows Azure Platform管理ポータルからベータ・プログラムに参加する必要がある。

 仮想マシン・ロールについては、後編でより詳細に説明する。

そのほかの機能拡張と変更点

開発環境の名称変更

 SDK 1.2以前から提供されている開発用環境である「Development Fabric」と「Development Storage」だが、SDK 1.3ではそれぞれ「Windows Azure Compute Emulator」と「Windows Azure Storage Emulator」に名称が変更されている。提供される機能そのものは従来のバージョンと同一だ。

ネットワーク拡張機能

 SDK 1.3では、サービス定義ファイル内の<InputEndpoint>要素にて各ロールのローカル向けのプライベート・ポート(以下、ローカル・ポート)を指定することが可能になった。未指定の場合、ローカル・ポートはランダムに設定されるが、固定化することでロール間での通信をより厳密に定義し、制限することができる。

 ローカル・ポートは、次の画面のように、Windows Azureのプロジェクト(=WebロールやWorkerロールなど)のプロパティで設定できる。

図9 ローカル・ポートの設定例
ローカル・ポートは、WebロールやWorkerロールなどのプロジェクト・プロパティの[エンドポイント]タブで設定できる。
  [プライベート ポート]列に、ロール・インスタンスがデータセンター内(=ファブリック内)で使用するポート番号を指定する。また、ローカル・ポートの設定はサービス定義ファイルからでも設定することもできる。

配置パフォーマンスの向上

 SDK 1.3では、開発環境(Windows Azure Compute Emulator)への配置に関するパフォーマンスが向上しており、所要時間が短縮された。これにより開発する際の待ち時間を減らし、効率よく開発を行えるようになった。

SDK 1.3の入手と互換性

 SDK 1.3およびWindows Azure Tools for Visual Studioは、「Microsoftダウンロード センター」から入手可能だ。

 また、SDK 1.3に対応した新機能を利用するに当たっては、Windows Azure Guest OSとの互換性にも注意されたい。「MSDN:Windows Azure Guest OS Releases and SDK Compatibility Matrix SDK 1.3」に記載があるとおり、SDK 1.3に対応するWindows Azure Guest OSのバージョンは現在のところ、「1.8」以降または「2.0」以降となるので注意が必要だ。

 次のページでは、刷新された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 記事ランキング

本日 月間