過去のナビゲーションリンクのスキップSecure Global Desktop 4.40 管理者ガイド > アレイ、サーバー、負荷分散 > ユーザーセッションの負荷分散

ユーザーセッションの負荷分散

ユーザーセッションの負荷分散は、ログイン先の SGD サーバーの選択に関連しています。SGD サーバーの選択には、外部ハードウェアロードバランサやラウンドロビン DNS などの多数の機構を使用できます。

ユーザーセッションの負荷分散におけるもっとも重要な要素は、セッションの持続性です。ユーザーセッションは、ユーザーが SGD サーバーにログインした時点で始まり、そのサーバーによって所有されます。ユーザーが SGD とやりとりすると、さらに HTTP 要求が Webtop 接続を介して SGD Web Server に送信されます。ネットワーク接続の負荷分散が行われている場合、Webtop の HTTP 要求はアレイ内の任意の SGD サーバーに転送される可能性があります。Webtop の HTTP 要求がそのユーザーセッションを所有していない SGD サーバーに送信されると、ユーザーセッションがその SGD サーバーに移って (セッションの乗っ取りとも呼ばれる) 実行中のすべてのアプリケーションのウィンドウが消えたり、ユーザーのセッションの可視状態が不正になったりする場合があります。したがって、ユーザーセッションの負荷分散を正常に行うには、Webtop の HTTP 要求が常に正しい Secure Global Desktop サーバーに送信されるように持続する必要があります。

SGD のデフォルトインストールでは、Webtop の HTTP 接続を持続させるためには負荷分散 JavaServer Page (JSP) を使用して追加設定を行う必要があります。JSP には Cookie を設定する JavaScript スクリプトが含まれており、その Cookie は Webtop の HTTP 要求を正しいサーバーにリダイレクトするために使用されます。

負荷分散 JSP は、次の条件が満たされている場合にのみ使用できます。

負荷分散 JSP は、次の 2 通りの方法で使用できます。

負荷分散 JSP を使用してユーザーセッションを分散する

