NHN Cloud NHN Cloud Meetup!

TOAST CDNの紹介(TOASTサービスをのぞいてみる)

CDN(Content Delivery Network)とは?

CDN(Content Delivery Network)は、コンテンツ(画像、テキスト、メディアファイルなど)を最適化されたパスから転送できるように、世界中に分散されたサーバーで構成されたプラットフォームです。

CDNを使用しない場合、オリジン(origin)サーバーと呼ばれるコンテンツサーバーは、すべてのエンドユーザーのリクエストを処理する必要があります。オリジンサーバーは予測できないエンドユーザーのリクエストを処理する必要があるため、多くのトラフィックが流入すると、負荷を引き起こす可能性があり、障害が発生しやすくなります。また、エンドユーザーとオリジンサーバー間の品質が保証されていないネットワークからコンテンツが送信されるため、レスポンスの品質が保証されません。

CDNは、エンドユーザーとオリジンサーバー間の仲介役として機能します。

エンドユーザーからコンテンツダウンロードのリクエストは、地理的位置、ネットワークの品質などを考慮したうえで、最適なCDNエッジサーバーへと伝達されます。CDNエッジサーバーは、エンドユーザーに代わってオリジンサーバーへコンテンツのリクエストを送信し、リスポンスの内容を保存(キャッシュ)した後、エンドユーザーに送信します。以降、エッジサーバーは、キャッシュされたコンテンツがあれば、オリジンサーバーを介さずに直接エンドユーザーからのコンテンツのリクエストに応答することができます。

これにより、エンドユーザーは、最適なパスのエッジサーバーからコンテンツを速やかにダウンロードできるようになります。
また、オリジンサーバーを運営するコンテンツプロバイダは、CDNエッジサーバーを通じてエンドユーザーの要請に応答することで、トラフィックの負荷を軽減し、オリジンサーバーの可用性を向上させることができます。

  • エンドユーザー(End-User):コンテンツをリクエストするブラウザ、端末など
  • エッジサーバー(Edge server):複数の地域に分散したサーバーで、エンドユーザーからのコンテンツのリクエストを受け取り、オリジンサーバーに代わって応答するサーバー

TOAST CDNの紹介

TOASTのCDNを利用すると、簡単な設定でCDNサービスを利用することができます。またCDNサービスを管理できるAPIも提供しています。

特徴

  • コンソール/APIを通じてCDNサービスの作成と設定変更を簡単に行えます。
  • コンソール/APIを通じてキャッシュの再配布(Purge / キャッシュされたデータを再構築する操作)ができます。
  • ネットワーク転送量、HTTPステータスコード別の統計情報や、頻繁に要請された上位コンテンツなどの統計データを提供しています。

CDNサービスの作成

1)サービス地域とソースサーバー(オリジンサーバー)を入力するだけでCDNサービスを作成することができます。

  • サービス地域
    • KOREA:韓国に位置するエッジサーバーを利用してサービスします。GLOBALサービスエリアよりも利用料金が安くなります。
    • GLOBAL:全世界に位置するエッジサーバーを利用してサービスします。
  • ソースサーバー
    • コンテンツ、ストレージ、サーバーのドメインアドレス、またはIPを入力します。
    • ソースサーバーは、エッジサーバーがコンテンツをダウンロードできるようにアクセスが許可されます。アクセスが制限されている場合、エッジサーバーがオリジンサーバーのコンテンツを取得することができないため、正常にサービスが行えません。

2)[OK]ボタンをクリックして、CDNサービスを作成します。
3)約10分後、サービスの状態が緑色(サービス中)になると、CDNサービスが正常に生成された状態です。サービス作成後、提供された{random-service-name}.cdn.toastcloud.comサービスのドメインは、エンドポイントのドメインアドレスとして使用されます。

CDNの追加設定

キャッシュ設定

キャッシュ設定を使うとエッジサーバーがオリジンサーバーのコンテンツをどの程度キャッシュするか(TTL秒単位)を設定できます。基本的にエッジサーバーは、オリジンサーバーのキャッシュ設定を使用します。したがって、TOAST CDNを使用してキャッシュの設定をする場合、オリジンサーバーのキャッシュ設定は、削除する必要があります。

リファラー(referer)ヘッダのアクセス制御

