リモートデスクトッププロトコル (RDP) はマルチチャネル対応のプロトコルで、プレゼンテーションデータ、シリアルデバイス通信、ライセンス情報、高度に暗号化されたデータ (キーボードとマウスの操作) などを転送するための個別の仮想チャネルを可能にします。
RDP は、ネットワーク上の別のコンピュータに GUI を提供するために使用されます。RDP は Windows ターミナルサーバーで使用され、低帯域幅の接続でもマウスの動きやキーの押下をほぼリアルタイムで送信し、高速アクセスを実現します。
リモートデスクトップサービスを提供するために複数のターミナルサーバーを展開する場合、NetScalerアプライアンスはターミナルサーバー(Windows 2003および2008 Server Enterprise Edition)の負荷分散を行います。アプリケーションにリモートでアクセスしているユーザーが、アプリケーションをリモートマシンで実行したままにして、ローカルマシンをシャットダウンしたい場合があります。したがって、ユーザはリモートアプリケーションからログアウトせずにローカルアプリケーションを閉じます。リモートマシンに再接続した後、ユーザーはリモートアプリケーションを続行できる必要があります。この機能を提供するために、NetScaler RDP実装では、ターミナルサービスセッションディレクトリまたはブローカーによって設定されたルーティングトークン(Cookie)が優先されるため、クライアントは以前に接続されていたターミナルサーバーに再接続できます。Windows 2003 ターミナルサーバーに実装されたセッションディレクトリは、Windows 2008 ターミナルサーバーではブローカーと呼ばれます。
クライアントと負荷分散仮想サーバー間でTCP接続が確立されると、NetScalerは指定された負荷分散方法を適用し、要求をいずれかのターミナルサーバーに転送します。ターミナルサーバーはセッションディレクトリをチェックして、クライアントのセッションがドメイン内の他のターミナルサーバーで実行されているかどうかを判断します。
他のターミナルサーバーにアクティブなセッションがない場合、ターミナルサーバーはクライアント要求を処理して応答し、NetScaler ADCアプライアンスはクライアントに応答を転送します。
他のターミナルサーバーにアクティブなセッションがある場合、要求を受信するターミナルサーバーはアクティブなセッションの詳細を含むクッキー(ルーティングトークンと呼ばれる)を挿入し、パケットをNetScaler ADCアプライアンスに返し、パケットをクライアントに返します。サーバーはクライアントとの接続を閉じます。クライアントが接続を再試行すると、NetScalerはCookie 情報を読み取り、クライアントのセッションがアクティブなターミナルサーバーにパケットを転送します。
クライアントマシン上のユーザーにはサービスが継続されるため、特別なアクションを実行する必要はありません。
注:Windows セッションディレクトリ機能には、Windows XP で最初にリリースされたリモートデスクトップクライアントが必要です。Windows 2000 または Windows NT 4.0 ターミナルサーバクライアントとのセッションが切断され、クライアントが再接続すると、接続を確立するサーバが負荷分散アルゴリズムによって選択されます。
次の図は、RDP 負荷分散を示しています。
図1:RDP の負荷分散トポロジー
-
RDP サービスを設定すると、ルーティングトークンを使用して永続性が自動的に維持されます。永続性を明示的に有効にする必要はありません。
-
NetScalerアプライアンスはIPベースのクッキーのみをサポートします。
-
nsrdp.pl スクリプトは、現在のバージョンの Windows サーバではサポートされていません。
RDP セッションがログアウトせずに切断された場合に 2 つのターミナルサーバー間でフラッピングが発生しないように、切断された RDP セッションがバックエンドのターミナルサーバーでクリアされていることを確認してください。詳しくは、https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc758177(v=ws.10)#BKMK_2を参照してください。
RDPサービスを追加すると、NetScalerはデフォルトでTCPタイプのモニターを追加し、サービスにバインドします。デフォルトモニターは、RDP サービスに指定されたサーバーの 3389 ポートにリスニングプロセスが存在するかどうかをチェックする単純な TCP モニターです。3389でリスニングプロセスがある場合、NetScalerはこのサービスを稼働中としてマークし、リスニングプロセスがない場合はサービスを停止中とマークします。
RDP サービスをより効率的に監視するために、デフォルトのモニターに加えて、RDP プロトコル用のスクリプトモニターを構成できます。スクリプトモニターを構成すると、NetScalerは指定されたサーバーへのTCP接続を開き、RDPパケットを送信します。モニターは、物理サーバーから接続の確認を受け取った場合にのみ、サービスを UP とマークします。そのため、NetScalerはスクリプトモニターから、RDPサービスがリクエストを処理する準備ができているかどうかを知ることができます。
モニターはユーザータイプのモニターで、スクリプトはNetScalerの/nsconfig/monitors/nsrdp.plにあります。ユーザーモニターを構成すると、NetScalerはスクリプトを自動的に実行します。スクリプトモニターを設定するには、モニターを追加して RDP サービスにバインドします。
RDP 負荷分散を設定するには、RDP タイプのサービスを作成し、RDP 仮想サーバーにバインドします。