Citrix ADC

HTTP/2構成

注: HTTP/2機能は、Citrix ADC MPX、VPX、SDXの各モデルでサポートされています。Citrix ADC VPXアプライアンスでは、HTTP/2機能は11.0以降のリリースからサポートされます。

Web アプリケーションのパフォーマンスの問題は、ページサイズと Web ページ上のオブジェクト数の増加傾向に直接関係しています。HTTP/1.1 は、小規模な Web ページ、低速なインターネット接続、および現在一般的であるよりも限られたサーバーハードウェアをサポートするために開発されました。JavaScript やカスケーディングスタイルシート (CSS) などの新技術や、Flash ビデオやグラフィックが豊富な画像などの新しいメディアタイプには適していません。これは、サーバーへの接続ごとに 1 つのリソースしか要求できないためです。この制限により、ラウンドトリップの数が大幅に増加し、ページレンダリングが長くなり、ネットワークパフォーマンスが低下します。

HTTP/2 プロトコルは、ネットワーク経由で送信されるデータの少ない通信を可能にし、1 つの接続で複数の要求と応答を送信する機能を提供することで、これらの制限に対処します。HTTP/2 は、基盤となるネットワーク接続をより効率的に使用することで、HTTP/1.1 の主な制限事項に対処しています。これにより、ネットワーク上での要求と応答の移動方法が変更されます。

HTTP/2 はバイナリプロトコルです。解析する方が効率的で、よりコンパクトで、最も重要なのは、HTTP/1.1のようなテキストプロトコルと比較して、エラーが起こりにくいことです。HTTP/2 プロトコルは、フレームタイプと HTTP メッセージをカプセル化してクライアントとサーバ間で転送する方法を定義するバイナリフレーミングレイヤを使用します。HTTP/2 機能は、CONNECT メソッドの使用をサポートし、1 つの HTTP/2 ストリームを介してリモートホストへのトンネル接続を確立します。

HTTP/2 プロトコルには、パフォーマンスが大幅に向上する多くの変更が含まれており、特にモバイルネットワーク経由で接続するクライアントの場合、パフォーマンスが大幅に向上します。

次の表は、HTTP/1.1を介してHTTP/2の主な改善点を示しています。

HTTP/2 の機能 説明
ヘッダー圧縮 HTTPヘッダーには多くの反復情報があるため、データ転送中に不要な帯域幅を消費します。HTTP/2 は、ヘッダーを圧縮し、すべての要求と応答で HTTP ヘッダーを転送する必要性を最小限に抑えることで、帯域幅の要件を削減します。
接続多重化 レイテンシーは、ページの読み込み時間とエンドユーザーエクスペリエンスに大きな影響を与えます。接続多重化は、単一の接続で複数の要求と応答を送信することで、この問題を克服します。
サーバープッシュ サーバープッシュにより、サーバーはプロアクティブにコンテンツをクライアントブラウザーにプッシュできるため、ラウンドトリップ遅延を回避できます。この機能は、クライアントが必要とする応答をキャッシュし、ラウンドトリップ回数を減らし、ページのレンダリング時間を短縮します。重要:Citrix ADCアプライアンスは、サーバープッシュ機能をサポートしていません。
ヘッド・オブ・ライン・ブロックなし HTTP/1.1 では、ブラウザは接続ごとに一度に 1 つのリソースをダウンロードできます。ブラウザが大きなリソースをダウンロードする場合、最初のダウンロードが完了するまで、他のすべてのリソースのダウンロードをブロックします。HTTP/2 は、多重化アプローチでこの問題を克服します。これにより、クライアントブラウザは、同じ接続を介して他のWebコンポーネントを並行してダウンロードし、利用可能になったときにそれらを表示することができます。
リクエストの優先順位付け ブラウザがWebページをレンダリングするときに、すべてのリソースが同じ優先度を持つわけではありません。読み込み時間を短縮するために、最新のブラウザはすべて、アセットの種類、ページ上の位置、および前回の訪問から学習された優先度によってリクエストに優先順位を付けます。HTTP/1.1では、ブラウザは優先度データを使用する機能が制限されている。これは、このプロトコルは多重化をサポートしておらず、サーバによる要求の優先度の伝達方法がないためである。その結果、不要なネットワーク遅延が発生します。HTTP/2は、ブラウザがすべての要求をディスパッチできるようにすることで、この問題を克服します。ブラウザは、ストリームの依存関係と重みを使用してストリームの優先順位設定を通信し、サーバーが応答配信を最適化できるようにします。重要:Citrix ADCアプライアンスは、要求の優先順位付け機能をサポートしていません。

HTTP/2 の仕組み

Citrix ADCアプライアンスは、クライアント側とサーバー側で HTTP/2 をサポートします。クライアント側では、Citrix ADCアプライアンスは、HTTP/2用のHTTP/HTTPS仮想サーバーをホストするサーバーとして機能します。バックエンド側では、Citrix ADCは、仮想サーバーにバインドされたサーバーのクライアントとして機能します。

