接続の多重化により、HTTP 1.0 要求と HTTP 1.1 要求との切り替え動作、サーバ TCP 接続の再利用が制御されます。この機能で、クライアント TCP と HTTP 接続はサーバ側の TCP および HTTP 接続から分離されます。

[テンプレート] > [プロファイル] > [HTTP アプリケーション プロファイル] によって構成した多重化には、サーバの効果とパフォーマンスを向上させる次の 3 つの重要なメリットがあります。

  1. サーバへの接続で、特定の期間に開いて閉じなければならない分の数を減らします。

  2. 開いているクライアント接続の数に対して、サーバへの接続で同時に開いている分の数を減らします。

  3. サーバ間での HTTP 要求のロード バランシングと分散を許可します。開いているサーバ側の接続を利用します。

HTTP/2 と SPDY の場合は、3 つ目のメリットのみが適用されます。より新しいバージョンのこうした HTTP では、1 と 2 で説明した機能はネイティブです。

サーバへの接続をどのくらい削減できるかは、厳密には次のような要因によって異なります。

  • クライアント接続。

  • クライアント遅延と、接続がアイドル状態になっている時間。

  • HTTP バージョンのネゴシエート。

新しい接続

クライアント接続からサーバ接続への 1 対 1 のマッピングでは、サーバに対する負荷が極端になる可能性があります。多重化を有効化すると、クライアントで接続を閉じたときに、NSX Advanced Load Balancer でクライアント接続終了イベントをインターセプトし、クライアント接続を閉じますが、サーバ側の接続は開いたままにします。次のクライアントで接続を開く必要がある場合、NSX Advanced Load Balancer ではクライアント側の接続を開きますが、クライアントの要求は、開いていてアイドル状態のサーバ側の接続を介して転送します。1 秒あたりの新しい接続の統計情報は、クライアント側(仮想サービス)のがサーバ側(プール)のよりも大幅に高くなる可能性があります。1 秒あたりの要求数は同じになり、キャッシュなど他の機能は禁止されます。

同時接続数

クライアントから NSX Advanced Load Balancer への接続のほとんどはアイドル状態になります。HTTP 1.0 と HTTP 1.1 では、要求または応答が一度に 1 つのみ、接続経由でインフライトになります。あるサーバで応答を送信すると、応答を送信した後であっても、そのサーバでは他の目的で接続を使用することはできません。クライアントが応答を受信するまで待機することになります。一般的なインターネット遅延による一定程度の時間になります。クライアントから別の要求を送信することになって、その要求を受信するまでは、待機しなければなりません。サーバによるデータ送信や受信は、実際は、時間にすると割合は非常に小さくなる傾向があります。

多重化を有効化すると、NSX Advanced Load Balancer ではサーバ応答を受信し、応答をバッファし、そのサーバに受信を通知し、応答をクライアントに送信します。その間に別のクライアント要求を受信した場合、その要求は NSX Advanced Load Balancer から現在アイドル状態のサーバ接続を介して送信します。一般的な HTTP サイトの場合(特に、一般的な遅延があると)、サーバへの開いている同時接続の数は、クライアントからの開いている同時接続の数よりも大幅に少なくなります。

要求のロード バランシング

  1. 多重化なし:1 つのクライアント接続に由来するトラフィックからの要求の分散。



  2. 多重化あり:1 つのクライアント接続に由来するトラフィックからの要求の分散。



SE で受信する複数の接続の元のクライアントが 1 つでも複数でも、当該要求はサーバでのロード バランシングの対象となります。こうすれば、特定の要求に対する応答が遅いサーバは、NSX Advanced Load Balancer で次のクライアント要求を受信した際、確実にバイパスされます。ラウンド ロビンのようなロード バランシング アルゴリズムだと、その接続が要求や応答で現在ビジーになっている場合、その次の要求に対するサーバの接続はスキップされます。そのため、複雑で低速なデータベース クエリを処理するサーバは、より高速な要求を処理する他のサーバよりも、受信する要求数が少なくなることがあります。



注:
  • 接続とは TCP 接続のことであり、要求とは HTTP 要求とその後に続く応答のことです。

  • HTTP 1.0 と HTTP 1.1 では、開いている TCP 接続を通過できる要求や応答は一度に 1 つのみです。多くのブラウザでは、宛先 Web サイトへの TCP 接続を同時に 6 つほど開くことで、このボトルネックを軽減しようとします。

  • HTTP/2 では別の接続方法を使用するので、接続の多重化の機能を使用したり必要としたりすることはありません。

他の機能に対する影響

多重化をすると、その表示は管理者の世界の期待を裏切るものとなります。たとえば、接続数の表示がクライアントとサーバとで大きく異なります。ラウンド ロビンや最小接続数などの静的ロード バランシング アルゴリズムとは異なった動作を示します。

  • 送信元 IP の保持 — 多重化により、トラフィックが宛先サーバへ送信される際、クライアント接続は均一化から明示的に分離されます。[送信元 IP の保持] が有効化されるとともに、サーバのデフォルト ゲートウェイとしてサービス エンジンが使用される場合、HTTP トラフィックは多重化できません。

  • NTLM — NTLM 認証は一般的に、多重化との互換性がありません。SharePoint や StoreFront など、NTLM に依存するアプリケーションの構成では、接続の多重化を無効化しなければなりません。

  • パーシステンス — パーシステンスは、次で説明するとおり、多重化にとって重要です。

多重化とパーシステンス

サーバのパーシステンスが有効化されている場合、多重化の動作は次のように変わります。

  • 多重化が有効、パーシステンスが無効:クライアント接続とその要求は、サービス エンジンのサーバ側から分離されます。要求は、サーバへの新しい接続または既存の接続を使用して、プール内のこれらのサーバ間でロード バランシングされます。サーバへの接続は、どのクライアントからも、要求すれば共有できます。

  • 多重化が有効、パーシステンスが有効:クライアント接続とその要求は、1 台のサーバだけに送信されます。当該要求は、同じサーバに保持されている他のクライアントと接続を共有できます。HTTP 要求のロード バランシングは実行されません。

  • 多重化が無効、パーシステンスが有効:NSX Advanced Load Balancer では、サーバへの新しい TCP 接続を、クライアントから接続を受信する都度開きます。接続は他のクライアントと共有されません。同じクライアントからのすべての接続を介して受信したすべての要求は、1 台のサーバに送信されます。HTTP クライアントのブラウザでは同時接続を多数開くことができるので、クライアント接続の数はサーバ接続の数と同じになります。

  • 多重化が無効、パーシステンスが無効:クライアントとサーバとの間の接続は 1 対 1 です。要求は、開始したのと同じ接続に残ります。同じクライアントからの複数の接続を、使用可能なサーバ間で分散することができます。

注:

プール グループでは、接続の多重化の無効化がサポートされます。

fwd_close_hdr_for_bound_connections オプション

アプリケーション プロファイルで接続の多重化が無効化されている場合、つまり、クライアント接続とサーバ接続とが相互に結び付いている場合、fwd_close_hdr_for_bound_connections オプションが適用されます。デフォルトでは TRUE です。fwd_close_hdr_for_bound_connectionsTRUE で、バックエンド サーバからの応答に Connection: Close ヘッダーが付いていると、SE では、このヘッダーをクライアントへ転送し、バックエンド接続を閉じます。Connection: Close を受信したクライアントでは、フロントエンド接続を閉じます。