負荷分散 JSP を使用してユーザーセッションを分散する場合は、アレイメンバーの 1 つが負荷分散サーバーとして機能します。次の構成では、アレイのプライマリサーバーを使用しています。

  1. アレイのプライマリ SGD で、スーパーユーザー (root) としてログインします。
  2. 負荷分散 JSP ファイルを /sgd Web アプリケーションディレクトリにコピーします。
    過去のコマンド構文またはプログラムコードのスキップ# cd /opt/tarantella/webserver/tomcat/*/webapps/sgd/
    # cp -rp admin/loaddist/ swcd/

    ファイルをコピーする際は、-p オプションを使用して、ファイルのアクセス権を保持してください。

  3. 負荷分散 JSP (swcd.jsp) を編集します。
    1. 負荷分散の対象となる SGD サーバーの外部 DNS 名を追加します。

      hosts = new Array セクションを修正します。次に例を示します。

      過去の書式設定済みテキストのスキップhosts[0] = "http://www1.example.com"
      hosts[1] = "http://www2.example.com"
      ...
      hosts[4] = "http://www5.example.com"

      セキュア接続を使用している場合は、URL が https:// で始まっていることを確認してください。

      プライマリサーバーでユーザーセッションをホストする場合にのみ、プライマリサーバーをリストに含めてください。

    2. LBHOST 変数を設定します。

      次のように、最初のコメント記号 (//) を削除します。

      過去の書式設定済みテキストのスキップvar LBHOST = null // Not in Load Balancer/Round Robin DNS mode
    3. 変更を保存します。
  4. 負荷分散 JSP を使用するようエントリポイント JSP を設定します。
    1. index.jsp を編集して、最初の行を次のように変更します。
      過去の書式設定済みテキストのスキップ<%@ include file="swcd/swcd.jsp" %>
    2. 変更を保存します。
  5. 使用するログイン URL をユーザーに通知します。たとえば、http://primary.example.com/sgd となります。

    ログイン URL はプライマリサーバーでなければなりません。

    http://primary.example.com という URL も使用できますが、この URL はクライアントプロファイルで使用できません。

HTTPS 接続を設定するには、次のようにします。

必要であれば、ユーザーは Webtop の URL をログイン URL として使用してプライマリサーバーにログインできます。たとえば、標準 Webtop の場合は http://primary.example.com/sgd/standard.jsp を使用します。

外部機構を使用してユーザーセッションを分散する

ハードウェアロードバランサやラウンドロビン DNS などの外部機構を使用してユーザーセッションの負荷分散を行う場合は、次の要素が重要になります。

次の構成は、負荷分散 JSP を外部ハードウェアロードバランサで使用する例です。このロードバランサは SSL アクセラレータでもあります。また、ロードバランサは、SGD サーバーに外部 DNS 名でアクセスすることを許可するよう設定されています。この構成では、次のようになります。

  1. ユーザーは、ロードバランサの DNS 名に HTTPS 接続を確立します。
  2. ロードバランサは、SSL 要求を復号化し、選択された SGD サーバーの外部 DNS 名に HTTP 要求として転送します。
  3. アレイメンバーの負荷分散 JSP は、負荷分散 Cookie を調べ、必要に応じて HTTP 要求をリダイレクトします。

次のように負荷分散 JSP を設定します。

  1. ホストにスーパーユーザー (root) としてログインします。
  2. 負荷分散 JSP ファイルを /sgd Web アプリケーションディレクトリにコピーします。
    過去のコマンド構文またはプログラムコードのスキップ# cd /opt/tarantella/webserver/tomcat/*/webapps/sgd/
    # cp -rp admin/loaddist/ swcd/

    ファイルをコピーする際は、-p オプションを使用して、ファイルのアクセス権を保持してください。

  3. 負荷分散 JSP (swcd.jsp) を編集します。
    1. 負荷分散の対象となる SGD サーバーの外部 DNS 名を追加します。

      hosts = new Array セクションを修正します。次に例を示します。

      過去の書式設定済みテキストのスキップhosts[0] = "http://www1.example.com"
      hosts[1] = "http://www2.example.com"
      ...
      hosts[4] = "http://www5.example.com"
    2. LBHOST 変数を設定します。

      最初のコメント記号 (//) を削除し、ホストの外部 DNS 名を入力します。次に例を示します。

      過去の書式設定済みテキストのスキップvar LBHOST = "http://www1.example.com"" // LB mode
    3. 変更を保存します。
  4. 負荷分散 JSP を使用するようエントリポイント JSP を設定します。
    1. index.jsp を編集して、最初の行を次のように変更します。
      過去の書式設定済みテキストのスキップ<%@ include file="swcd/swcd.jsp" %>
    2. 変更を保存します。
  5. プライマリサーバーも含め、アレイの各 SGD サーバーに対して手順 1 ~ 4 を繰り返します。
  6. 使用するログイン URL をユーザーに通知します。たとえば、https://loadbalancer.indigo-insurance.com/sgd となります。

    ログイン URL にはロードバランサの DNS 名が含まれている必要があります。

    https://loadbalancer.example.com という URL も使用できますが、この URL はクライアントプロファイルでは使用できません。

SGD サーバーに対して HTTPS 接続を使用するには、負荷分散 JSP 内の URL が https:// で始まっていることを確認してください。その後、次のいずれかの設定を行います。

SGD をファイアウォール転送モードで使用すると、外部ロードバランサの使用時に必要となる構成を簡素化することにも役立ちます。ファイアウォール転送では、SGD への HTTP 接続および AIP 接続が単一のポート (通常は TCP ポート 443) で確立されます。SGD サーバーは、任意の AIP トラフィックをこのポートで待機し、ほかのすべてのトラフィックを SGD Web Server に転送します。

ロードバランサが SSL 要求を復号化する

SGD セキュリティーサービスが有効になっており、かつ外部ロードバランサが SSL 接続を復号化して、それを暗号化されていない接続として転送するよう設定されている場合は、セキュリティー保護されたポートでプレーンテキスト接続を受け入れるようアレイの各 SGD サーバーを設定する必要があります。次の手順を実行します。

  1. SGD Administration Console で、「Secure Global Desktop サーバー」タブをクリックして、Secure Global Desktop サーバーを選択します。
  2. 「セキュリティー」タブをクリックします。
  3. 「SSL アクセラセータのサポート」チェックボックスを選択します。
  4. 「保存」をクリックします。
  5. アレイ内の SGD サーバーごとに、これらの手順を繰り返します。
  6. アレイ内の各 SGD サーバーのセキュリティー証明書を、外部ロードバランサにインストールします。

または、次のコマンドを実行します。

過去のコマンド構文またはプログラムコードのスキップ$ tarantella config edit --array --security-acceptplaintext 1

この設定により、SGD の SSL デーモンは、セキュア接続用に設定されているポートでプレーンテキストを受け入れ、自身で復号化した SSL トラフィックとして SGD に転送することができるようになります。

追加の設定

ここでは、負荷分散 JSP で使用できる追加の設定について説明します。

別の Webtop を使用する

デフォルトでは、標準 Webtop が使用されます。カスタマイズされた Webtop など、別の Webtop を使用するには、次の行を修正します。

過去の書式設定済みテキストのスキップvar TARGET="/sgd/standard.jsp"

ローカライズされたスプラッシュ画面

デフォルトでは、負荷分散 JSP は、/sgd/swcd/ ディレクトリにある画像を使用して英語のスプラッシュ画面を表示します。ローカライズされたスプラッシュ画面を表示するには、スプラッシュ画面画像のデフォルトの格納場所を次のように変更します。

過去の書式設定済みテキストのスキップ// ** Location of gif files
<%
// If the gifs are located in the locale dependent resource use the Path below
String path = getContextPath(request) + "/resources/images/splash/locale=" + getBestSupportedLocale(request) + "/";

// Default location
//String path = "swcd/";
%>

その他の変数

次の表で、負荷分散 JSP で使用されるその他の変数を一覧表示します。

変数 デフォルト 説明
SGDLDCOOKIE SGD_SWCDCOOKIE 負荷分散のために使用される Cookie の名前。
TIMEOUT 10000 負荷分散 JSP が、選択されたホストの SGD Web Server から応答を待つ時間 (ミリ秒単位)。このタイムアウト時間が経過すると、リスト内の次のホストが試されます。
TESTGIF /sgd/resources/images/webtop/secure.gif 負荷分散 JSP が、選択されたホストの Web サーバーから取得を試みるファイル。これは、ホストが使用可能かどうかを調べるために使用されます。
関連トピック