Web アプリケーションの配置を容易にする Windows Azure Accelerator for Web Role の紹介 ~ クラウドカバー Episode 51
今回のクラウドカバー Episode 51 は、Web アプリケーションの配置を容易にする Windows Azure Accelerator for Web Role の紹介です。Wade がお休み、、、、ということで Steve Marx とゲストスピーカーNathan Totten が担当します。
まずはいつものようにニュースから。
◆ Windows Azure AppFabric Applications
前回の Cloud Cover Episode 50 で紹介した AppFabric Application に関するブログポストです。
より詳しく AppFabric Application を理解したい、という方はぜひ一読ください。
◆ Hosted Service as a Windows Azure CDN Origin Tips
今回のゲスト Nathan は CDN Helper の作者でもあり、CDN には思い入れが強いと思われますが、そんな彼も注目するであろう、CDN の Tips 記事です。(CDN Helper はクラウドカバー48の Tip of the week で取り上げられています)
CDN を利用されている方はもちろん、CDN の検討、評価をされる際にもお役立てください。
◆ Windows Azure Marketplace Expands Application Selling Capabilities in US Markets
Windows Azure の Marketplace において、データを販売する基盤 DataMarket に加え、米国限定ではありますが、アプリケーションの販売も可能な機能が追加されました。
今後対応する国も増えるのではないかと思いますので注目したいところです。
◆ NOW AVAILABLE: Windows Azure Accelerator for Web Roles
最後のニュースは、今回の本題。Windows Azure Accelerator for Web Role のリリースについて。
この Accelerator を使用することで、Windows Azure に対して Web アプリケーションを Web 配置(Web Deploy) 機能を利用して、30秒程度で展開することが可能になります。
また、複数の Windows Azure のインスタンスを利用する場合でも、すべてのインスタンスに対してアプリケーションの配置を行うことが可能になります。
さらに、一つの Windows Azure インスタンスにおいて、複数の Web サイトをホストすることも容易に行えるようになります(なお、Windows Azure のインスタンスで、複数の Web サイトをホストする方法についてはクラウドカバーの Episode 37 でも取り上げられています)
Windows Azure Accelerator for Web Role は CodePlex にてソースコード含めダウンロード可能ですのでまずは入手/インストールください。
Accelerator をインストールすると、Visual Studio において、プロジェクトテンプレートとして 「Windows Azure Web Deploy Host」が追加されます。まずは、これを選択します。
するとウィザードが立ち上がるので、今回使用する Windows Azure ストレージのアカウント情報と、実際に Windows Azure に展開する管理アプリケーション(Accelerator 本体)において使用するアカウント情報を入力します。
入力が終わると、MVC 3 で作成された管理アプリケーションのプロジェクトと、それを Windows Azure に発行するためのクラウドのプロジェクトが作成されます。
基本的にはこのプロジェクトをそのまま「発行」し、Windows Azure 上でインスタンスが稼働し始めれば準備は完了になります。クラウドのプロジェクトを右クリックし、「発行」選択しましょう。
なお、この「発行」の前に、Windows Azure ポータルであらかじめアプリケーション展開用のホステッドサービスの作成と、リモートデスクトップ接続用の証明書の用意等を行っておく必要があります。
さて、「発行」を行うと、Windows Azure に対して、Accelerator 本体の展開が始まります。
この作業自体は、通常の Web Role へのアプリケーション展開と同じく、10分~20分程度の時間がかかるのでご了承ください。
無事に展開が終了したら、早速 Windows Azure 上のインスタンスにアクセスしましょう。以下のような管理画面がでてきますので、プロジェクト作成の際に入力したアカウント情報でログインします。
最初に行うのは、Web Site の作成です。
この際に大事なのは、”Name” と “Host Name”。
“Name” は後程 Visual Studio / WebMatrix にて Web 配置を行う際に使用します。
また、”Host Name” は、一つの Azure インスタンスで、複数の Web Site を稼働させるために必要な情報で、この情報をもとに、 HTTP リクエストが適切な Web サイトに転送されます。
実際に Accelerator が動いている Windows Azure インスタンスにリモート接続し、IIS の情報を確認すると、以下のようになっています。
Sites の下に、5つのサイトがありますが、このうち、”WebDeployHost1.Web_IN_0_Web” とあるのが Accelerator 本体です。
それ以外の4つは、管理サイトから作成した Web Site で、今回 Accelerator で作成した Web Site の情報を IIS Manager で確認すると、以下のように “Host Name” で指定したアドレスに来たリクエストは、”Name” で指定した hogehoge で処理します、という設定になっています。
ここで、Accelerator で作成した Web Site の情報を確認すると、Status が Created になりました。なお、Accelerator ではデフォルトで2つのインスタンスを使用するようになっているため、この画面でも2つのインスタンスにおける Status が確認できます。
さて、実際に指定した “Host Name” で、今回展開している Windows Azure インスタンスにリーチする方法をしては、(1) ローカルPC の Hosts 情報を書き換える、(2) CNAME の設定により、指定した “Host Name” のアドレスを Windows Azure のインスタンスの URI にマップする、といった方法が考えられます。
今回のクラウドカバーでは、(1)の方法ではうまくいかず、(2)の方法でのアクセスに切り替えた模様((1)の場合、経由するプロキシーなどの設定によりアクセスできないことがあります)。
この際に利用していたのが、Accelerator の Binding 情報の追加。
Accelerator において、Web Site 情報の Edit メニューを選ぶと、Binding 情報の項目に “add binding” のメニューがあるので、そこから CNAME な方法でのアクセス情報を追加していました。イメージ的には以下のような感じです。
なお、CNAME な方法を使うには、カスタムドメインの取得と管理が必要になります。格安の Windows ホスティングサービス Express Web での CNAME の設定方法に関しては、以前ブログで簡単に触れたtことがあるのでご参照ください(クラウドカバー Episode 44 の紹介のエントリの下のほうにあります)。
引き続きこの Accelerator に対して配置を行う Web アプリケーションを作成します。
この Web アプリケーションは、クラウド プロジェクトのテンプレートを使用せずに、通常の Web アプリケーションのテンプレートを使用して作成できます。
クラウドカバーでは MVC 3 なアプリケーションを作成しています。
配置したい Web アプリケーションの準備ができたら、ソリューションエクスプローラーで該当プロジェクトを選択し、「発行」メニューを選択しましょう。
“サービス URL” に、Accelerator がホストされている URI (xxxxx.cloudapp.net) を、”サイト/アプリケーション” に、Accelerator で作成した Web Site の名前を入力します。
また、資格情報として、Windows Azure インスタンスにリモートデスクトップ接続するためのアカウント情報を入力してください。準備ができれば、「発行」ボタンで、アプリケーションを Windows Azure に向けて送り出します!
この際、すぐにでも管理サイトで、該当 Web Site の情報を確認すると、2つある Windows Azure インスタンスのうち、一方の Status が “Deployed” になっているかと思います。
こうして Windows Azure 上のインスタンスに Web 配置された Web アプリケーションは、必要な情報をまとめたうえで一旦 Azure ストレージ上へ保存されます。Accelerator はこの Azure ストレージの状態を監視しており、Web アプリケーションのデータが更新された際に、そのデータを取得し、自身のインスタンス上に Web アプリケーションを展開する作業を行います。
これにより、複数インスタンスを使用していても、30秒程度ですべてのインスタンスにおいて、同じアプリケーションが稼働を始める、というわけです。
もうしばらく待っていると、もう一つのインスタンスでも、Status が Deployed になりますので、そうなれば準備完了!
Web Site 作成の際に指定した “Host Name” を使って、アプリケーションにアクセスしてみてください。
なお、今回のように MVC 3 のアプリケーションや、Razor を使用した Web Page の場合は、Windows Azure 上にそれらを実行するためのライブラリがないため、プロジェクトの設定において、「配置可能な依存関係の追加」メニューを使用して、必要なライブラリを Web アプリケーションと一緒に Web 配置するようにしてください。
なお、Windows Azure Accelerator for Web Role に関しては、すでに日本語での紹介技術情報も何点か書かれています。
Azure の小ネタさんによるインストールから Web 配置、アクセスまでを丁寧に日本語で綴った技術情報
● Windows Azure Accelerator for Web Roles その1
● Windows Azure Accelerator for Web Roles その2
Window Azure MVP の亀渕さんによるカスタムドメインを使わない方法と Web Matrix による Web 配置に関して書かれた技術情報
● Windows Azure Accelerator for Web Roles を使おう
今回の Accelerator の仕組みが図示されているのでとてもわかりやすいです。
これらの技術情報も、あわせてぜひご参照ください。
ということで、いつもの Tip of the Week!
今回の Tip は、スタートアップタスクにおけるローカルストレージの使用方法。
技術関連のQAサイト Stackoverlofw に投稿された質問に対して Steve Marx が回答する形でサンプルコードが提供されています。詳しくは –> How to access Azure local storage from a startup task?
ということで、以上、クラウドカバー Episode 51、Web アプリケーションの配置を容易にする Windows Azure Accelerator for Web Role の紹介でした。
それでは!