映像制作 eラーニングのことならビズバレー
文字サイズの変更 標準 
大きい
ホーム > スタッフブログ
スタッフブログ
k.takahashi
k.taguchi
j.hashimoto
j.katou
y.hotate
m.kawai
s_inomata
m_muraoka
ビズバレーは、東京都 千代田区で活動する、映像制作、DVD、eラーニングを扱う会社です。

今回は、Cloudnを利用してオブジェクトストレージに置いた動画を、独自ドメイン・CDN経由で配信する方法を試してみましょう。

オブジェクトストレージは、単体でも簡易的な配信機能を持っていますが、高負荷なアクセスになるとスループットは低下します。独自ドメインでアクセスすることで、初めはCDNを経由せずに直接配信をしながら、負荷が高まったときURLはそのままで、CDN経由に、こっそり?切り替えることができます。

それでは試してみましょう。

オブジェクトストレージの設定
まず1つのWebサイトのかたまりに相当するバケットを作成します。相当するとは、バケット名は、実質URLのホスト名になるためです。

その時のバケット名は、完全修飾のドメイン名(FQDN)を付けます。ホスト名に相当するところに、FQDNを設定するところに違和感がありますが、そういう仕様のようです。下図の例では、obj.bizsrv.jp で、アクセスする意味になります。バケットを作成したら、動画ファイルをアップします。

20131101-1

20131101-6

次にアップした動画を選択して、動画に割り当てる権限を変更します。「個別アクセス権設定」の箇所で、Publicの項目欄の「ACP読み出し可能」にチェックをいれます。「読み出し可能」は、チェックを入れても入れなくても構いませんが、チェックを入れるとブラウザから直接オブジェクトストレージにアクセスできます。つまり、CDNを使わない場合は、チェックは必要です。

20131101-2

登録の際、オブジェクトストレージへのURLを知る必要があるため、「パブリックURLアクセス」からURLを確認します。アドレスを見るだけなので確認したら無効状態で構いません。
obj.bizsrv.jp.str.cloudn-service.com であることを確認してメモしておきます。

20131101-3

CDNの設定
つぎにCDNの管理画面に入り設定を行います。

20131101-4

オリジンサーバーホスト名に、先ほどメモした、オブジェクトストレージのURLを「オリジンサーバーホスト名」に、そして独自ドメインのFQDNを「公開URL」に設定します。そうすると、wpcなんちゃらとcname(別名)のアドレスが表示されます。アクセス経由は、下図のような感じになります。

20131101-7
DNSの設定
最後にDNSの設定を行います。公開URLに対して、CNAMEを設定します。CNAMEの値は、CDNで出力されたアドレスになります。TTLは、公開URLが有効になった段階で、3600に書き換えます。

20131101-5

確認してみる
これで設定は完了です。正しく公開URLでアクセスできるか確認してみましょう。ただしCDNのキャッシュが有効に機能するまで1時間くらいかかるようなので、すぐにアクセスしてもオリジンの方に繋がりっぱなしになるので注意してください。

CDNから配信されているか確認をするため、「応答ヘッダー」の内容を確認します。IEでは「F12 開発者ツール」を有効にして「ネットワーク」タブから「キャプチャ開始」ボタンを押して、ネットワークのキャプチャーを行います。一度目のアクセスでは、オブジェクトストレージからの配信になりますが、何度かアクセスすると、X-Cache にHITという項目が表示されます。これが表示されたらCDNから配信されています。ちなみにサポートに聞いたところ、キャッシュの有効期限は、7日間です。

20131101-8
オリジンサーバー(オブジェクトストレージ)から配信されている状態

2013111-9
CDNから配信されている状態

このように、ApacheなどのWebサーバーでなくても、オブジェクトストレージをオリジンサーバーとして、独自ドメインでCDNからの配信ができることを確認しました。ワンタイムURLなどのアクセス制限は付けることはできませんが、構成がシンプルなため一つのやり方としては有効な方法だと思います。

20131101-11
(c) copyright 2008, Blender Foundation / www.bigbuckbunny.org

今回は、ワンタイムURLを実現するやり方について見てみようと思います。ワンタイムURLとは、一般的に、アクセス可能は期限、回数によりそのURLが無効になる仕組みのことを指します。

CDN77.comのワンタイムURLは、Secure Tokenといい、アドレスを発行してから1時間、1日というような、期限を指定することができます。

URLの表記の仕方
通常、動画にアクセスするときは、次のようなアドレスになりますが、
http://ドメイン/bunny5.mp4 

Secure Token のアドレスは、?以降にパラメータが付きます。
http://ドメイン/bunny5.mp4?secure=43KZhIfufpGzFdNvg==,1379658924

このパラメータは、自身でPHPなどのプログラム言語を用いて追加します。そして、このアドレスでWebサーバーにアクセスして、適切なパラメータと判断されると指定期間で接続できるようになります。

