オリジンサーバーとは? オリジンサーバーを保護するCDNの機能について

2022.03.24

J-Stream CDNext

アクセス集中対策

CDN

CDN(content delivery network)の導入を検討していると、現在Webサイトを公開するために利用しているサーバーはオリジンサーバーと呼ばれるようになります。CDNはオリジンサーバーをアクセス負荷から保護するために、元々の仕組み以外にも様々な機能を兼ね備えています。

1. オリジンサーバーとは? CDNとの関係

オリジンサーバーの「オリジン(Origin)」は「起源、発端」といった意味の言葉で、「オリジンサーバー」は配信したいコンテンツが実際に格納されているWebサーバーのことを指します。

オリジンサーバーの説明図

CDNはオリジンサーバーからコンテンツをキャッシュし、クライアント(コンテンツにアクセスする端末など)に対してオリジンサーバーに成り代わってコンテンツの配信を行います。CDNが持っているのはオリジナルのコンテンツではなくキャッシュコンテンツなので、それに対してオリジナルのコンテンツが存在するサーバーという意味でオリジンサーバーと呼ばれます。
つまりオリジンサーバーとはCDNとの関係性によって表される呼称であり、現在利用しているWebサーバーのことを大概の場合は指しています。CDNの利用を検討するからといって、「オリジンサーバー」というものを新たに用意する必要は必ずしもありません。

CDN事業者によってはオリジンサーバーを提供している場合があります。
Jストリームが提供するCDNサービス「J-Stream CDNext」でもオプションとして提供を行っています。これは例えば配信するコンテンツをこれから制作する場合、キャンペーンページを始めとした一定期間で配信が終了するコンテンツを格納する場合などに利用例が顕著です。
またJストリームが展開する動画配信サービスにおいて、1日~数日で終了するイベント配信のために、動画公開用Webページを格納するWebサーバーが必要となり、アクセス負荷対策の意味も兼ねてこれを提供する場合もあります。

2. CDNはオリジンサーバーを保護して配信を最適化させるソリューション

前述の通り、CDNはオリジンサーバーに成り代わってクライアントに対してコンテンツの配信を行います。クライアントからリクエストがあった場合は、オリジンサーバーに直接アクセスさせるのではなく、CDNを経由させるようDNSにて指定を行います。リクエストを受け取ったCDNは、オリジンサーバーからキャッシュしたコンテンツをレスポンスします。これにより、オリジンサーバーの稼働を抑えることが出来ます。

CDNは配信すべきコンテンツをキャッシュするためにオリジンサーバーに対してコンテンツのリクエストを行いますが、一般のクライアントからのリクエストのボリュームに比べれば規模は小さいでしょう。
またオリジンサーバー側でコンテンツの更新を行わない限りは、一度キャッシュしたコンテンツをオリジンサーバーから再取得せずに配信し続けることができるので、オリジンサーバーにかかる負荷の差は歴然です。

CDNは大容量コンテンツのインターネット上での安定配信、大量アクセス集中の負荷分散のためなどに用いるものです。大量配信に耐えうるように、サーバーや配信拠点を冗長化させたり、配信負荷を拠点ごとに割り振る仕組みを導入したりして設計されています。オリジンサーバーに対してクライアントに直接アクセスさせてしまうと、レスポンスの遅延が起こったり、サーバーがダウンして応答不能な状態に陥ったりしてしまう懸念がある場合の対策に効果的です。

CDNは画像や音楽、映像の利用などによるデジタルコンテンツのリッチ化、また大手のポータルサイトや広告、テレビなど他メディアから短時間かつ集中的に流入するアクセス負荷への対策として近年普及が進んでいます。CDNの利用は、オリジンサーバーを保護することでインターネット上でのコンテンツ配信を最適化する取組として有効な選択肢の一つとなります。

関連記事

3. オリジンサーバー保護のためのJ-Stream CDNext機能

CDNは元々の利用目的として、オリジンサーバーを保護することによる配信の最適化を掲げるソリューションでした。「J-Stream CDNext」も前述のような課題を解消するために様々なWebサイトの配信を行っています。
加えて「J-Stream CDNext」は、その配信キャパシティ自体以外にもオリジンサーバーを保護するための機能を兼ね備えています。配信するWebサイトの仕様に合わせて設定を行うことにより、更に可用性を高めることが可能です。