したがって、Citrix ADCアプライアンスは、クライアント側とサーバー側で別々の接続を維持します。Citrix ADCアプライアンスには、クライアント側とサーバー側で別々のHTTP/2構成があります。

HTTPS (SSL) ロードバランシング設定用の HTTP/2

HTTPS負荷分散構成の場合、Citrix ADCアプライアンスはTLS ALPN拡張(RFC 7301)を使用して、クライアント/サーバーがHTTP/2をサポートしているかどうかを判断します。そうであれば、アプライアンスはクライアント/サーバー側でデータを送信するためのアプリケーション層プロトコルとして HTTP/2 を選択します(RFC 7540-セクション 3.3 を参照)。 アプライアンスは、TLS ALPN拡張を使用してアプリケーション層プロトコルを選択する際に、次の優先順位を使用します。

  • HTTP/2(HTTPプロファイルで有効になっている場合)
  • SPDY(HTTP プロファイルで有効になっている場合)
  • HTTP/1.1

HTTP ロードバランシング設定用の HTTP/2

HTTP負荷分散構成の場合、Citrix ADCアプライアンスは次のいずれかの方法を使用して、HTTP/2を使用してクライアント/サーバーとの通信を開始します。

注:

次のメソッドの説明では、クライアントとサーバーは HTTP/2 接続の一般的な用語です。たとえば、HTTP/2を使用したCitrix ADCアプライアンスの負荷分散セットアップの場合、Citrix ADCアプライアンスはクライアント側のサーバーとして機能し、サーバー側のクライアントとして機能します。

  • HTTP/2 アップグレードクライアントは、サーバーに HTTP/1.1 要求を送信します。要求には、HTTP/2 への接続のアップグレードをサーバーに要求するアップグレードヘッダーが含まれています。サーバーが HTTP/2 をサポートしている場合、サーバーはアップグレード要求を受け入れ、応答で通知します。クライアントとサーバーは、クライアントがアップグレード確認応答を受信した後、HTTP/2 を使用して通信を開始します。

  • 直接HTTP/2です。クライアントは、HTTP/2 のアップグレード方法を使用する代わりに、HTTP/2 でサーバーとの通信を直接開始します。サーバが HTTP/2 をサポートしていない場合、または HTTP/2 要求を直接受け入れるように設定されていない場合、サーバはクライアントからの HTTP/2 パケットをドロップします。この方法は、クライアントデバイスの管理者がサーバーが HTTP/2 をサポートしていることをすでに知っている場合に役立ちます。

  • 代替サービス(ALT-SVC)を使用して直接HTTP/2。サーバーは、HTTP/1.1 応答に代替サービス (ALT-SVC) フィールドを含めることにより、HTTP/2 をサポートしていることをクライアントにアドバタイズします。クライアントが ALT-SVC フィールドを理解するように設定されている場合、クライアントとサーバは、クライアントが応答を受信した後、HTTP/2 を使用して直接通信を開始します。

Citrix ADCアプライアンスは、HTTP/2メソッド用のHTTPプロファイルで設定可能なオプションを提供します。これらの HTTP/2 オプションは、HTTPS または HTTP ロードバランシング設定のサーバー側だけでなく、クライアント側にも適用できます。HTTP/2 のメソッドとオプションの詳細については、HTTP/2 オプション PDF を参照してください。

はじめに

Citrix ADCアプライアンス上でHTTP/2を構成する前に、次の点に注意してください。

  • Citrix ADCアプライアンスは、クライアント側とサーバー側で HTTP/2 をサポートします。
  • Citrix ADCアプライアンスは、HTTP/2サーバープッシュ機能をサポートしていません。
  • Citrix ADCアプライアンスは、HTTP/2要求の優先順位付け機能をサポートしていません。
  • Citrix ADCアプライアンスは、HTTPS負荷分散セットアップのHTTP/2 SSL再ネゴシエーションをサポートしていません。
  • Citrix ADCアプライアンスは、HTTP/2 NTLM認証をサポートしていません。
  • ユーザーソースIP(USIP)モードが有効で、Citrix ADCアプライアンスでプロキシモードが無効になっている場合、HTTP/2は機能しません。

HTTP/2 の設定

負荷分散設定(HTTPS または HTTP)の HTTP/2 の設定は、次のタスクで構成されます。

  • HTTP/2 を有効にし、HTTP プロファイルでオプションの HTTP/2 パラメータを設定します。HTTP プロファイルで HTTP/2 を有効にします。HTTPプロファイルでHTTP/2のみを有効にする場合、Citrix ADCアプライアンスは、HTTP/2での通信にアップグレード方法(HTTPの場合)またはTLS ALPN 方式(HTTPSの場合)のみを使用します。

    Citrix ADCアプライアンスで直接HTTP/2方式を使用するには、 HTTPプロファイルでダイレクトHTTP/2 オプションを有効にする必要があります。Citrix ADCアプライアンスで代替サービス方式を使用して直接HTTP/2を使用するには、HTTPプロファイルで 代替サービス(altsvc) オプションを有効にする必要があります。

  • HTTP プロファイルを仮想サーバーまたはサービスにバインドします。HTTP プロファイルを仮想サーバーにバインドして、負荷分散設定のクライアント側に HTTP/2 を設定します。HTTP プロファイルをサービスにバインドして、負荷分散設定のサーバー側に HTTP2 を設定します。

