オリジンサーバーダウン、それでも配信を継続させるためにCDNが出来ること

2023.03.22

J-Stream CDNext

CDN

CDNext紹介

CDNはオリジンサーバーの負荷を軽減させ、快適な配信環境を提供するサービスです。しかし配信による負荷以外の理由でサーバーダウンが発生してしまう場合もあるので、そうなるとCDNはコンテンツをキャッシュしに行く場所を失ってしまいます。配信の継続のためにCDNによって実現できることを、Jストリームが提供するCDNサービス「J-Stream CDNext」の機能を交えながら紹介します。

1. CDNはオリジンサーバーへファイルをキャッシュしにアクセスする

CDNは配信するファイルをキャッシュするために、エンドユーザーに代わってオリジンサーバーへアクセスします。

この時取得したキャッシュファイルは、CDNの管理機能などによって決められたTTLの秒数分はCDNのキャッシュサーバーで保持され、エンドユーザーへの配信に使われます。

TTLが切れると、CDNは再度オリジンサーバーへアクセスし、対象のファイルがオリジンサーバー側で更新されていないか確認します。このサイクルで、CDNはTTLによって決められた期間でキャッシュファイルの鮮度を保っています。

このサイクルの途中で、オリジンサーバーがダウンしてしまった場合、CDNはコンテンツをキャッシュしたり、更新したりすることができなくなってしまい、Webページの配信も停止してしまいます。このような時、CDNには何ができるでしょう?

Jストリームが提供するCDNサービス「J-Stream CDNext」の場合

  • オリジンサーバーを複数用意しておく
  • シングルオリジンで配信を継続させる

といった対応が可能です。それぞれ解説していきます。

2. オリジンサーバーを複数用意しておく

CDNextはオリジンサーバーを複数台登録して、マルチオリジン化させておくことができます。これにより、たとえばオリジンサーバー1号機がダウンしても、2号機が代わりに反応するような動きをさせることが可能です。マルチオリジン化させた場合の挙動についてはいくつかのパターンがあり、明示的に設定することが可能です。

オリジンサーバーをリスト形式で登録することが可能

ウェイトをつけてAct-Act構成にする/ラウンドロビンさせる

オリジンサーバーを複数台登録した場合、CDNextはどのオリジンサーバーへファイルをキャッシュしに行くでしょうか。CDNextでは各オリジンサーバーにウェイトを設定することで、キャッシュサーバーから受け付けるアクセスに重みをつけた状態で、複数のオリジンサーバーを運用することができます。
例えばオリジンサーバー1号機に「8」、2号機に「2」というウェイトを設定した場合、そのウェイトの通り、その数字の割合に従って、キャッシュサーバーは各オリジンサーバーへアクセスしに行きます。両方に同じ数字を設定した際には、同じ割合でラウンドロビンのように運用することが可能です。

ウェイトの設定。同じ数字を入れるとラウンドロビンになる。

Act-Stb構成にする

例えば2台登録したオリジンサーバーの内の片方を明示的にスタンバイ機として設定しておくことができます。これにより、メイン機が接続エラーかタイムアウトを起こしてしまった場合、スタンバイ機がCDNextのキャッシュサーバーからのアクセスに応答します。

500系エラーでフェールオーバーさせる

上記に加えて、HTTPステータスコード500系のエラーが発生してしまった場合にも、バックアップ機にフェールオーバーさせることが可能です。標準の状態ではオリジンサーバーからの接続エラーかタイムアウトをきっかけにフェールオーバーしますが、明示的にステータスコード500の場合、502の場合、503の場合など、コードごとにフェールオーバーをさせるか否かを設定することができます。

フェールオーバー条件指定。postとpatchメソッドは、フェールオーバー前後で多重送信になってしまうことを防ぐため、フェールオーバーの条件に含むか否かを設定することができる。

Sorryページ配信用のオリジンサーバーを用意しておく

あえて配信の継続はさせず、オリジンサーバーの不調によりWebサイトが表示できないことを伝える「Sorryページ」をエンドユーザーに配信することも選択肢の一つになります。特に工夫をしなければ単なるエラー画面が表示されるだけですが、「ただいま混み合っていますので少々お待ちください」などの案内があるだけで、比較して親切な対応となるでしょう。
CDNextにはオリジンサーバー不調時に、Sorryページを配信するためのオリジンサーバーを別途登録しておく機能があります。

単なるエラーページとSorryページの例
Sorryページを用意しておけば、単純なエラー画面よりも状況を丁寧に伝えられる。

3. シングルオリジンで配信を継続させる

