第3回はCDNの負荷分散にまつわる話をご紹介します。
広域負荷分散
CDNでは、一部の設備に負荷が偏らないようにしたり、ユーザーに最適な配信サーバを自動的に選択するといった、負荷を分散して効率よくコンテンツを配信する制御が行われています。
ここでは、
「重みづけラウンドロビンによる制御」
「IPアドレスやAS番号による制御」
「ユーザーとキャッシュサーバ間の距離(RTT)による制御」
について解説します。
重みづけラウンドロビンによる制御
配信設備は拠点によって処理性能が異なります、そのため高い性能の設備に少量のリクエスト、低い性能の設備に大量のリクエストが入ると配信効率が悪化してしまう問題があります。
「重みづけラウンドロビンによる制御」は、キャッシュサーバクラスター単位でどのクラスタに優先してユーザーからのリクエストを流すかを制御する仕組みです。
例えばA/B2つのクラスタがあった場合、全体の80%をクラスタAに、残りの20%をクラスタBに割り当てることで、クラスタが受信するリクエスト数を制御します。
このように「重みづけ」によりリクエスト数を分散することで、例えば、大規模な設備には大きい値を設定し、小規模な設備には小さい値を設定するといったことを行うことで、配信設備の処理性能に応じた比率でリクエスト数を分けることができ、効率的な分散処理を実現することができます。
「重みづけ」は、固定値で比率を設定する場合や、データ流量に応じて比率を動的に変化させる場合など、用途に応じて多様な設定手法を用います。
IPアドレスやAS番号による制御
キャッシュサーバが設置されているデーターセンターには通常のインターネット回線とは別に、インターネットエクスチェンジ(IX)を利用した回線が接続されています。IXなどの相互接続点を利用するこことでインターネットサービスプロバイダ(ISP)などのネットワークと相互に相互に直接接続します。
IXには複数の事業者のAS拠点が接続されており、AS同士の取り決めにより相互接続を行います。
IXを経由した接続については「パブリックピアリング」といいます。
一方でAS拠点同士を1:1で直接接続した形態の場合は「プライベートピアリング」といいます。
パブリックピアリングを行うことで、専用の回線を用意する必要のあるプライベートピアリングよりもコスト抑えて、相互接続を行うことができます。また、ピアリングによるAS拠点間の直接接続により、通常のインターネット回線よりも低遅延で通信を行うことができます。
CDNでは「IPアドレスやAS番号による制御」を行うことで、ユーザーがリクエストした際のIPアドレスやAS番号の情報を利用して、ピアリングしているインターネットサービスプロバイダからの通信であれば、IXと接続している配信拠点のサーバーに誘導することで、より低遅延でデータを送信できるように制御しています。
用語解説:
・AS (Autonomous System):日本語では自律システムと訳される、あるポリシーにより管理運営されたネットワークの集まりを指す。
・AS番号:ASに割り当てられたユニークな識別番号
ユーザーとキャッシュサーバ間の時間距離(RTT)による制御
CDNを使っていてもユーザーからサーバまでの通信距離が遠いとパフォーマンスに影響が出てしまいます。
ユーザーのPCやモバイル端末から接続先のサーバまでの通信距離が遠いほど通信に必要とする時間が長くなり、一般的に通信速度は低下します。
インターネットの仕組みではデータのサイズが大きいほどを小分けにしてユーザーとサーバ間でデータの送受信が何度も発生するため、一回の遅延が小さい場合でも、積み重ねれば大きな遅延になる場合があります。そのためユーザーからサーバまでの距離がなるべく短いほうがよいわけです。
ユーザーからなるべく距離の短い経路を選択するために「サーバ間の時間距離(RTT)による制御」を行います。これは、RTT(round trip time)を利用することで実現されます。RTTとはデータ(パケット)の往復時間のことで、通信にかかる時間をミリ秒単位で計測した結果です。RTTの情報を利用して、ユーザーからどのキャッシュサーバクラスタが最も短い時間で到達できるかを判定することで通信速度のパフォーマンスを向上させています。
例えば、東京のユーザーは関東のデータセンターからデータを取得する、大阪のユーザーは関西のデータセンターからデータを取得するように、自動的に最適なデータセンターに誘導されます。
マルチCDN
マルチCDNとは、複数の異なるCDNベンダーを利用できるように配信システムを構築することです。単一のCDNベンダーで配信するよりも以下のようなメリットがあります。
・異なるCDNを複数利用することで、冗長性が増すために障害に強くなる
・配信負荷をCDNベンダー間で分散できるためキャパシティのより大きな配信ができる
・ユーザーをより最適なCDNに誘導できパフォーマンスの改善ができる
※例えば海外のユーザーは海外に設備を持つCDNに誘導したほうがパフォーマンスがよい
大量の同時接続の発生が予想されるライブ映像配信などでマルチCDNの利用が増えています。
「マルチCDN」の環境では、複数CDNベンダーへの誘導を制御するために、マルチCDNセレクターサービスを利用します。
例えば、RUM(Real User Monitoring)方式により、実ユーザーのパフォーマンス計測を行い、分析結果から最適なプラットフォームを自動的に選択する仕組みを提供する「Cedexis」を利用した場合のマルチCDNセレクター構成について説明します。
マルチCDNセレクターは「Radar」「Mux」「Openmix」といったサービスを連携して構築することができます。
・Cedexis Radar:CDN稼働率・レスポンスタイム・スループットなどを計測
・MUX:視聴Player のバッファリング数や時間・エラー発生数などを計測
・Openmix:CDNの振り分けロジックを定義
ユーザーが利用する配信Playerに「Radar」「Mux」のAPIへのコールを組み込むことで、配信Playerから各種配信品質の情報を取得しリアルタイムに計測します。その情報を元にどのCDNベンダーに誘導するのが最適であるか決定されます。このような仕組みにより常に最適な経路を動的に切り替えることが可能となります。
また、オリジンサーバの仕様によっては、複数ベンダーの配信仕様に合わせられないといった問題が発生することがありますが、手前に自社CDNを設置することで仕様の差異を吸収して配信させる工夫を行うことがあります。
【関連情報】 ※別サイトのJストリームコーポレートサイトへリンクします。