全2161文字
PR

 2021年6月、米ファストリーのCDNで障害が発生し、世界中で多くのWebサイトがアクセスしにくくなった。日本でもメルカリや楽天市場、TVer、Paraviなどが影響を受けた。

 現在では多くの企業がCDNを導入している。対岸の火事ではない。そこで、今回のような障害に備えるにはどうすればよいのかを解説する。

近くのキャッシュが代理で応答

 まずはCDNについて解説しよう。CDNとは、コンテンツ(データ)を効率的に配信するためのネットワークおよびそのサービスのこと。CDN事業者は世界中にキャッシュサーバーを配置。CDNを利用する企業のデータをキャッシュしておいて、一般ユーザーからのアクセスに代理で応答する(図1)。

図1●ユーザーの近くにあるキャッシュサーバーにアクセスさせる
図1●ユーザーの近くにあるキャッシュサーバーにアクセスさせる
CDNの概要。CDN利用企業のデータを置いたサーバー(オリジン)へのアクセスをキャッシュサーバーに振り分けることで、オリジンへのアクセスの集中を防ぐとともに、レスポンスを向上させる。
[画像のクリックで拡大表示]

 具体的な流れは次の通り。CDN利用企業は、オリジンと呼ばれるサーバーにデータを置く。ユーザーからその企業のサーバーにアクセスがあると、CDN事業者はそのユーザーに最も近いキャッシュサーバーにアクセスを振り分ける。振り分けにはDNSサーバーを使うことが多い。

 キャッシュサーバーはユーザーからのリクエストを受け取ると、指定されたデータをオリジンから取得しそれをユーザーに送る。

 取得したデータは一定期間保存(キャッシュ)しておき、同様のアクセスがあった場合にはそのデータを返す。

 CDNはこうしてオリジンへのアクセスを分散し、回線の帯域が圧迫されたりオリジンの負荷が高くなりすぎたりするトラブルを防ぐ。加えて最も近いキャッシュサーバーに応答させることで遅延を抑えてレスポンスを高める。

マルチCDNで冗長化を図る

 多数のキャッシュサーバーを使うCDNは、冗長性の高いシステムに見える。だがファストリーで発生した障害のように、特定のCDN事業者のキャッシュサーバーの多くが正常に機能しなくなる場合がある。

 こういった障害対策の1つが「マルチCDN」である。マルチCDNは、1つのWebサービスで複数のCDNを利用すること(図2)。例えば、画像などの大容量データは利用料金が安いCDN事業者Aを利用し、動画などのデータはストリーミング配信が得意なCDN事業者Bを使うといった具合に使い分ける。

図2●複数のCDNを契約して障害対策
図2●複数のCDNを契約して障害対策
マルチCDNで冗長化する場合の実装例。複数のCDNにデータを置いて、DNSサーバーなどでアクセスを振り分ける。あるCDNで障害が発生した場合には、そのCDNに振り分けないことで障害対策とする。
[画像のクリックで拡大表示]