Citrix ADC

リモートデスクトッププロトコル (RDP) サーバーの負荷分散

リモートデスクトッププロトコル (RDP) はマルチチャネル対応のプロトコルで、プレゼンテーションデータ、シリアルデバイス通信、ライセンス情報、高度に暗号化されたデータ (キーボードとマウスの操作) などを転送するための個別の仮想チャネルを可能にします。

RDP は、ネットワーク上の別のコンピューターにグラフィカルユーザーインターフェイスを提供するために使用されます。RDP は Windows ターミナルサーバーで使用され、低帯域幅の接続でも、マウスの動きとキー押下をほぼリアルタイムに伝送して高速アクセスを提供します。

リモートデスクトップサービスを提供するために複数のターミナルサーバーを展開すると、Citrix ADCアプライアンスはターミナルサーバー(Windows 2003および2008 Serverエンタープライズエディション)の負荷分散を提供します。アプリケーションにリモートでアクセスしているユーザーが、リモートマシン上でアプリケーションを実行したままにして、ローカルマシンをシャットダウンしたい場合があります。したがって、ユーザはリモートアプリケーションからログアウトせずにローカルアプリケーションを閉じます。リモートマシンに再接続すると、ユーザーはリモートアプリケーションを続行できるようになります。この機能を提供するために、Citrix ADC RDP実装では、ターミナルサービスセッションディレクトリまたはブローカーによって設定されたルーティングトークン(Cookie)が優先されるため、クライアントは以前に接続されていたターミナルサーバーに再接続できます。セッションディレクトリは、Windows 2003 ターミナルサーバーに実装され、Windows 2008 ターミナルサーバーではブローカーと呼ばれます。

クライアントと負荷分散仮想サーバー間でTCP接続が確立されると、Citrix ADCは指定された負荷分散方法を適用し、いずれかのターミナルサーバーに要求を転送します。ターミナルサーバーはセッションディレクトリをチェックして、クライアントがドメイン内の他のターミナルサーバーで実行されているセッションがあるかどうかを判断します。

他のターミナルサーバーにアクティブなセッションがない場合、ターミナルサーバーはクライアント要求を処理して応答し、Citrix ADCアプライアンスはクライアントに応答を転送します。

他のターミナルサーバーにアクティブなセッションがある場合、要求を受信するターミナルサーバーは、アクティブなセッションの詳細を含むクッキー(ルーティングトークンと呼ばれます)を挿入し、パケットをCitrix ADCアプライアンスに返します。このアプライアンスはパケットをクライアントに返します。サーバーはクライアントとの接続を閉じます。クライアントが接続を再試行すると、Citrix ADCはCookie情報を読み取り、クライアントがアクティブなセッションを持つターミナルサーバーにパケットを転送します。

クライアントマシン上のユーザーがサービスの継続を経験し、特定のアクションを実行する必要はありません。

注:Windows セッションディレクトリ機能を使用するには、Windows XP で最初にリリースされたリモートデスクトップクライアントが必要です。Windows 2000 または Windows NT 4.0 ターミナルサーバークライアントとのセッションが切断され、クライアントが再接続すると、接続が確立されたサーバーが負荷分散アルゴリズムによって選択されます。

次の図は、RDP ロードバランシングを示しています。

図1:RDP のロードバランシングトポロジ

rdp-topology

  • RDP サービスが構成されると、ルーティングトークンを使用して永続性が自動的に維持されます。永続性を明示的に有効にする必要はありません。
  • Citrix ADCアプライアンスは、IPベースのクッキーのみをサポートします。
  • nsrdp.pl スクリプトは、Windows 2000 サーバおよび Windows 2008 サーバを監視する場合にのみサポートされます。nsrdp.pl スクリプトは、Windows 2012 以降のサーバではサポートされていません。

ログアウトせずに RDP セッションが切断されたときに、2 つのターミナルサーバー間でフラッピングを避けるために、バックエンドのターミナルサーバーで切断された RDP セッションがクリアされていることを確認します。詳細については、https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc758177(v=ws.10)#BKMK_2を参照してください。

RDPサービスを追加すると、デフォルトでCitrix ADCはTCPタイプのモニターを追加し、サービスにバインドします。既定のモニターは、RDP サービスに対して指定されたサーバーの 3389 ポートにリスニングプロセスが存在するかどうかをチェックする単純な TCP モニターです。3389でリスニングプロセスがある場合、Citrix ADCはこのサービスをUPとしてマークし、リスニングプロセスがない場合は、サービスをダウンとしてマークします。