DRMのような動画ファイルにセキュリティを埋め込む手法と比べれば弱いですが、そこまで必要ない場合は、有効なやり方です。セキュリティに対しての考え方は、どのくらいの手間とコストを掛けられるのか、また妥協できるのかがポイントになるでしょう。

設定の仕方
それでは実際に設定をしてましょう。
CDN77.comでは、PHPでのやり方が説明されています。これをそのままやってみようと思います。

20130920-1

まずCDN77.comのサイト管理から、Secure Tokenを有効にして、トークンコードを取得します。このコードがCDNのWebサーバーと、URLのパラメータで一致すれば Secure Token として動作します。外部には知られてはいけない秘密の情報ですのでむやみに公言しないように注意してください。

20130921-2

つぎに、例えば 5秒でアドレスが無効になるようにするコードは、次のようになります。


2行目のtime()で現在の時刻を取得して、そこから5をプラスすることで5秒後に無効になる表現をしています。そして4行目にトークンコードを埋め込みます。これは、MD5でハッシュ化して元のトークンコードがわからないようにして、そしてBase64でエンコードしています。

このPHPコードにアクセスすると、このようにURLが生成されます。

20130920-4

このURLをブラウザアドレスにコピペしてアクセスすると、動画が表示されます。

20130921-5

つぎに5秒経ってから、ブラウザをリロードすると、接続に失敗して動画を見ることができなくなります。これがワンタイムURLの効果です。

20130921-6

ワンタイムURLで注意するところ
一見便利のように見えますが、肝となるのが期限の設定です。あまり長すぎると意味がなくなり、短すぎるとネットワークの遅延などにより接続される前に切れる可能性があります。また、レンジリクエスト可能な動画では、どうなるでしょうか。

20130921-8

レンジリクエストは、キャッシュされていない位置に、シーク移動ができ、再生することができますが、そのときサーバーに再接続をしています。そのため、先にアドレスが無効になると、正常に動作いたしません。ある程度、余裕を持った設定が必要になります。

20130921-9
先にアドレスが無効になってしまったケース

ワンタイムURLは、正しい設定をすれば、動画ファイルに特別な設定をせずにセキュアな配信ができるようになります。ただ、メリットもあればデメリットもありますので、使いどころ次第と言っていいかもしれません。

(参考)「HTML5 Video レンジリクエストを利用したシーク移動の仕組み」
https://bizvalley.co.jp/blog/1801.html

前回、概要について書きましたので、今回は実際に設定してみようと思います。

まず、どういう配信をしたいのか、要件を決めましょう。

  • 個人でも利用できるCDNを利用する
  • 日本国内にサーバーがあること
  • 配信形態 MP4ファイルをプログレッシブで配信する
  • セキュリティはとりあえず考えない、流すだけ
CDNベンダーは、いろいろありますが、個人で利用できる所は多くないようです。探してみてよさげだった所は、イギリスのCDNベンダー CDN77.com でした。ここは、クレジットカード一つで個人でも利用でき、固定費なしの完全な従量課金です。つまり配信した流量だけ課金されます。

また14日間のお試し期間もあり、日本国内にもサーバがあるため要件を満たしています。ただし日本語の案内はないので、トラブルなど起きた時は、英語でやり取りすることになります。

20130913-01
CDN77.com

次に、MP4ファイルを格納するオリジンサーバー(配信元サーバー)を決めます。やりかたは2つあり、
  • CDNベンダー(CDN77.com)が用意するストレージを利用
  • 自前のサーバーを利用
ここでは、話を単純にするために、CDN77.com が用意するストレージを利用します。ストレージがあるロケーションは、2ヶ所あるようで、欧州と米国から選ぶことができます。また、ストレージ容量は、50Gまで無料のようです。

20130914-02

ここでは、米国を選択しました、ストレージへの接続は、FTPでファイルをアップロードします。
20130913-03

次にCDNの設定を行います。
20130914-04

SSLは使わないので、Disabledで、ストレージの種類は、CDN77のCDN Storageを使います。そしてディレクトリ名が、my_storage。

重要なのが、CNAMEの設定です。CNAMEは、ドメインの別名の設定で、CDN77が用意するドメインアドレスに対して、自分の手持ちのドメインを割り当てます。

mycdn.example.info IN CNAME 123123123.r.cdn77.net

例えば、今回の設置用に、CDN77が、123123123.r.cdn77.net というアドレスを発行したとすれば、それに対して、自分が取得したドメインで、mycdn.example.info を割り当てることができます。そうすることで、分かりやすいアドレスで接続することができます。
※example.info は説明のためのダミーアドレスです。

そして、DNSサーバーに対して、上記のようなCNAMEを割り当てます。割り当て直後はTTLの値を小さくしてすぐに設定を反映させます。そして、あとで3600にします。ここではcloudnのDNSを利用しています。

20130913-05