リファラーヘッダのアクセス制御の設定により、許可されたウェブページから参照された場合のみCDN経由でコンテンツをリクエストをできるよう、アクセス制御が可能になっています。HTTPのリファラーリクエストヘッダは、現在リクエストされているページの前リンクのウェブページのアドレスが含まれています。リファラーヘッダを参照してアクセス許可の可否を設定でき、アクセスポリシーは、ホワイトリスト方式とブラックリスト方式を提供しています。

  • 例:リファラーヘッダがhttp://www.toast.comで始まる場合にのみアクセスを許可
    • アクセスポリシー:Whitelist
    • ^http://www\.toast\.com.*
  • 参考
    • リクエストヘッダにリファラーヘッダがない場合は、ヘッダのアクセス制御が動作しません。
    • アクセスが拒否された場合は、コンテンツの要請に403 Forbidden HTTP Statusを応答します。

キャッシュ再配布(Purge)

オリジンサーバーのコンテンツが更新されても、エッジサーバーのキャッシュされたコンテンツは、設定されたTTL時間の間は更新されません。したがって、オリジンサーバーの最新コンテンツをエンドユーザーに提供しようとする場合は、キャッシュ再配布機能を使ってエッジサーバーのキャッシュを無効にする必要があります。キャッシュ再配布はキャッシュされたデータを一掃し再構築することで、完了まで数分程度かかります。

キャッシュ再配布(Purge)は、3つのタイプを提供します。

  • 特定ファイル(ITEM):特定パスの単一ファイルのエッジサーバーのキャッシュを無効にします。
    • 例:/images/toast_logo.png
  • ワイルドカード(WILDCARD):ワイルドカード文字を使用して、マッチングされたファイルのキャッシュを無効にします。
    • 例:/images/*/toast?.png
  • 全体ファイル(ALL):エッジサーバーのすべてのキャッシュデータを無効化します。

【注意】キャッシュ再配布が完了した後は、エッジサーバーにキャッシュされたコンテンツがないため、オリジンサーバーへトラフィックが流入することがあります。
【注意】キャッシュ再配布は、リクエストタイプに応じて使用量の制限があります。

  • 特定ファイル:時間当たり60回の制限、1回にリクエストできる最大Path数:1000個限定
  • ワイルドカード:時間当たり60回の制限、1回にリクエストできる最大Path数:10個限定
  • 全体ファイル:時間当たり5回の制限

FAQ

1)キャッシュが正常に動作していることを確認したいです。

  • Response headerを参照すると、どのようなエッジサーバーを通じてキャッシュされているか確認できます。
  • Cache Missの場合
    • X-Pxヘッダから任意のエッジサーバーを通じてコンテンツを収集したか確認できます。
      • ms h0-s1708.p59-icn (h0-s1707.p59-icn), ms h0-s1707.p59-icn (origin)は、次のように解釈されます。
      • msはcache missを意味し、htはcache hitを意味します。
      • ms h0-s1708.p59-icn(h0-s1707.p59-icn)
        • h0-s1708.p59-icnはcache missが発生し、h0-s1707.p59-icnエッジサーバーにコンテンツがあるか要請します。
      • ms h0-s1707.p59-icn(origin)
        • h0-s1707.p59-icnもcache missが発生し、originからコンテンツを取得します。
    • Cache-Controlのmax-ageヘッダを見ると、キャッシュTTL(604800、単位:秒)を確認することができます。
    • Ageを見ると、キャッシュされたTTL時間が分かります。cache missのためAgeが0です。
  • Cache hitの場合
    • ht h0-s1708.p59-icn.cdngp.net
      • 上記cache missの例を見ると、すでにオリジンからコンテンツをキャッシュしているため、以降の要請からcache hitになったことが確認できます。
    • Ageヘッダを通じてキャッシュされてから31秒が経過したことが分かります。

2) {random-service-name}.cdn.toastcloud.comドメインではなく、私が所有しているドメインからサービスしたいです。

  • コンソールでCDN基本設定のドメイン別称(Domain Alias)に所有しているドメインを設定します。
  • ドメインプロバイダが提供するコンソールを通じて、{random-service-name}.cdn.toastcloud.com ドメインをCNAMEレコードに追加してください。

3)キャッシュ再配布(Purge)の進行状況が100%になりません。

  • エッジサーバーの状態によって、一部のエッジサーバーはサービスから除外される場合があります。サービスから除外されたエッジサーバーがある場合、進行状況が100%にならないことがあります。

NHN Cloud Meetup 編集部

NHN Cloudの技術ナレッジやお得なイベント情報を発信していきます
pagetop