先に述べたように、オリジンサーバーを複数台用意しておけば単純に冗長化構成を取ることが可能ですが、その手配が難しい場合はどのような対策が考えられるでしょう。CDNextではオリジンサーバーが1台のシングル構成の場合でも、配信を継続させるための機能を備えています。

TTLの超過利用を許可する

CDNextはオリジンサーバーからファイルをキャッシュした後、あらかじめ設定されているTTLの秒数分は、そのファイルを最新のファイルとしてエンドユーザーに配信します。例えばTTLを300秒に設定していた場合、CDNextは300秒間の間、キャッシュしたファイルを配信し、300秒が経過したら、改めてオリジンサーバーへファイルが更新されていないか、現在キャッシュしているファイルが最新の状態のままか、確認のアクセスを行います。

その時オリジンサーバーがダウンしていると、通常の場合であればCDNextはファイルをキャッシュしに行く場所を失ってしまい、エンドユーザーにファイルを配信することができなくなってしまいます。この時利用できるのが、TTLの超過利用を許可する機能です。

TTL超過利用までの流れ。
オリジンサーバーの不調を検知したら、現在持っているキャッシュファイルを配信する。

CDNextがオリジンサーバーの不調を検知した時、まだキャッシュサーバーにはTTLが切れてしまったファイルが残ったままです。オリジンサーバーと通信が出来なかったので、このファイルが最新版であるかという確認は取れていません。しかし配信がストップしてしまうよりは、古いかも知れないキャッシュファイルを用いた配信を継続できた方が良いという判断が出来る場合、この機能の利用を採用することができます。

CDNextはオリジンサーバーが復調するまでの間、既に持っているキャッシュファイルを配信し続けます。TTLが300秒の場合であれば、再度300秒経ったらまたオリジンサーバーへアクセスし、まだ復調していなければ更に300秒間、持っているキャッシュファイルを配信します。これを繰り返すことで、エンドユーザーにはサーバーの問題を感じさせず、配信を継続させることが可能です。

オリジンサーバーの様子を聞く前に配信してしまう

TTLの超過利用を許可する機能は、オリジンサーバーの不調を感知したことをきっかけに発動します。これに対して、CDNextがオリジンサーバーに行う、キャッシュファイルの更新確認アクセスの結果を待たず、今持っているキャッシュファイルを配信してしまうという機能もあります。
これはオリジンサーバーの状態に関わらず、キャッシュファイルの更新確認よりも、TTLが切れていようがキャッシュファイルを持っているのであればそちらを配信してしまうことを優先するという機能です。オリジンサーバーの状態に問題が無ければ、キャッシュファイルの更新は併行して行われます。これは通常、オリジンサーバーが不調な時に一時的に利用することを推奨する機能です。

4. 用途に合わせて適切な設定を

CDNextは様々なケースに合わせてオリジンサーバーをケアしたり、配信を継続させたりする機能を用意しています。エンドユーザーに対する配信の継続を重視するのであれば、マルチオリジン化し、オリジンサーバーのフェールオーバー機能を利用しつつ、TTLの超過利用を許可する設定をONにしておくのが最も安全でしょう。この時は、メインのオリジンサーバーの不調をCDNextが検知した際にバックアップのオリジンサーバーへフェールオーバーし、仮にバックアップのオリジンサーバーにも不調が見られた場合には、TTLが切れたキャッシュファイルを、メインのオリジンサーバーが復調するまで配信し続けることになります。エンドユーザーには、オリジンサーバーが2台もダウンしたとは思われないでしょう。

対して、更新頻度が高いWebサイトでは、あまりTTL切れのコンテンツを長く配信し続けることは推奨されないでしょう。古い情報を配信し続けることによって、エンドユーザーに誤った情報を伝えてしまう可能性があります。このような時はSorryページによって正直にサーバーの不調を伝えつつも、単にエラー表示を見せてしまうのではなく、配慮を込めた案内をするという対応も考えられます。

以上、オリジンサーバーのダウン時、不調時にリカバリが出来るCDNextの機能について紹介しました。
Jストリームではエンジニアが直接サービスのご案内や設定作業を行いながら、配信するコンテンツの性質も考慮した上で、最適な設定をご提案します。Webサイトを最大限健全な状態に保つために、最善な機能のご利用をご案内いたします。まずはお気軽にご相談下さい。

J-Stream CDNext「料金と機能の一覧資料」をダウンロードする

関連サービス

関連する記事一覧

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

電話でのお問い合わせ

0120-658140

【受付時間】9:30~18:30(土日祝日を除く)

登録無料!

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

メールマガジン登録

電話でのお問い合わせ

0120-658140

【受付時間】9:30~18:30(土日祝日を除く)