Windows Azure IaaSに独自CDNを実装する

CDNはサービスとして提供されています。Windows Azureの場合は全世界にCDN拠点もありますので、そのグローバル展開の象徴ともいえます。
ですが、そもそもはスケールアウトするキャッシュですから、負荷分散を主目的とする使い方もあります。例えば、既存のライブ配信システムに同時接続数制限があったり、閲覧範囲が実は狭かったり。国内だけとか。
そういった場合には、無限のスケールアウトの出来る、Windows Azureの良さが活きてきます。

ここでは、ライブ配信の「フロント」として、Azure内部にCDN機能を実装する手順を紹介します。
使うものは、IISのApplication Request Routing (以降ARR)です。リバースプロキシー+ディスクキャッシュとして気軽に使えるものです。

http://www.iis.net/downloads/microsoft/application-request-routing

全体構成は以下になります。Cloud Services部分でインスタンスを足していけば、いくらでもスケールします。
Originは相当な数の相手が出来るでしょう(笑)。1,000インスタンスくらいは楽勝ですかね(笑)。

Origin Serverの構築

特に難しいことはないのですが、

  1. IISを有効にする
  2. IIS Media Serviceをインストールする

をします。

IISを有効にした後で、IIS Managerを起動すると、「Web Platform Installer」を利用するかと尋ねられます。
その中からインストールしますと、関連機能もまとめてインストール・有効化されますので、大変便利です。

http://technet.microsoft.com/ja-jp/library/ee729229(v=ws.10).aspx

ちなみに、Windows Server 2012以降ですと、よく使うアプリケーションは、デスクトップにショートカットを作成するか、タスクバーに「ピン止め」すると便利です。

  1. HTTPのポートを開ける。これは忘れがちなので・・・

CDNの構築

ここでは、最低限の設定だけで構築をします。

  1. IISを有効にする。
  2. Web Platform Installer をインストールする。
  3. [Application Request Routing 3.0 Beta] を選択、[Add]する。

関連モジュールが一緒に選択されますので、[I Accept]からインストール開始。

以下の画面で、インストール完了。

いったん、IIS Managerを閉じて、再度開くと、Application Request Routingが出てきます。

Sites ではなく、サーバーインスタンスを選択していることにご注目ください。

  1. Disk Cacheを有効にする。

ARRでは、HTTP/HTTPSのリクエストの結果を、ローカルのディスクに保存します。そのため、どこに保存をするかを設定します。

Application Poolのアカウントが、その場所に読み書きの権限が必要ですので、適時設定ください。

4-1) [Add Drive] を選択します。

ここでは、「C:\ARRCache」を作成、指定しています。

以上で、Disk Cacheは終わりです。

  1. Server Farmを構成

[Server Farm] というと、Web Serverなどで束ねるものと理解しがちですが、ここでのServer Farmは、フロントと、バック。つまり、CDNとOriginの組み合わせを意味します。つまり、個々のCDN上から、Originへの1:1のマッピングです。

5-1) [Create Server Farm] を選択

5-2) 名前を付けます。これはマッピングの名前という意味なので。

5-3) Farm にサーバーを追加します。自身はホスト名だけでいいのですが別のネットワークやクラウドサービスのものは、”.cloudapp.net”までを付けるのを忘れないでください。名前解決が出来ません。

下図の場合は、以下の意味となります。

  • dahatakeorigin.cloudapp.net : ライブストリーミングサーバー。Windows Azure 管理コンソールの「ダッシュボード」で、DNS で表示されているものです。

  • dahatakecdn01: 自分自身

リバースプロキシー用のURL Rewriteのルールを自動的に作ってくれます。そのまま[Yes]を選択します。

さ、これでServer Farmが出来ました。

  1. Live 配信用のスロットリング設定

Live配信の場合は、キャッシュを作成しないうちに、一度に大量のアクセスをが来る可能性があります。これでは、キャッシュとしてのCDNの意味がありません。
そのため、ユーザーからのリクエストをある程度「貯めておく」機能が有効となります。

http://www.iis.net/learn/extensions/configuring-application-request-routing-(arr)/configure-request-consolidation-feature-in-application-request-routing

6-1) Server Farm で、先ほど作成したものを選択します。その中で、[Caching]を選択します、

6-2) [Enable request consolidation] にチェックを付けて、画面右側の [Apply] を押します。

  1. HTTPのポートを開ける。これは忘れがちなので・・・

動作確認

実際にライブ配信をして、確認をしてみましょう。
Expression Encoder 4 Pro SP2 などからエンコードを。

プレイヤーは、Silverlightのサンプルを。

http://smf.codeplex.com/releases/view/88970

インスタンスの追加

IaaSの場合は、既存のクラウドサービスに「参加」するだけです。最後にポートをあけましょう。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中