オリジンサーバーの冗長構成への対応

CDNを利用する際、オリジンサーバーは一台のWebサーバーである必要はありません。元々冗長化のためにオリジンサーバーを複数台で運用しているWebサイトでも利用できます。
「J-Stream CDNext」では、各オリジンサーバーのIPアドレスやFQDNをリスト化して登録することが可能です。またその際の挙動としては、オリジンサーバーAとBに2:1の割合でアクセスを振り分けるなどの重みづけをしたラウンドロビン設定や、オリジンサーバーAのダウンを検知した場合にはBへ迂回させるといったアクティブ/スタンバイ構成での設定ができます。

フェッチロック

オリジンサーバーの稼働を抑え、CDNからコンテンツを配信するためには、CDNがオリジンサーバーからコンテンツをキャッシュ済みである必要があります。「J-Stream CDNext」はあえてプリフェッチ(予めオリジンサーバーからコンテンツをキャッシュしておくこと)の操作をしない限り、クライアントからのリクエストを受けて初めて、該当コンテンツをオリジンサーバーに対してリクエストして、オリジンサーバーからレスポンスされたコンテンツをキャッシュします。

例えばある時刻に公開されて一斉にアクセスを集めるようなWebサイトをCDNから配信する場合、CDN側でキャッシュコンテンツを保持する前に大量のリクエストを受けてしまうことが考えられます。その時CDNは自力でコンテンツの配信ができる状態ではないので、クライアントからの大量のリクエストをオリジンサーバーまで到達させてしまいます。そうするとオリジンサーバーはCDNを利用している恩恵を受けられないことになります。

そのような状態に陥ることを防ぐためにフェッチロック機能の利用が有効です。当機能を利用することで、最初のユーザーのリクエストはオリジンサーバーまで到達させておいて、二人目以降のユーザーからのリクエストを数秒間待機させておけるようになります。
待機させている間に最初のユーザーのリクエストをきっかけにして「J-Stream CDNext」はコンテンツをキャッシュし、二人目以降のユーザーにはキャッシュコンテンツを配信するという仕組みです。数秒程度の待機時間は発生してしまいますが、オリジンサーバーがアクセス負荷の影響を受けてしまうことと比較すれば有効な機能として検討できるでしょう。

■最初のクライアントからのリクエストへの応答
最初のクライアントからのリクエストへの応答の説明図
■CDNがキャッシュした後の応答
CDNがキャッシュした後の応答の説明図

RangeCache(レンジキャッシュ)

RangeCache機能は一つのコンテンツを部分的にキャッシュすることが出来る機能です。ファイルサイズが大きなコンテンツに対して当機能を利用することで、例えば0~10MB部分のキャッシュと、11~20MB部分のキャッシュのように、ファイルを分割してキャッシュすることが出来るようになります。
この機能を利用せずにファイルサイズが大きなコンテンツを配信する場合、大きなファイル全体をCDNがオリジンサーバーからキャッシュすることになるので、オリジンサーバーの配信負荷も比較的大きくなります。

Varyキャッシュ正規化

Varyはリクエストしてきたクライアントに対して、特定の条件によってレスポンスする内容が変わる場合があることを示すHTTPヘッダです。オリジンサーバーが「Vary: User-Agent」ヘッダを応答する時、User-Agentによって配信されるコンテンツが変わる場合があることを示します。例えばPC用ページとスマートフォン用ページを用意しているWebサイトで用いられます。

CDNextはオリジンサーバーから「Vary: User-Agent」を応答された時、クライアントのUser-Agentごとにキャッシュコンテンツを分けて保持することができるので、サーバー側でレスポンシブデザインの制御をするWebサイトにおいても利用することが出来ます。

ただしUser-Agentはクライアントによってたくさんの種類があるので、その種類ごとにキャッシュを保持することは配信効率の低下、更にオリジンサーバーへの負荷増加に繋がります。当機能ではUser-Agentを大まかにパターン化させ、そのパターンごとにキャッシュを持つことが出来るようになっています。そうすることでCDNは例えば「iPhone」や「iPad」などの大まかなパターンの数だけキャッシュを保持すれば良いので、配信の効率化が期待できます。

