MS_RDConnectionBroker - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

リモート デスクトップ接続ブローカー

概要

既存のセッションに再接続

  • ログオフせずに「RD接続」を切断しただけのセッションは、
    一時停止されているだけであり、セッションのステートをサーバに保持している。
  • このため、同一のユーザ アカウントで再度「RD 接続」することで、
    当該セッションの作業を続行することも可能である。

負荷分散と再接続

  • 最もセッション数の少ない「RDセッション ホスト」に、
    「RD 接続」をリダイレクトするという負荷分散機能も有している
    (ただし、一般的な負荷分散機能が有しているサーバ ファーム
    中のノードの死活監視機能は有していないので、注意が必要)。
  • リダイレクト先の決定は「RD セッション ホスト」の「重み」付けによって変更できる。
  • また、「RD 接続ブローカ データベース」に「RD セッション ホスト」ファームに
    「RD 接続」した際に生成されたセッションの一覧が保持されており、負荷分散機能と組合せた場合、
    新しいセッションを開始させずに、「RD セッション ホスト」ファームの前回のセッションに再接続することが可能。

補足(接続ブローカーが「ただの負荷分散」ではない理由): RDS の負荷分散が
Web サーバの負荷分散と決定的に違うのは、
セッションが特定のサーバに固定されている点にある。

【Web サーバの負荷分散】ステートレス
  要求1 → サーバA
  要求2 → サーバB    ← どこへ行ってもよい

【RDS の負荷分散】ステートフル
  初回接続 → サーバA でログオン、アプリを起動、作業中…
  切断
  再接続  → 【必ずサーバA に戻さなければならない】
             ↑ サーバB へ行くと、作業内容が消えたように見える

つまり、接続ブローカーは

機能 目的
負荷分散 新規セッションを空いているホストへ
セッションの再接続(reconnection) 切断済みセッションを持つホストへ確実に戻す

2 つを同時に行う必要がある。
そして後者の方が重要である。
単純なラウンドロビン DNS だけでは

  • 再接続時に別のホストに飛ばされ、
  • 「作業していたアプリが消えた」(実際には元のホストで生きている)

という事故が起きる。
これが「接続ブローカーが必須」とされる理由である。

なお、本文が注意している
**「ノードの死活監視機能は有していない」**という指摘は重要で、
落ちたホストにも接続を振ってしまう可能性がある。
現在は接続ブローカーの高可用性構成
(複数台+SQL Server による構成データベースの共有)と、
ホスト側の「新しい接続を許可しない」(ドレイン モード)を
組み合わせて運用する。

インストールと設定

インストール

(記載なし)

設定

「RDセッション ホスト」から「RD接続ブローカ」への接続

ラウンドロビンDNSの構築

補足(ラウンドロビン DNS の役割): 接続ブローカーがあるのに
なぜ DNS の設定も要るのか、という点が分かりにくい。
接続の流れを追うと理解できる。

① クライアントが「farm.example.jp」に接続
      ↓ ラウンドロビン DNS が「とりあえずどれか」を返す
② セッション ホストA に接続(初期接続先)
      ↓ ホストA が接続ブローカーに問い合わせる
③ 接続ブローカー「この人は前回ホストB にいた」「または今はB が空いている」
      ↓ ホストA がクライアントをホストB にリダイレクト
④ ホストB に接続(最終的な接続先)

つまり、

役割 担当
最初の入口を分散する ラウンドロビン DNS(どこでもよい)
正しいホストへ振り直す 接続ブローカー

という二段構えになっている。
ラウンドロビン DNS は負荷分散のためというより、
単一障害点を作らないための入口
として機能している。

現在の Windows Server では、この初期接続の分散に
NLBハードウェア ロード バランサを使う構成も一般的である
(DNS より切り替えが速い)。

「RDセッション ホスト」ファームへの RD接続 の確認

「RDゲートウェイ」経由での「RDセッション ホスト」ファームへの RD接続 の確認

[RDゲートウェイ]についてはリモート デスクトップ ゲートウェイを参照。

ユーザ ログオン モードによるローリング・アップグレード

補足(「ユーザ ログオン モード」がローリング アップグレードの鍵): 見出しだけで
本文が無いため、要点を補っておく。

各セッション ホストにはログオン モードという設定があり、
これを使ってサービスを止めずに 1 台ずつ更新できる。

モード 新規接続 既存セッションへの再接続
許可する
許可しない(ドレイン)
再接続も許可しない

中央のドレイン モードが要点で、

① ホストA をドレイン モードにする
     → 新規ユーザは B, C へ流れる
     → A で作業中の人はそのまま継続でき、再接続もできる
② A のセッションが自然にゼロになるのを待つ(または業務時間外に強制ログオフ)
③ A を更新して再起動
④ A を通常モードに戻し、B へ… と繰り返す

という手順になる。
利用者を追い出さずに更新できる点が価値であり、
クラウドで言えば
Azureの高可用性設計
「更新ドメイン」に相当する考え方である。

RemoteApp設定の複製

グループ・ポリシーを使用した設定

移行メモ: 「インストール」および上記のうち
「RDセッション ホスト ファームへの RD 接続の確認」「RDゲートウェイ経由での確認」
「RemoteApp 設定の複製」「グループ・ポリシーを使用した設定」の各項は、
原典でも見出しのみで本文が存在しない。


Tags: 移行, Windows, 仮想化

⚠️ **GitHub.com Fallback** ⚠️