RDP サービスをより効率的に監視するには、既定のモニターに加えて、RDP プロトコル用のスクリプトモニターを構成できます。スクリプトモニターを構成すると、Citrix ADCは指定されたサーバーへのTCP接続を開き、RDPパケットを送信します。モニタは、物理サーバから接続の確認を受信した場合のみ、サービスを UP としてマークします。したがって、スクリプトモニターから、Citrix ADCは、RDPサービスが要求を処理する準備ができているかどうかを知ることができます。

モニタはユーザータイプのモニタで、スクリプトはCitrix ADC /nsconfig/monitors/nsrdp.plにあります。ユーザーモニターを構成すると、Citrix ADCによってスクリプトが自動的に実行されます。スクリプトモニターを構成するには、モニターを追加し、RDP サービスにバインドします。

RDP 負荷分散を構成するには、RDP タイプのサービスを作成し、RDP 仮想サーバーにバインドします。

コマンドラインインターフェイスを使用して RDP 負荷分散サービスを構成するには

コマンドプロンプトで次のコマンドを入力して、RDP 負荷分散セットアップを構成し、構成を確認します。

add service <name>@ <serverName> <serviceType> <port>

注:上記のコマンドを繰り返して、さらにサービスを追加します。


> add service ser1 10.102.27.182 RDP 3389
Done
> add service ser2 10.102.27.183 RDP 3389
Done
>show service ser1
ser1 (10.102. 27.182:3389) - RDP
        State: UP
…
            Server Name: 10.102.27.182
            Server ID : 0           Monitor Threshold : 0
        Down state flush: ENABLED
…
1)      Monitor Name: tcp-default
                State: UP       Weight: 1
…
                Response Time: 4.152 millisec
 Done

構成ユーティリティを使用して RDP 負荷分散サービスを構成するには

[トラフィック管理] > [負荷分散] > [サービス] に移動し、RDP タイプのサービスを作成します。

コマンドラインインターフェイスを使用して RDP 負荷分散仮想サーバーを構成するには

コマンドプロンプトで次のコマンドを入力して、RDP 負荷分散仮想サーバーを構成し、構成を確認します。

add lb vserver <name>@ <serviceType> <ipAddress> <port>

bind lb vserver <name>@ <serviceName>

Bind all the RDP services to be load balanced to the virtual server.

例:

この例では、RDP 仮想サーバーにバインドされた 2 つの RDP サービスがあります。


add lb vs v1 rdP 10.102.27.186 3389
Done

bind lb vs v1 ser1
service "ser1" bound

bind lb vs v1 ser2
service "ser2" bound
Done

sh lb vs v1
v1 (10.102.27.186:3389) - RDP   Type: ADDRESS
State: UP
…
No. of Bound Services :  2 (Total)       2 (Active)
Configured Method: LEASTCONNECTION
  Current Method: Round Robin, Reason: A new service is bound
Mode: IP
Persistence: NONE
  L2Conn: OFF

1) ser1 (10.102.27.182: 3389) - RDPState: UP   Weight: 1
2) ser2 (10.102.27.183: 3389) - RDPState: UP   Weight: 1
Done

構成ユーティリティを使用して RDP 負荷分散仮想サーバーを構成するには

[トラフィック管理] > [負荷分散] > [仮想サーバー] に移動し、RDP タイプの仮想サーバーを作成し、この仮想サーバーに RDP サービスをバインドします。

コマンドラインインターフェイスを使用して RDP サービスのスクリプトモニターを構成するには

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

add lb monitor <monitorName> USER -scriptName nsrdp.pl

bind lb monitor <monitorName> <rdpServiceName>

例:

add service ser1 10.102.27.182 RDP 3389

add lb monitor RDP_MON USER -scriptName nsrdp.pl

bind lb monitor RDP_MON ser1

構成ユーティリティを使用して RDP サービスのスクリプトモニターを構成するには

  1. [トラフィック管理] > [負荷分散] > [モニター] に移動し、タイプ USER のモニタを作成します。
  2. [特殊パラメータ] の [スクリプト名] リストで [nsrdp.pl] を選択し、このモニタを RDP サービスにバインドします。