Windows Azure

今週5月23、24日、マイクロソフト ユナイテッド・キングダムが開催したTechDaysの開発トラックで発表されたロードマップです。

image

ベータ

  • Extra Smallコンピュート インスタンス
  • Windows Azure VM Role

CTP

  • Windows Azure Connect
  • Windows Azure Traffic Manager
  • SQL Azure OD阿多Service(ラボ)
  • SQL Azure Reporting(人数制限のCTP)
  • SQL Azure Data Sync(ラボ)
  • AppFabric Service Bus強化(ラボ)

発表したもの

  • SQL Azure バックアップとリストア
  • SQL Azure Federation
  • SQL Azureコードネーム ”Austin”
  • AppFabric開発ツール
  • AppFabricアプリケーションマネージャ
  • AppFabric構成モデル
  • Windows Azure Platformアプライアンス
  • VM RoleがWindows Server 2003に対応
  • VM RoleがWindows Server 2008 SP2に対応
  • クラウド上でVM Roleイメージの構築
  • Java対応の改善

このスライドはとビデオは、TechDaysのサイト上からダウンロードできるようになる予定ですが、Slides for Windows Azure Developer Track on Monday 23rdから今すぐダウンロードすることもできます。

情報源

この投稿は、Windows Azure Platform Roadmap from Microsoft UK TechDays May 23rd and 24thをざっくり意訳した投稿です。

Windows Azure

TechED NA 2011の「Ten Must-Have Tools for Windows Azure」セッションで紹介されたツールを紹介します。

0. AzureWatch

Reporting009

Windows Azure

Windows Azure で、簡単にデプロイできるスケーラブルなLive Smooth Streamingソリューションを開発してきました。
詳細については、開発ガイドとソースコードを参照してください:Windows Azure Live Smooth Streaming

プロジェクト同梱物

Windows Azure Live Smooth Streamingプロジェクトは、Windows AzureにLive Smooth Streamingを簡単にデプロイできるパッケージです。

  • 配置準備が完了したVisual Studio 2010ソリューション
  • Silverlightで作成されたWebポータル
  • メディアサービス用の自動設定

ソリューションで提供しているWebポータル
cp_azlivestreaming

ソースコードのタウンロードを推奨します。
必要に応じて、ソリューションを自由にカスタマイズして、遊んでみてください。

プロジェクト概要

clip_image002_thumb

アップストリーム・サーバー(upstream.cloudapp.net)

プッシュ・パブリシング・ポイントを担う1つのインスタンスのWebロール。
別名は、インゲスト・サーバーで、取り込みサーバーの意味です。
ライブイベント中に、ビデオをプッシュするための、エンコーダに使用されるパブリッシングポイントのURLです。

重要事項:プッシュポイントを冗長化するには、異なるDNSで1つのWebロールを追加デプロイすることでできます。Azureステージング環境へデプロイしても動作します。

アップストリーム・サーバーは、スモールスケールでのストリーミング・サーバーとして使用することも可能です。この場合、プレーヤーのURLは、http://upstream.cloudapp.net/push.isml/manifest です。

ダウンストリーム・サーバー(downstream.cloudapp.net)