注:

クライアント側とサーバー側で別々のHTTPプロファイルをバインドすることをお勧めします。

  • HTTP/2 サーバー側サポートのグローバルパラメータを有効にしますHTTP/2 が設定されているすべてのロードバランシング設定のサーバー側で HTTP/2 サポートを有効にするには、HTTP/2 サービス側 (HTTP2ServerSide) グローバル HTTP パラメータを有効にします。

    HTTP/2 は、関連する負荷分散 サービスにバインドされた HTTP/2 Service Side プロファイルで HTTP/2 が有効になっていても、負荷分散セットアップのサーバー側では機能しません。

Citrix ADCコマンドライン手順

Citrix ADC コマンドラインを使用して HTTP/2 を有効にして HTTP/2 パラメーターを設定するには

  • HTTP プロファイルの追加中に HTTP/2 を有効にして HTTP/2 パラメータを設定するには、コマンドプロンプトで次のように入力します。

add ns httpProfile <name> - http2 ( ENABLED | DISABLED ) [-http2Direct ( ENABLED | DISABLED )] [-altsvc ( ENABLED | DISABLED )] show ns httpProfile <name>

  • HTTP プロファイルの変更中に HTTP/2 を有効にして HTTP/2 パラメータを設定するには、コマンドプロンプトで次のように入力します。

set ns httpProfile <name> -http2 ( ENABLED | DISABLED ) [-http2Direct ( ENABLED | DISABLED)] [-altsvc (ENABLED | DISABLED )] show ns httpProfile <name>

Citrix ADC コマンドラインを使用して HTTP プロファイルを仮想サーバーにバインドするには

コマンドプロンプトで、次のように入力します。

set lb vserver <name> - httpProfileName <string> show lb vserver <name>

Citrix ADCコマンドラインを使用してHTTPプロファイルを負荷分散サービスにバインドするには

コマンドプロンプトで、次のように入力します。

set service <name> -httpProfileName <string> show service <name>

Citrix ADCコマンドラインを使用してサーバー側でグローバルにHTTP/2サポートを有効にするには

コマンドプロンプトで、次のように入力します。

set ns httpParam -HTTP2Serverside( ENABLED | DISABLED ) show ns httpParam

Citrix ADC GUIを使用してHTTP/2を有効にし、HTTP/2パラメーターを設定するには

  1. [システム] > [プロファイル] に移動し、[HTTP プロファイル] タブをクリックします。
  2. HTTP プロファイルの追加時または既存の HTTP プロファイルの変更時に HTTP/2 を有効にします。

Citrix ADC GUIを使用してHTTPプロファイルを仮想サーバーにバインドするには

  1. [トラフィック管理] > [負荷 分散] > [仮想サーバー] に移動し、仮想サーバーを開きます。
  2. [詳細設定] で、[+ HTTP プロファイル] をクリックして、作成した HTTP プロファイルを仮想サーバーにバインドします。

Citrix ADC GUIを使用してHTTPプロファイルを負荷分散サービスにバインドするには

  1. [トラフィック管理] > [負荷 分散] > [サービス] に移動し、サービスを開きます。
  2. [詳細設定] で、[+ HTTP プロファイル] をクリックして、作成した HTTP プロファイルをサービスにバインドします。

GUI を使用してサーバー側で HTTP/2 サポートをグローバルに有効にするには

[システム] > [設定] に移動し、[HTTP パラメータの変更] をクリックして HTTP/2 サーバー側 を有効にします。

設定例

次の設定例では、HTTP プロファイルの HTTP/2 およびダイレクト HTTP/2 が有効になっています。プロファイルは、仮想サーバ LB-VS-1 にバインドされます。

set ns httpProfile HTTP-PROFILE-HTTP2-CLIENT-SIDE -http2 enabled -http2Direct enabled
Done

set lb vserver LB-VS-1 -httpProfileName HTTP-PROFILE-HTTP2-CLIENT-SIDE

Done

次の設定例では、HTTP/2 および代替サービス(ALT-SVC)が HTTP プロファイル HTTP-PROFILE-HTTP2-SERVER-SIDE で有効になっています。プロファイルは、サービス LB-SITE-1 にバインドされています。

set ns httpparam -HTTP2Serverside ENABLED
Done

set ns httpProfile HTTP-PROFILE-HTTP2-SERVER-SIDE -http2 ENABLED -altsvc ENABLED
Done

set service LB-SERVICE-1 -httpProfileName HTTP-PROFILE-HTTP2-SERVER-SIDE
Done

HTTP/2構成