N 層キャッシュリダイレクト
インターネットサービスプロバイダー (ISP) は、大量のキャッシュデータ (通常は毎秒数ギガバイト) を効率的に処理するために、複数の専用キャッシュサーバーを配備しています。NetScalerアプライアンスのキャッシュリダイレクト機能はキャッシュサーバーの負荷分散に役立ちますが、単一または複数のアプライアンスでは大量のトラフィックを効率的に処理できない場合があります。
この問題は、NetScalerアプライアンスを2つの層(レイヤー)に展開することで解決できます。上位層のアプライアンスは下位層のアプライアンスの負荷分散を行い、下層のアプライアンスはキャッシュサーバーの負荷分散を行います。この配置は n 層キャッシュリダイレクトと呼ばれます。
監査やセキュリティなどの目的で、ISPはIPアドレス、提供された情報、やり取りの時間などのクライアントの詳細を追跡する必要があります。そのため、NetScalerアプライアンスを介したクライアント接続は完全に透過的でなければなりません。ただし、NetScalerアプライアンスを並行して展開した状態でトランスペアレントキャッシュリダイレクトを構成する場合は、クライアントのIPアドレスをすべてのアプライアンスで共有する必要があります。クライアントIPアドレスを共有すると競合が発生し、ルーター、キャッシュサーバー、オリジンサーバー、その他のNetScalerアプライアンスなどのネットワークデバイスが、応答の送信先となるアプライアンス、ひいてはクライアントを特定できなくなります。
N 層キャッシュリダイレクトの実装方法
この問題を解決するために、アプライアンスの n 層キャッシュリダイレクトは、送信元ポート範囲を下位層のアプライアンス間で分割し、キャッシュサーバーに送信される要求にクライアント IP アドレスを含めます。上位層のNetScalerアプライアンスは、アプライアンスに不必要な負荷がかからないように、セッションレスの負荷分散を行うように構成されています。
下位層のNetScalerアプライアンスがキャッシュサーバーと通信する場合、マップされたIPアドレス(MIP)を使用してソースIPアドレスを表します。そのため、キャッシュサーバーはリクエストを受信したアプライアンスを識別し、同じアプライアンスにレスポンスを送信できます。
下位層のNetScalerアプライアンスは、キャッシュサーバーに送信される要求のヘッダーにクライアントIPアドレスを挿入します。ヘッダーのクライアント IP は、アプライアンスがキャッシュサーバーからの応答を受信したときに、またはキャッシュミスの場合にオリジンサーバーからパケットを転送するクライアントを決定するのに役立ちます。オリジンサーバーは、リクエストヘッダーに挿入されたクライアント IP に従って送信するレスポンスを決定します。
オリジンサーバーは、オリジンサーバーがリクエストを受信したソースポート番号を含む応答を上位層アプライアンスに送信します。ソースポートの全範囲(1024~65535)は、下位層のNetScalerアプライアンスに分散されます。下位層の各アプライアンスには、範囲内のアドレスのグループが排他的に割り当てられます。この割り当てにより、上位層のアプライアンスは、リクエストを配信元サーバーに送信した下位層のNetScalerアプライアンスを明確に識別できます。そのため、上位層のアプライアンスは適切な下位層のアプライアンスに応答を転送できます。
上位層のNetScalerアプライアンスはポリシーベースのルーティングを行うように構成され、ルーティングポリシーは、送信元ポート範囲から宛先アプライアンスのIPアドレスを決定するように定義されます。
N 階層 CRD の設定に必要なセットアップ
n 層キャッシュリダイレクトを機能させるには、以下の設定が必要です。
上位層のNetScalerアプライアンスごとに、
- レイヤ 3 モードを有効にします。
- トラフィックが宛先ポートの範囲に従って転送されるように、ポリシーベースルート(PBR)のポリシーを定義します。
- 負荷分散仮想サーバーを構成します。
- クライアントからのすべてのトラフィックを受信するように仮想サーバーを構成します。サービスタイプ/プロトコルを ANY に、IP アドレスをアスタリスク (*) に設定します。
- MACベースのリダイレクトモードでセッションレスの負荷分散を有効にして、上位層のNetScalerアプライアンスに不必要な負荷がかからないようにします。
- 「プロキシポートを使用」オプションが有効になっていることを確認します。
- 下位層のアプライアンスごとにサービスを作成し、すべてのサービスを仮想サーバーにバインドします。
下位階層のNetScalerアプライアンスごとに、
- アプライアンスのキャッシュリダイレクションポート範囲を設定します。下位層の各アプライアンスに排他範囲を割り当てます。
- 負荷分散仮想サーバーを構成し、MAC ベースのリダイレクトを有効にします。
- このアプライアンスによって負荷分散されるキャッシュサーバーごとにサービスを作成します。サービスを作成するときは、ヘッダーにクライアント IP を挿入できるようにします。次に、すべてのサービスを負荷分散仮想サーバーにバインドします。
- トランスペアレントモードのキャッシュリダイレクト仮想サーバーを次の設定で構成します。
- オリジン USIP オプションを有効にします。
- ソース IP 表現を追加して、ヘッダーにクライアント IP を含めます。
- 「ポート範囲を使用」オプションを有効にします。
キャッシュヒット時の N 層キャッシュリダイレクトの仕組み
次の図は、クライアント要求がキャッシュ可能で、応答がキャッシュサーバーから送信される場合のキャッシュリダイレクトの仕組みを示しています。
図1:キャッシュヒット時のキャッシュリダイレクト
L1NS1とL1NS2の2つのNetScalerアプライアンスが上位層に展開され、4つのNetScalerアプライアンス(L2NS1、L2NS2、L2NS3、L2NS4)が下層に展開されます。クライアント A は要求を送信し、その要求はルータによって転送されます。キャッシュサーバー CRS1、CRS2、および CRS3 はキャッシュリクエストを処理します。オリジンサーバーOは、キャッシュされていないリクエストを処理します。
トラフィックフロー
- クライアントが要求を送信し、ルータはそれを L1NS1 に転送します。
- L1NS1 は L2NS2 へのリクエストのロードバランシングを行います。
- L2NS2 は要求をキャッシュサーバー CRS1 にロードバランシングし、要求はキャッシュ可能です。L2NS2 はリクエストヘッダーにクライアント IP を含めます。
- L2NS2 は CRS1 に接続する際にその MIP を送信元 IP アドレスとして使用したため、CRS1 は L2NS2 に応答を送信します。
- L2NS2 は、リクエストヘッダーのクライアント IP アドレスを使用して、リクエストの送信元のクライアントを識別します。L2NS2は応答をルーターに直接送信するため、上位層のアプライアンスに不必要な負荷がかからないようになります。
- ルータは応答をクライアント A に転送します。
キャッシュバイパス中の N 層キャッシュリダイレクトの仕組み
次の図は、クライアント要求が応答を求めてオリジンサーバーに送信されるときのキャッシュリダイレクトの仕組みを示しています。
図2:キャッシュバイパスの場合のキャッシュリダイレクト
L1NS1とL1NS2の2つのNetScalerアプライアンスが上位層に展開され、4つのNetScalerアプライアンス(L2NS1、L2NS2、L2NS3、L2NS4)が下層に展開されます。クライアント A は要求を送信し、その要求はルータによって転送されます。キャッシュサーバー CRS1、CRS2、および CRS3 はキャッシュリクエストを処理します。オリジンサーバーOは、キャッシュされていないリクエストを処理します。
トラフィックフロー
- クライアントが要求を送信し、ルータはそれを L1NS1 に転送します。
- L1NS1 は L2NS2 へのリクエストのロードバランシングを行います。
- リクエストはキャッシュできません (キャッシュバイパス)。そのため、L2NS2はルーターを介してリクエストをオリジンサーバーに送信します。
- オリジンサーバーは、応答を上位層のアプライアンス L1NS2 に送信します。
- PBR ポリシーに従って、L1NS2 は下位階層の適切なアプライアンスである L2NS2 にトラフィックを転送します。
- L2NS2は、リクエストヘッダーのクライアントIPアドレスを使用してリクエストの送信元クライアントを識別し、応答をルーターに直接送信します。これにより、上位層のアプライアンスに不必要な負荷がかかります。
- ルータは応答をクライアント A に転送します。
キャッシュミス時の N 層キャッシュリダイレクトの仕組み
次の図は、クライアント要求がキャッシュされていない場合のキャッシュリダイレクトの仕組みを示しています。
図3:キャッシュミスの場合のキャッシュリダイレクト
L1NS1とL1NS2の2つのNetScalerアプライアンスが上位層に展開され、4つのNetScalerアプライアンス(L2NS1、L2NS2、L2NS3、L2NS4)が下層に展開されます。クライアント A は要求を送信し、その要求はルータによって転送されます。キャッシュサーバー CRS1、CRS2、および CRS3 はキャッシュリクエストを処理します。オリジンサーバーOは、キャッシュされていないリクエストを処理します。
トラフィックフロー
- クライアントが要求を送信し、ルータはそれを L1NS1 に転送します。
- L1NS1 は L2NS2 へのリクエストのロードバランシングを行います。
- 要求はキャッシュ可能であるため、L2NS2 は要求をキャッシュサーバー CRS1 にロードバランシングします。
- CRS1 には応答がありません(キャッシュミス)。CRS1 は、下位層のアプライアンスを介してリクエストをオリジンサーバーに転送します。L2NS3 はトラフィックをインターセプトします。
- L2NS3 はヘッダーからクライアント IP を取得し、要求をオリジンサーバーに転送します。パケットに含まれる送信元ポートは、要求がオリジンサーバーに送信される L2NS3 ポートです。
- オリジンサーバーは、応答を上位層のアプライアンス L1NS2 に送信します。
- PBR ポリシーに従って、L1NS2 は下位階層の適切なアプライアンスである L2NS3 にトラフィックを転送します。
- L2NS3 は応答をルータに転送します。
- ルータは応答をクライアント A に転送します。