これで設定は完了です。実際にアクセスできるか確かめてみましょう。
MP4ファイルなので、ブラウザのchromeではブラウザ内で、そのまま動画が再生されますが、ここでは、あえてIEを使います。アドレスバーにアップした動画のURLを入力して実行すると、Windows Media Playerが立ち上がり再生されます。

20130913-6

一回目の再生では、CDNの効果はでてきません、次のアクセスあたりからキャッシュ効果がでてきます。

その確認として、IEを起動したときに、F12キーを押して、「開発者ツール」を立ち上げます。そして、「ネットワーク」タブから「キャプチャの開始」を実行します。そして、MP4の動画にアクセスして再生させます。

20130913-07

キャプチャにより、URLにMP4のアクセスがでてくると思います。そのURLをダブルクリックします。

20130913-08

そうすると、
X-Edge-Locatioin の値がTokyo,JP で日本国内から配信されていることが分かります。
そして、X-Cache が HIT していることは、キャッシュサーバーから配信されていることを意味します。
※ ちなみに、サーバーに、nginx 使っていることもわかりますね。

まだキャッシュされずに配信されるときは、X-Cacheの値は、MISSになります。近場のロケーションから配信されることは変わらないようです。

20130913-08

CDN77 の管理サイトでは、CDNのリソース別(ドメイン別)にトラフィックの従量や金額がレポートされます。どこのデータセンターから配信されたかもわかるので、結構便利だと思います。
20130913-09

今回は、シンプルなCDNの配信の仕方について説明をいたしました。CDNは、オリジンサーバーから、エッジサーバーにファイルをキャッシュして配信を行いますが、オリジンにファイルをアップしただけでは、エッジサーバーに対してデータは、コピーはされません。

エッジサーバーに対してアクセスが発生した段階で、キャッシュとしてコピーされます。これは、アクセスのないロケーションにファイルをコピーしてもサーバーリソースが無駄になるからでしょう。

次回は、CDNで、ワンタイムURLを実現するSecure Tokenについて説明したいと思います。

今回は、CDN(コンテンツデリバリーネットワーク)を、試してみようと思います。CDNは、画像や動画ファイルなど主に静的ファイルの配信を、配信元のサーバから、肩代わりしてくれるキャッシュサーバの一種で、CDNのサーバは、世界中に配置されていてクライアントPCから地理的に近いサーバに接続されます。CDNを利用することで、配信元のサーバ負荷を下げることができ、高負荷にも耐えられる環境を容易に構築することができます。

通常の場合
20120904-1

CDNを利用する場合
20120904-2

CDNで一番規模の大きなところでは、Akamai(アカマイ)が有名で企業ユースで利用されています。CDN界のガリバーといっていいでしょう。

CDNの料金プランは、どれだけのデータを配信したかという、従量課金が基本です。
(1) はじめから従量課金のもの
(2) 一定の配信量(例えば500G)まで費用固定の基本料金があり、それを超えると従量課金になるもの

流した量だけ費用がかかるという面で、水道水や電気の利用と似ているかもしれません。スマートフォンのデータ通信では、上限7Gなど制限があり、それに達すると通信規制が入りますが、CDNでは、青天井なので注意が必要です。

変わった所では、無料~定額で利用できる、CloudFlareというものもありますが、さすがに無料範囲では、ブログなどちょっとした個人サイトを高速化することがメインのようですので、用途は限定されているようです。

CDNを利用せず自前でサーバを複数台利用する場合と、CDNを利用する場合どちらが良いかはケースバイケースですが、動画のようなデータ量が大きい場合、定額で回線帯域を確保するより、CDNの従量課金の方が帯域確保に悩むことなく、安く済むケースがあるため、そのあたりの判断が肝になってきます。

なかには、YouTubeで高画質の動画をアップロードしたり、視聴できることが無料で、当たり前だと感じる方もいるかもしれませんが、自前でやろうとすると、実は結構大変なことで配信コストが重く圧し掛かってきます。YouTubeは、そのあたりのコストを全部肩代わりしてくれていると言っていいでしょう。

従量課金なので、動画の場合、同じ画質であっても低い圧縮率より、高い圧縮率が有利です。それがストレートに配信コストに跳ね返ってくるためで、綺麗だからといって、むやみに動画のビットレートを上げるより、どれだけ下げられるのか?を考えたほうがいいかもしれません。

CDNのサービスは、単純にキャッシュとして流すだけでなく、ベンダーによってさまざまなサービスがあります。1つの動画をアップロードすると、モバイル用に自動変換するものや、会員向け動画で重宝するワンタイムURL(時間が経つとURLが無効になる)ものなどあります。また海外のCDNベンダーを利用するときは、少なくとも日本国内にキャッシュサーバーがあることが望ましいです。

CDN Planetというサイトでは、さまざまなCDNを比較してしていますので、ちょっと見てみるのもいいでしょう。

20130904-3

次回は実際にCDNの設定をしてみようと思います。
動画配信でCDNを使ってみよう (設定の仕方)