プル・パブリッシング・ポイントを担う複数インスタンスのWebロール。
配信用のURLです。(例えば、http://downstream.cloudapp.net/pull.isml/manifest)

IIS メディアサービス4

IISメディアサービス4は、WebロールのセットアップタスクとWeb管理APIを使用して自動インストールされます

パブリッシング・ポイント

ソリューションには、2つのパブリッシング・ポイントを含んでいます。

  • Push.isml – エンコーダーからビデオストリームを受信します。
  • Pull.isml – アップストリーム・サーバーからビデオストリームをプルします。

それぞれのismlファイルは、管理ポータルもしくはVisual Studio IDE経由で、通常のWindows Azureデプロイ過程で配置されます。

重要事項:プッシュ/プル・ポイントは、Visual Studioまたはテキストエディタでsimply editing isml(XML)ファイルで設定できます。

Silverlight プレーヤー

ソリューションは、iis.net/mediaサイトから、サンプルのSilverlightプレーヤーを使用して作成できます。
http://learn.iis.net/page.aspx/620/getting-started-with-iis-live-smooth-streaming/

 

参考情報・元情報

Windows Azure

Windows Azureアプリケーションのデバッグを通して、Azureプラットフォームでのデバッグテクニックを蓄積しました。Windows Azureのトラブルシュートの為に使用している情報の多くを共有するためのBlogシリーズを投稿する予定です。
シリーズの最初は、Azure VMにリモートデスクトップで接続し、確認することができるリソースを紹介したいと思います。

VM上のリソース

問題の解決の為に重要なことの一つは、環境全体と提供されているリソースとログファイルについて理解することです。
Cドライブは設定情報とローカルストレージを格納します。
Dドライブは、WindowsとWaAppAgentログを格納します。
Eドライブは、顧客のロールコードを格納します。

Cドライブ:ログファイル、ローカルストレージフォルダー

デバッグ(例えば、WinDBG、ツール、ダンプファイル、ログファイルなど)している間、ローカルの一時領域としてCドライブを使用できます。すべてのトラブルシューティングツールが読み込むためにC:\Scratchを作成します。

  • C:\Config サービス設定情報
    • <DeploymentID>.<RoleName>.<index>.xml
      これは、ユーザロール用メインの設定情報です。サービス設定ファイル(管理ポータルで設定を更新したり、更新を再配置など)を更新したら、複数のコピーされたXMLファイルが格納され、<index>カウンターは、新しい設定バージョンが1つ追加されます。
      • デプロイ名
      • サービス名
      • 証明書
      • ホストプロセス
      • cscfg設定と値
      • ローカルストレージフォルダー
      • InputEndpoint、InternalEndpoinとポートのマッピング
    • <GUID>.ccf
      • OSバージョン
      • クラスター名
      • デプロイID
      • VMサイズ(<ProcessorCount>を探してください)
      • ipconfig情報
  • C:Resources ローカルストレージ、ログファイル、AspNetTemp
    • ディレクトリ\<GUID>.<RoleName>.DiagnosticStore – IISログ、失敗したリクエスト(freb)ログ
    • ディレクトリ\<guid>.<role>.DiagnosticStore\Monitor\Tables – Azure 診断モニターが収集したすべての調査情報(イベントログ、ロールログ、WAD調査情報など)。table2csv.exeを使用して.tsfファイルを収集する方法は、Getting Azure Diagnostic Information from a VMを参照してください。
    • Temp\<GUID>.<RoleName>\RoleTemp – ホストプロセスログ
    • Directory\<GUID>.<RoleName>.<LocalStorage name> – サービスモデル(.csdef)で定義されている<LocalStorage>フォルダーです。

Dドライブ:Windows(%SystemDrive%、%SystemRoot%など)、エージェントログ

  • D:\Packages\GuestAgent – エージェントログ
    • このロケーションからWaAppAgent.exeが開始されます。
    • WaAppAgent.exe.log – インスタンスのスタートアップ詳細を記録するエージェントログファイル
    • WaAppAgent.<index>.log – 履歴ログファイル

Eドライブ:サービスパッケージを含む仮想ドライブ

ゲストエージェントがサービスパッケージを配置したとき、このドライブが作成されます。これは動的に生成され、落ち着くまでFドライブ、Gドライブとなります。

  • _entrypoint.txt – ホストプロセスが呼び出すエントリポイントを含むDLL
  • RoleModel.xml – <Startup>タスクと<Sites>設定エレメントを含むXMLファイルです。また、MSBuild情報とターゲット.NET Frameworkのバージョンを含みます。
  • <GUID>.csman – PackageManifestは、パッケージのすべてのファイル一覧(Visual Studioにコピー&ペーストできる形式)を記録しています。
  • \Base\x64 – サービスコードで動作するホストプロセス
  • \Approot – 顧客のコード、aspxページ、DLLなど
  • \Sitesroot\<index> – Full IISサイトの動作起点のフォルダーです。
    ロールがデプロイされたとき、\Approot から、この\Sitesroot へファイルがコピーされ、IISは、\Sitesrootから動作するように設定されます。一時的なテストの為に、ロールを変更する(web.configの変更、新しいDLLなど)場合には、ここを置き換えなければなりません。

Windows Azure

クラウド・インテグレーションチームの開発者サポートエンジニアの視点からWindows Azure情報を共有するWindows Azure – トラブルシューティング&デバッギング Blogに投稿された「Windows Azure Role Architecture」をざっくり意訳した投稿です。

簡単に自己紹介します。私の名前は、Kevin Williamsdonです。マイクロソフトのコマーシャル・テクニカル・サポートチームの配下にあるAzure開発者サポートをする為のクラウド・インテグレーション・エンジニアリングチームのエンジニアです。Azureを使用している顧客が遭遇する問題のトラブルシューティングとデバッグを担当しています。AzureのCTP版を提供し始めた日からチームに所属しており、Azure開発コミュニティから学んだことをBlogを使用して共有していきたいと思っています。

一般的によく聞かれる質問の一つが、Azureロールインスタンスを起動し実行するまでの様々なステップに関するAzureロールのアーキテクチャについてです。サービスがデプロイされた時に発生する主要なステップの概要と、Azure VM上で動作しているコアプロセッサーの概要について説明をしてみたいと思います。

arc

プロセッサーの情報

A. RDFE/FEE

RDFE / FFE は、ユーザからファブリックへの通信経路です。
RDFE (RedDog Front End)は、管理ポータルやサービス管理API(例えば、Visual StudioやAzure MMCなど)のフロントエンドとして公開されたAPIです。 ユーザからのすべてのリクエストがRDFEを通ります。
FFE (Fabric Front End) は、RDFEからファブリックコントローラーへ転送するためのレイヤーです。
すべてのリクエストはRDFEからFFEを経由して、ファブリックコントローラーへ到達します。

B. Fabric Controller

Fabric controller は、データセンターのすべてのリソースを監視し、維持する役割を担っています。
ファブリックOS上のファブリック・ホストエージェントと通信し、ゲストOSバージョン、サービスパッケージ、サービス設定、サービス状態のような情報を送信します。

C. Host Agemt

Host Agent は、Host OS上で動作し、ゲストOSのセットアップをします。ロールをgoal状態へ移行させるためにGuest Agent (WaAppAgent) と通信したり、ゲストエージェントでハートビートチェックするためにGuest Agent (WaAppAgent) と通信します。
Host Agenetが10分間ハートビートを受信しなかった場合、Host Agenetは、ゲストOSを再起動させます。

D. WaAppAgent

  • ゲストOSのファイヤーウォール、ACLs、ローカルストレージリソース、サービスパッケージ、設定、証明書などを設定します。
  • ロールが動作している配下にあるユーザアカウント用のSIDを設定します。
  • ファブリックとロール状態を通信します。
  • WaHostBootstrapperを開始し、ロールがgoal状態になったことを確認するために監視します。

E. WaHostBootstrapper

  • ロール設定を読み込み、すべての必要なタスクと設定プロセスを開始し、ロールを動作せます。
  • すべての子プロセスを監視します。
  • ロールホストプロセス上で、StatusCheckイベントを伝搬させます。

F. IISConfigurator

IISConfiguratorは、Full IIS Webロールの設定(SDK 1.2 HWCロールは動作しません)がされているときに動作します。

  • 標準的なIISサービスを開始します。
  • web configで、Rewriteモジュールを設定します。
  • サービスモデルで、<Sites>設定でAppPoolを設定します。
  • DiagnosticStore LocalStorageフォルダーを指定し、IISロギングを設定します。
  • 権限とACLsを設定します。
  • ウェブサイトは、e:\sitesroot\0 へコピーし、apppool はIISが動作している場所を指定します。

G. Startup tasks

Startup tasks はロールモデルで定義され、WaHostBootstrapperによって開始されます。
Startup tasksは、非同期でバックグラウンドで動作するように設定でき、host bootstrapperは、Startup taskを開始させ、さらに他のStratup taskを続けて開始させます。

Startup Taskは、シンプルモード(既定)で動作するように設定できます。
シンプルモードは、host bootstrapperが次のstartup taskを続ける前に、startup task の実行が終了し、終了コードSuccess(0)が返ってくるまで処理を待ちます。

H. DiagnosticsAgent/RemoteAccessAgent/RemoteFowarderAgent

これらのタスクは、SDKの一部で、ロールのサービス定義(.csdef)で定義されます。
Startup Taskが始まると、DiagnosticsAgentRemoteAccessAgent は、/blockStartup パラメータで定義された2つのStartupタスクで同時に1つしか動作しません。標準的なstartup taskは、ロールが実行している間にバックグラウンドで動作できるように、バックグラウンドstartup task で定義されています。
/blockStartup startup taskは終了するまで、WaHostBootstrapperが続きの処理を待ち続けられるようにSimple taskと定義されています。/blockStartupタスクは、初期化を終了するための決められたタスクを待ち、それが終了したら、 host bootstrapperが処理を継続できるようにします。
このように処理をする理由は、ロールプロセスを開始する前(/blockStartupタスクに対して実行します)に、diagnostics とRDPアクセスができるように設定し、host bootstrapperがスタートアップタスク(これは通常のタスクに対して実行します)が終了した後、diagnostics とRDPアクセスは動作を継続します。

I. WaWorkerHost

WaWorkerHost は、通常のWorkerロール用の標準的なホストプロセスです。
このホストプロセスは、ロールのDLL全てとOnStartやRunのようなエントリポイントをホストします。

J. WaWebHost

WaWebHost は、Hostable Web Core (HWC)に準拠したSDK1.2を使用するように設定したときの、Webロール用の通常のホストプロセスです。
サービス定義(.csdef).から<Sites>エレメントを削除することで、HWCモードをロールで有効にすることができます。このモードでは、すべてのサービスのコードとDLLをWaWebHostプロセスから動作させます。IIS (w3wp)は使用されず、IISはWaWebHost.exeの中でホストされるので、IIS ManagerにAppPoolがありません。

K. WaIISHost

WaIISHost は、Full IISを使用するWebロールのロールエントリポイント用のホストプロセスです。
このプロセスは、RoleEntryPointクラスの実行する際に最初に読み込まれるDLL(このDLLはE:\__entrypoint.txtで定義されています)で、このクラス(OnStart、Run、OnStop)からコードを実行します。幾つかのRoleEnviromentイベント(例えば、StatusCheck、Changedなど)は、このプロセスで発生するRoleEntryPointクラスで作成されます。

L. W3WP

W3WP は、ロールがFull IISを使用するように設定されているときに使用される標準的なIISワーカープロセスです。
これは、IISConfiguratorから設定されたAppPool上で動作します。幾つかのRoleEnviromentイベント(例えば、StatusCheck、Changedなど)は、このプロセスで発生するRoleEntryPointクラスで作成されます。

ワークフローのステップ

  1. 顧客が、.cspkgと.cscfgのアップロードや、ロールの停止処理、設定の変更などのようなリクエストをします。この処理は、Azure管理ポータルもしくは、Visual Studioの配置機能のようなサービス管理APIを使用するツールで処理します。このリクエストは、すべてのサブスクリプションが関連付けられたRDFEに行き、FFEへリクエストを通信します。ワークフローステップの残りは、新しいパッケージの配置やパッケージの開始のプロセスに引き継ぎます。
  2. FFEは、(アフィニティグループまたは、地理的位置のような顧客のインプットや、マシンに提供されているファブリックからのインプットを元にした)現在のマシンプールを探し、マシンプールでマスターファブリックコントローラーと通信します。
  3. fabric controller(ファブリックコントローラー)は、CPUコア上で提供されているホスト(又は新しく起動したホスト)を探します。サービスパッケージと設定をホストにコピーし、ファブリックコントローラーは、(DIPs、Ports、ゲストOSなどの設定した)パッケージをデプロイしたホストOS上のホストエージェントと通信します。
  4. The host agent は、ゲストOSを開始し、ゲストエージェント(WaAppAgent)と通信します。ホストは、ロールがゴール状態に向けて動作していることを確認するために下宇土にハードビートを送信します。
  5. WaAppAgent は、ゲストOS(ファイヤウオール、ACLs、ローカルストレージなど)を設定し、新しいXML設定ファイルをc:\Configへコピーし、WaHostBootstrapperプロセスを開始します。
  6. Full IIS Webロールの為に、WaHostBootstrapperは、IISConfiguratorを開始し、IISからWebロール用の既存のAppPoolを削除するよう指示します。
  7. WaHostBootstrapper は、E:\RoleModel.xmlから<Startup>タスクを読み込み、スタートアップタスクの実行を開始します。 WaHostBootstrapperは、すべてのSimpleスタートアップタスクが終了し、正常終了を返してくるまで待機します。
  8. Full IIS Webロールの為に、WaHostBootstrapperは、IIS AppPoolを設定するためにIISConfigurator へ指示し、E:\Sitesroot\<index>サイトを提示します。<index>は、サービスを定義する<Sites>エレメントの数字を基にした0です。
  9. WaHostBootstrapper は、ロールの種類に応じたホストサービスを開始します。
    1. Worker Role: WaWorkerHost.exe を開始します。WaHostBootstrapperはOnStart()メソッドを実行し、Run()メソッドの実行を開始したことが返ってきたら、同時にロール準備完了をマークし、ロードバランサーの管理に追加します(もしInputEndpointsが定義されている場合は)。WaHostBootsrapperは、ロール状態を巡回確認します。
    2. SDK 1.2 HWC Web Role: WaWebHost を開始します。WaHostBootstrapperOnStart()メソッドを実行し、Run()メソッドの実行を開始したことが返ってきたら、同時にロール準備完了をマークし、ロードバランサーの管理に追加します。WaWebHostは、準備のためのリクエスト(GET /do.__rd_runtime_init__)を発生させます。 すべてのwebリクエストは、WaWebHost.exeに送信されます。WaHostBootsrapperは、ロール状態を巡回確認します。
    3. Full IIS Web Role: WaIISHost を開始します。WaHostBootstrapperが、OnStart() メソッドを実行し、 Run()メソッドの実行を開始したことが返ってきたら、同時にロール準備完了をマークし、ロードバランサーの管理に追加します。WaHostBootsrapperは、ロール状態を巡回確認します。
  10. Full IIS Webロールへのウェブリクエスト要求が来ると、W3WPプロセスを開始するためのトリガーとなり、業務用のIIS環境で動作させた時と同じようにリクエストを処理します。

ログファイルの場所

WaAppAgent

  • D:\Packages\GuestAgent\WaAppAgent.exe.log
  • D:\Packages\GuestAgent\WaAppAgent.log

WaHostBootstrapper

  • C:\Resources\Temp\<guid>.<role>\RoleTemp\WaHostBootstrapper.log

WaWebHost

  • C:\Resources\Temp\<guid>.<role>\RoleTemp\WaWebHost.log

WaIISHost

  • C:\Resources\Temp\<guid>.<role>\RoleTemp\WaIISHost.log

IISConfigurator

  • C:\Resources\Temp\<guid>.<role>\RoleTemp\IISConfigurator.log

IIS Logs

  • C:\Resources\Directory\<guid>.<role>.DiagnosticStore\LogFiles\W3SVC1

Windows Event Logs

  • D:\Windows\System32\Winevt\Logs