Windows Azure Traffic Manager ~ クラウドカバー Episode 46
久々に Steve と Wade の2人がそろったクラウドカバー。
46回目となる今回は、4月の Mix 11 で発表、プレビュー版(CTP)の公開が開始された Traffic Manager のお話です。
では、今回もニュースから。
◆ Getting Started with the Windows Azure Toolkit for iOS
Windows Azure を使った iPhone アプリを作成するためのツールキットです。
Windows Azure のストレージサービスに対してアクセスするための Objective-C のライブラリで構成されています。また、すぐに試せるように Windows Azure でホストするアプリケーションのパッケージデータも含まれています。
ライセンス的には Apache ライセンス ver.2.0 で、github からダウンロードいただけます。
ちなみに Andoroid 用のツールキットにリリースについてもすでにアナウンスされており、リリースの準備中(6月を予定)とのこと。
◆ Updates Coming Soon to the Windows Azure Toolkit for Windows Phone 7
Windows Phone 7 のツールキットに関してのアップデートのニュース。
Windows Phone 7 アプリケーションの開発においては、現在 ASP.NET のメンバーシップサービスを使った認証基盤を提供していますが、新しいツールキットでは、ACS を使った認証を使用できるようになります。詳しくは Captain Identity こと Vittorio の Blog エントリを参照ください。
その他、Azure キューを使用するためのライブラリが追加されます。
◆ Using Windows Azure for Windows Phone 7 Push Notification Support
Mix 11 にて発表のあった Push Notification Service の使用に関する Blog エントリの紹介です。
クラウド上のデータ変更などのイベントに基づき、Windows Phone 7 端末に対して通知を行うことが可能になります。
◆ SQL Azure Diagnostics Tool Available
SQL Azure の診断ツール(Diagnostics Tool)の紹介です。このツールはマイクロソフトのサポートチームにて作成されたもので、SQL Azure の使用データをもとに、CPU使用時間が長かったクエリ、実行時間が長かったクエリ、および論理I/Oと物理I/Oの多かったものをレポートしてくれます。
ツール自体は ClickOnce で配布されており、簡単にインストール可能で、インストール後は DB 情報を入力するだけで、レポートをすぐに作成してくれます。5分もあれば試せるツールですので、ぜひお試しください。
また詳しい説明は、CSS SQL Azure Diagnostics tool released のエントリを参照ください。
◆ Store Encrypted Data in Windows Azure
今週のニュース、最後の話題は Windows Azure におけるデータ暗号化の話です。
企業の重要なデータを保存する先としてクラウドを利用する場合、どのようにデータのセキュリティを確保するかが問題になります。このエントリでは、パートナー3社において、クラウド上のデータを保護するためにどのような手段をとったのかを紹介しています。
ちなみに、、、この暗号化に関する Blog エントリ自体は英語ですが、右側の翻訳機能を使用すると Microsoft Translator を利用して各国語(むろん日本語も)に翻訳することが可能です。機械翻訳なので、わかりづらい点もありますが、そんな時には翻訳個所にマウスを合わせれば原文も表示されますので、ざっくりした内容把握をする際にぜひご利用ください♪
※簡単な使い方紹介。
右側の ウィジェットの翻訳ボタンを押してください。
ページの翻訳が開始されます。30数カ国語に対応しているようです。
翻訳がわかりづらいな、と思った時には、その文章にマウスを置けば原文を確認できます。便利!
さらに、翻訳の修正案を提案することもできます。
翻訳の修正案は、ソーシャルな感じで他の人も確認、評価することができるようです。他の人がすでに適切な翻訳を入力していた場合は感謝しながら使わせていただきましょう
以上で今週のニュースは終了です。
いよいよ本題、Traffic Manager の紹介。
Traffic Manager はデータセンターを跨いだリクエスト分散ができるサービスです。まさに PaaS 的サービス!
これまで DNS の付加サービスや、独自のロードバランスの仕組みによって実現してきた様々なリクエスト分散の仕組みを、Traffic Manager によってシンプルに実現することができるようになります。
ということで、さっそく Wade によるデモ。今回は3か所(米国、ヨーロッパ、アジア)のデータセンターにインスタンスを置いています。
わかりやすいように、各データセンターで色を変えています。
オレンジがヨーロッパデータセンター。
最後にライムグリーンが、アジアデータセンターという具合です。
それぞれのアプリケーションは異なる URL を持っています。(例えば https://gtmworldapp[地域名].cloudapp.net )
さて、これらの3つのDCのアプリケーションに対して Traffic Manager の機能を使用していきます。
とその前に、、、、Traffice Manager は現在ベータ公開中。申し込みは Windows Azure ポータルから行えます。
Windows Azure ポータルにログインしたら、左側の Home メニューを選択し、その上部に表示されたメニューの中から ”Beta Programs” を選択、いくつかあるベータプログラムのうち Traffic Manager の項目で申し込みを行ってください。(以下の画面ショットのような手順になります。なお、この画面ショットでは、すでに Traffic Manager の申し込みと受理が終了しているため、申し込み用のチェックボックスは表示されていません。)
Traffic Manager のベータ利用に関しては、毎週水曜日にリクエストの処理が行われているそうです。
では、いよいよ Traffic Manager の使用です。
Windows Azure ポータルの左下にある “Virtual Network” の項目をクリックすると、Traffic Manager の設定画面が表示されます。
Traffic Manager の設定ではいくつかの項目を設定することになりますが、最も重要なのはルーティングポリシーの設定です。
現在利用できるポリシー(Balancing Method)は3つ。
(1) Performance
ユーザーリクエストを、ネットワーク的に最も高速にアクセスできるデータセンターのサービスに転送します。
アジアからアクセスするユーザーに対してはアジアのデータセンターに、ヨーロッパからアクセスするユーザーに対してはヨーロッパのデータセンターにリクエストを転送する、といった感じになります。
(2) Failover
データセンターのサービスに優先度をつけておき、優先度の高いサービスを優先してユーザーリクエストを転送します。優先度の高いデータセンターのサービスが使用できない場合は、次の優先度のサービスに転送します。
例えば、メインのサービスで異常があった際に、「サービスが休止しています」といったメッセージを表示するサービスを別に用意しておき、そちらにユーザーリクエストを転送する、といった使用も可能です。
(3) Round Robin
サービスに対して、ユーザーのリクエストを平等に分散します。
通常のロードバランスとしても使用できますが、例えば A/B テストのように、複数の Web デザインを用意しておき、ユーザーリクエストを平等に分配、用意しておいた Web デザインによってユーザーのクリック率や購買率がどのように変化するかを検証する、といった用途にも使用できます。
現状、以上の3つのポリシーがありますが、ここでは最初に Performance を使いながら Traffic Manager を紹介します。
まずは設定画面で、先ほどの3つのデータセンターに配置したサービスを選択し、それらを束ねる DNS 名称を付けます。
現在プレビューとして公開中の Traffic Manager では、この名称としてかならず “ctp.trafficmgr.com” を使用する形でしか設定できないようになっています。
もしカスタムドメインを使用したい場合は自身で設定した名称(例えば hogehoge.ctp.trafficmgr.com) に対して、カスタムドメインの CNAME 設定(shop.example.com といったカスタムドメインで用意した名称を hogehoge.ctp.trafficmgr.com に変換する設定)を行ってください。
次の設定は、DNS のキャッシュの設定です。デフォルトでは 300秒となっています。デモ等ではより短く(今回は 30秒にしているようです)することも可能です。DNS のキャッシュ期間が短いほど新鮮な DNS 情報を利用できますが、反面 DNS の問い合わせが増えるため、サービスの性質によって設定する必要があります。
最後の設定はモニタリング用のパスです。
各サービスにおいて、モニタリング用のエンドポイントを用意しておくことで、Traffic Manager はサービスの稼働状況を把握し、ユーザーリクエストのルーティングを適切に行うことができるようになります。
ということで、実際に稼働している Traffic Manager を使ってユーザーリクエストがどのように分散されるかを確認しましょう。
今回、データセンターとしては3か所利用していますが、Steve や Wade がいるのは米国です。アジア、あるいはヨーロッパからのアクセスに対して、Performance のルーティングポリシーが正しく動作しているかどうかのテストを行うために、今回利用したのは Windows Azure の Remote Desktop 接続。
アジアのデータセンターにある Windows Azure インスタンスに Remote Desktop 接続を行います。
Remote Desktop 接続したインスタンスから、今回のアプリケーションにアクセスすると、、、、見事にライムグリーン(=アジアのデータセンターでホストされているサービス)の画面が。
引き続きヨーロッパのデータセンターにある Windows Azure のインスタンスに Remote Desktop で接続し、同じ URL でアクセスすると、、、、こちらも見事にオレンジ(ヨーロッパのデータセンターでホストされているサービス)の画面が。
引き続き、コードを使った説明。
今回のコードは Windows Azure のトレーニングキットに含まれているコードと同じです。
アプリケーション全体としてはシンプルな作りなので、今回はアプリケーションの稼働状況確認に関する部分のコードを解説。
Traffic Manager では各データセンター上のアプリケーションに稼働状況確認のためのサービスを用意させ、監視していますが、テストを行いやすくするように、各アプリケーションに仮想的に「ダウンしています」と報告するようなロジックを用意しています。以下がその部分のコード。
Windows Azure のストレージにある情報を確認し、その情報が「ダウンしています」と報告せよ、という値であれば Response.Close() を行うようなコードになっています。Response.Close() は、ユーザーからのリクエストに対してコネクション自体を切断するメソッドで、今回のサンプルコードでは、これによりいわゆる HTTP のステータスコードを返すわけでもなく、サーバーがダウンしている状態を模擬的に作ることができます。
今回のサンプルでは、このロジックにおいて確認している Windows Azure ストレージの値を、Web の画面から変更できます。以下がその部分。各データセンターの情報にある “Disable” という部分をクリックすることで、 Widows Azure ストレージにおいて、該当データセンターのサービスが「ダウンしている」と報告するような値が書き込まれます。
ということで、つぎは Failover のポリシーを使いながらの解説。最初に https://failover.gtm.ctp.trafficmger.com にアクセス。米国データセンターからのレスポンス(青色の画面)が戻ってきます。
ではここで、米国データセンターのサービスを Disable に。
ちなみに今回はこの Failover ポリシーの設定においては、米国 –> アジア –> ヨーロッパ、の順にルーティングされるように設定しています。
DNS のキャッシュ等の有効期間があったりするので、しばらく待ちます、、、、
120秒くらいまったあたりで、再度先ほどの URL https://failover.gtm.ctp.trafficmger.com にアクセス。米国データセンターが「ダウンしている」という状態にセットされているため、Traffic Manager が米国のデータセンターの次に高い優先度を設定されているアジアのデータセンターにリクエストをルーティング。Steve お気に入りのライムグリーンの画面(アジアデータセンターからのレスポンス)が戻ってきます。
さらに、Round Robin のポリシーを使っている Traffic Manager の URL にアクセスすると、オレンジと、ライムグリーンの画面が順番に表示されます。Cloud Cover のデモでは DNS のキャッシュの影響があったため、新しくIEを立ち上げてこの動作を確認しています。
最後に恒例の Tip of the week ♪
Traffic Manager を使ったサービスサイトのテストにおいては、ルーティングが期待通りに行われない場合があります。具体的には IE 、あるいはプロキシーサーバーにおける DNS キャッシュの有効期間、Traffic Manager における稼働状況確認のタイムラグ、といった要素によって、ルーティングが期待通りに動作しないケースです。テストの際にはそれらの影響を考慮する必要がありますので、注意してください。
また、IEにおいて設定ですが、キャッシュ有効期間のレジストリ書き換え用情報が用意されています(リストア用の情報も用意されています)ので、テストの際などにご利用ください。
ということで、Cloud Cover Episode 46 - Windows Azure Traffic Manager の紹介でした。
現在 Traffic Manager はプレビュー公開中であり、無償で利用いただくことが可能です。ぜひこの機会にベータ申し込みを行って、お試しください!
では、Enjoy Cloud Computing!