2012年3月27日火曜日

RDセッションホストと、RDセッションブローカー

今日は「マイクロソフト クライアント仮想化ソリューション(#50590) ~リモートデスクトップとVDI~」を担当しました。

1つ、答え切れなかった質問があるので、この場を借りてお答えします(1日の講習会だと調べきれないことがあります)。

【質問】
リモートデスクトップサービスで、リモートデスクトップセッションホスト(RDセッションホスト)を負荷分散しており、リモートデスクトップ接続ブローカー(RD接続ブローカー)を構成しています。

ここで、RDセッションホストとしてAとBの2台があるとします。両ホストはサーバーファームFを構成しています。

ユーザーXがファームFに接続したところ、Aにログオンしました。その後、Xのセッションを残してAのネットワークが切断されました。現在、ネットワークは切断されたままです。

ユーザーXが、ファームFに再接続したらどうなるででしょう。RD接続ブローカーは正常なのでAに再接続されるはずですが、Aは停止しています。

【実験】
権威のある文献を探しきれなかったので、実際にやってみました。

仮想マシンでA、B、2台のRDセッションホストを構成し、RD接続ブローカーに登録します。
次に、DNSラウンドロビンの機能を使ってファームFを構成しました。

ユーザーXでファームFに接続し、Aにログオンしたことを確認して、仮想マシンAの状態を保存しました。

その後、ユーザーXでファームFに再接続すると、Aに接続しようとします。しかしAは応答しないので、リモートデスクトップクライアントがエラーを起こし、接続に失敗します。

もちろんファームFではなくBのIPアドレスやホスト名を使って明示的に接続することは可能です。

その後、Aを復旧してからファームFに接続すると、無事Aに接続されました。

【結論】
RD接続ブローカーのセッション情報は、RDセッションホストの死活を監視せず、機械的に以前のセッションを復元しようとする。

セッションを保持する時間を制限する、管理者に依頼してセッションを強制的に切断する、といった工夫が必要なようです。

RD接続ブローカーを含め、リモートデスクトップサービスの詳細は、マイクロソフト高田祐二さんのブログ「Windows Server 2008 R2 RDS の構築・設計指針」が参考になりました。合わせてご覧ください。