キャッシュサーバーのグループ化

前述の通り、CDNは冗長化された配信サーバー(キャッシュサーバー)などによって構成されています。キャッシュサーバーの数が多ければ多いほどCDNとしての配信能力は高いことになります。ただしキャッシュサーバーの数があまり多いと、各キャッシュサーバーからのリクエストによってオリジンサーバーへ負荷をかけてしまう恐れがあります。

「J-Stream CDNext」はキャッシュサーバーをグループ構成にしており、各グループの代表のキャッシュサーバーのみがオリジンサーバーへリクエストを行うようになっています。オリジンサーバーからレスポンスされた内容をグループ内で共有することで、なるべくオリジンサーバーへ負荷をかけないような設計がなされています。

キャッシュサーバーのグループ化の説明図

4. 万一オリジンサーバーがダウンしてしまった場合

十分な対策を施していても、予期せぬアクシデントでオリジンサーバーがダウンしてしまう場合があります。CDNを利用していれば、オリジンサーバーがダウンしてもコンテンツの配信を継続させたり、クライアントに対して注意メッセージを配信したりすることが可能です。

TTL超過利用許可

TTL(Time To Live)とは、CDNにおいては、CDNがキャッシュを保持し続けている期間のことを指します。
「J-Stream CDNext」では5分間が初期値です。「J-Stream CDNext」はオリジンサーバーからコンテンツのキャッシュを受け取ると、5分間はそのキャッシュを配信し続けます。5分が経過すると、オリジンサーバーに対して、該当のコンテンツが更新されていないか、確認のリクエストを行います。更新されていた場合は新たに更新後のコンテンツをキャッシュし、されていない場合はこれまで保持していたキャッシュコンテンツを改めて5分間保持し続けるという動作をします。

「J-Stream CDNext」では、この5分間が経過した後の更新確認の際、オリジンサーバーが応答出来ない状態になっていた時に、「J-Stream CDNext」がこれまで保持していたキャッシュコンテンツの配信を継続することが出来る機能を用意しています。
この時配信するコンテンツはTTLが既に超過している古いキャッシュコンテンツで、オリジンサーバー側では該当コンテンツの更新がなされている可能性があります。それでも配信の継続を優先する場合、TTLを超過したキャッシュコンテンツの利用を許可することで、クライアントに対して通常通りコンテンツのレスポンスを行うことが出来るようになります。配信するコンテンツの性質や更新頻度などによって当機能の利用方法を検討することが望ましいでしょう。

TTL超過利用許可の説明図

エラーページ、Sorryページ指定

オリジンサーバーのエラーによりコンテンツの配信が出来ない状態になっている時、HTTPステータスコードのエラーコードを示す画面だけを表示させていると、クライアントへ不信感や不安感を抱かせてしまう場合もあるでしょう。配信の継続が出来なかったとしても、「現在込み合っているため少々お待ちください」といったような案内ページが配信出来ればその懸念も軽減されます。

「J-Stream CDNext」では、そのような際に配信するSorryページを設定しておくことが出来ます。Sorryページを格納したオリジンサーバーを、普段のコンテンツ配信に利用するオリジンサーバーとは別に用意しておいて、必要な際に利用します。
また、これはHTTPステータスコードごとに設定が可能です。例えばHTTPステータス503エラーの時に配信するページと、504エラーの時に配信するページを分けることが出来ます。これにより更にクライアントに対して親切なWebサイト設計が可能になるでしょう。

以上、オリジンサーバーとは?に加え、オリジンサーバーの稼働を保護するCDNの仕組みや機能について解説しました。
Jストリームでは自社でCDNサービスを構築、運用、導入支援している経験から、対象のWebサイトとCDNの利用目的に対して最適な提案を行います。お気軽にご相談ください。

サービス詳細

関連する記事一覧

Jストリームの
ソリューションに
興味をお持ちの方は
お気軽に
お問い合わせください。

登録無料!

Jストリームのサービスを活用した成功事例や、お客さまの課題解決につながるお役立ち情報などをメールでお届けしています。

メールマガジン登録