3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(RDS)リモートデスクトップサービスで冗長化かつ負荷分散する方法

WindowsServer2003の時はターミナルサービスの冗長化をNLBクラスタを使って実現していました。

しかし、これでは負荷分散にはならずいつもどちらかのサーバのセッションが多く負荷バランスが不安定でした。

WindowsServer2008以降ではTSセッションブローカー(2008無印)、接続ブローカー(2008R2)を使うことで負荷分散ができるようです。

(冗長化は従来のNLBやロードバランサ機器も使えますが、DNSラウンドロビンがお手軽で、手っ取り早いです。ただしDNSラウンドロビンだと障害時の待ち時間が30秒ほど必要になります。)

仕組みや構成については、@IT:負荷分散をサポートするTSセッション・ブローカを見るとよくわかります。

構築の方法も簡単でした。

TechNet:チェックリスト: RD 接続ブローカーを使用して、負荷分散された RD セッション ホスト サーバー ファームを作成するの手順通りやれば構築できます。

一応手順概要をメモしておきます。

1.リモートデスクトップサービス(RDS)をインストールしたサーバを複数台用意します。

2.リモートデスクトップ接続ブローカーの役割をRDSとは別のサーバにインストールします。(ドメインのメンバサーバである必要あり)

3.接続ブローカーをインストールしたサーバのローカルグループに、「Session Broker Computers」というのができているので、そこに各RDSサーバを追加します。(デフォルトではコンピュータが選べないようになっているので注意が必要です。)

4.各RDSサーバをRD接続ブローカーのファームに参加させます。

サーバマネージャの[リモートデスクトップセッションホストの構成]から[設定の編集]領域の[RD 接続ブローカー内のファームのメンバー]をダブルクリックし設定画面を立ち上げます。

[設定の変更]→ [ファーム メンバー]を選択し、[RD接続ブローカーサーバー名]にRD接続ブローカーのサーバー名を入力、[ファーム名]に適当な名前を入力します。

あとは、[接続ブローカーの負荷分散に参加する]チェックボックスをオンにし、再接続に使用するIPアドレスにチェックを入れます。

これを各RDSサーバに対して行います。

5.最後にDNSの設定をします。

DNSサーバで新しいAレコードを追加します。

ホスト名は、4.で入力した[ファーム名]が望ましいようです。

IPは各RDSサーバのものを使います。

例えば、ファーム名が"frm"で、RDSサーバが2台あってそれぞれのIPが10.0.0.11,10.0.0.12ならDNSに下記のように2レコード追加します。

frm 10.0.0.11

frm 10.0.0.12

これで、クライアントがリモートデスクトップで frm にアクセスするとDNSラウンドロビンでどれかのRDSに接続し、そのRDSは接続ブローカーにセッションがあるかどうか確認して、セッションがあれば今まで使っていたRDSに、セッションがなければ負荷が軽いRDSにリダイレクトするようになります。

試しにRDSサーバの片方を止めてみました。認証画面が出るまで数十秒かかりますが無事にもう片方につなぎに行くようになりました。

参考:

Windows Server 2008で大幅に進化したターミナルサービスを試す【完結編】

2008R2RDS導入のポイント_v1.0.pdf MSのTechnetブログに掲載されてた情報ですが、分かりやすくまとめられているので、RDSを導入するのなら必ず読んでおくべきですね。