(質問)
リモートデスクトップサービス接続ブローカーを使用した負荷分散の流れについて
お世話になっております。
○○と申します。
タイトルにあります、リモートデスクトップサービス接続ブローカーを使用した負荷分散の流れについてご質問させて頂きます。
セッションホストサーバー3台・接続ブローカーサーバー1台の構成でRemoteAppの利用を検証しております。
クライアントから、セッションホストサーバーへの接続後、セッションホストサーバーから接続ブローカーサーバーへの既存セッションの問合せを行うと思いますが、
その応答は、接続ブローカーサーバーからセッションホストサーバーへ送られ、セッションホストサーバーからクライアントへ応答が返るのでしょうか。
または、接続ブローカーサーバーからクライアントへ直接応答を返すのでしょうか。
以上、よろしくお願いします。
(回答)
概要はご理解されているように以下のような感じです。
[参考]
負荷分散をサポートするTSセッション・ブローカ
http://www.atmarkit.co.jp/fwin2k/winsv2008/09ts_02/09ts_02_02.html
上記資料ではリダイレクトの動作については詳しく触れられていませんが、以下によれば既定の動作である「IP アドレスのリダイレクト」と「RD 接続ブローカー ルーティング トークンのリダイレクト」という方法があるようです。
[参考]
IP アドレスとトークンのリダイレクトについて
http://technet.microsoft.com/ja-jp/library/cc732852.aspx
既定の動作である「IP アドレスのリダイレクト」の場合には、要求を受けたセッションホストが接続ブローカーに確認し、決定したセッションホストに要求をリダイレクトするとともに、クライアントにもリダイレクトメッセージの返信を行うことにより、次のパケットからクライアントと決定したセッションホストが直接通信するという、一般的なリダイレクトの仕組みを行っているのではないかと思いますが(明確な資料が見当たりませんでしたので推測ですが)。
ただ、この方法ではクライアントは接続ブローカーだけではなく、すべてのセッションホストとIPアドレスによる直接通信が出来るように、FW等の設定を行う必要があるのは間違いないと思います。
(MSのページ)
リモート デスクトップ接続ブローカー (RD 接続ブローカー) の概要
Microsoft Windows Server 2008 R2: RD 接続ブローカーを理解する
(@IT資料)
Windows Server 2008 R2によるVDI実践入門1
Windows Server 2008 R2によるVDI実践入門2
うえの資料より本文抜粋すると、おおまかな流れは以下のとおり。
(1) Hyper-V 2.0環境の構築
仮想デスクトップ(仮想マシン)をホストするための環境を作る
(2) Active Directory環境の構築
認証やユーザー・データ/プロファイルの仮想化に利用するために環境を作る
(3) リモート・デスクトップ・サービスの追加
VDIに必要な役割とそのサブ機能をインストールする
(4) RD仮想化ホスト=Hyper-Vマシンの設定
RD接続ブローカに対してHyper-Vマシンを登録する
(5) RD接続ブローカとRDセッション・ホスト(リダイレクタ)の設定
RDセッション・ホスト・サーバとRD接続ブローカを相互に登録する
(6) RD Webアクセス・サーバの登録
ポータル用のRD Webアクセス・サーバとRD接続ブローカを相互に登録する
(7) Hyper-V上での仮想デスクトップの作成
VDIにあわせて仮想マシンの作成と設定を行う
(8) 仮想マシン・プールの作成
作成した複数の仮想マシンを束ねてプール化する
http://social.technet.microsoft.com/Forums/ja-JP/windowsserver2008ja/thread/165abe64-51fa-4582-8a0c-f4fc5e8f177b
WindowsServer2008(R2)ではTSセッションブローカー(2008無印)、RD接続ブローカー(2008R2)を使うことで負荷分散ができる。冗長化は従来のNLBよりもDNSラウンドロビンが手っ取り早い。ただし、DNSラウンドロビンだと障害時の待ち時間が数十秒(?)ほど必要になるようである。
TechNet:チェックリスト: RD 接続ブローカーを使用して、負荷分散された RD セッション ホスト サーバー ファームを作成するの手順通りやれば構築できる。
一応手順概要をメモしておく。
1.モートデスクトップサービス(RDS)をインストールしたサーバを複数台用意します。
2.リモートデスクトップ接続ブローカーの役割をインストールする。(ドメインのメンバサーバである必要あり)
3.接続ブローカーをインストールしたサーバのローカルグループに、「Session Broker Computers」というのができているので、そこに各RDSサーバを追加します。(デフォルトではコンピュータが選べないようになっている。)
4.各RDSサーバをRD接続ブローカーのファームに参加させます。
サーバマネージャの[リモートデスクトップセッションホストの構成]から[設定の編集]領域の[RD 接続ブローカー内のファームのメンバー]をダブルクリックし設定画面を立ち上げます。
[設定の変更]→ [ファーム メンバー]を選択し、[RD接続ブローカーサーバー名]にRD接続ブローカーのサーバー名を入力、[ファーム名]に名前を入力します。
あとは、[接続ブローカーの負荷分散に参加する]チェックボックスをオンにし、再接続に使用するIPアドレスにチェックを入れます。
これを各RDSサーバに対して行います。
5.最後にDNSの設定をします。
DNSサーバで新しいAレコードを追加します。
ホスト名は、4.で入力した[ファーム名]にする。
IPは各RDSサーバのものを使います。
例えば、ファーム名が"nlb"で、RDSサーバが2台あってそれぞれのIPが192.168.1.31,192.168.1.32ならDNSに下記のように2レコード追加する。
nlb 192.168.1.31
nlb 192.168.1.32
さらに、Active Directory 証明書サービス(エンタープライズCA)をドメインのメンバーにインストールし負荷分散に参加した1台のノードより、インターネットインフォメーションサービス(IIS)マネージャーより、「一般名(M)」が"nlb"の 「ドメイン証明書の作成」をエンタープライズCAに対して行う。
Webサイトの「バインドの編集」でhttps(443)を編集し、「一般名(M)」が"nlb"の「ドメイン証明書」に変更する。
(作成した、ドメイン証明書は「ネットワーク共有等」にパスワード付きで、.pfx形式で「エスクポート」しておく。)
負荷分散に参加した他のノードでも、インターネットインフォメーションサービス(IIS)マネージャーより、うえで「エスクポート」した.pfx形式のドメイン証明書を「インポート」し、Webサイトの「バインドの編集」をうえと同じように行う。
RD WebアクセスでのRemote Appの利用であれば、
https://nlb/RDWeb/
でアクセスできるようになる。
[0回]
(質問)
DNSキャッシュの消失について
○○○○と申します。どうぞよろしくお願い申し上げます。
Windows7の端末にて、約1時間毎にクライアントのDNSキャッシュが消える現象が発生しています。
※OSバージョン情報: Microsoft Windows 7 Professional 6.1.7601 ServicePack ビルド7601
▼環境(値は例です)
SV1(192.168.1.1)、SV2(192.168.1.2)、SV3(192.168.1.3)という3台のサーバがあります。
DNSサーバには以下の様に3レコードを登録してDNSラウンドロビンを使用しています。
sv.local HOST(A) 192.168.1.1
sv.local HOST(A) 192.168.1.2
sv.local HOST(A) 192.168.1.3
クライアントはsv.local を指定してサーバのアプリケーションにアクセスしています。
▼現象
クライアント側に約1時間ごとにIISタイムアウトが発生し、アプリケーションの再ログオンが必要な状況になります。
現象発生前は192.168.1.1にアクセスしていたクライアントが上記事象発生直後は192.168.1.2での接続に 代わっています。
(現象発生前に、sv.local に対してpingを発行し確認)
現象発生後のクライアントで“ipconfig /displaydns”で確認したところ、キャッシュが消えていました。
流れとして、初めのアクセスは sv.local でアクセスし、DNSサーバにて名前解決され、192.168.1.1に接続されていると思われます。
その後のアクセスについては、クライアントのキャッシュに問い合わせるため同じ192.168.1.1に接続されています。
約1時間経過すると、クライアントのキャッシュが何らかの理由で消えるため、DNSに問い合わせ、ラウンドロビンされて 192.168.1.2に接続しようとしてIISタイムアウトが発生していると思われます。
暫定処置として、クライアントからサーバに接続する際に FQDN を使用せず、192.168.1.1 をURLに直接指定して アクセスすると現象は発生しません。
DNSサーバの管理者の話では、「クライアントのキャッシュを1時間でクリアする設定は特にしていない」とのことで、 キャッシュが消失してしまう原因が判りません。
本件につきまして、原因と回避策についてご教授いただきたく、お願い申し上げます。
(回答)
これは正常な動作では?
DNSキャッシュはDNSに登録されたレコードのTTL時間存在します。WindowsのDNSレコードを作成する際のデフォルトTTLは1時間なのでクライアント側でクライアントキャッシュが存在できる期間は1時間になります。
また、ラウンドロビンを使用しているということなので別のレコードになるのも正しい動作になります。
何が問題なのでしょうか?もし、特定のサーバーのみにアクセスさせたいのであればラウンドロビンを止めてしまうのがいいのではないでしょうか?
以上、参考になれば幸いです。
(@IT資料)
http://www.atmarkit.co.jp/fwin2k/win2ktips/748rrobinsrv/rrobinsrv.html
http://www.atmarkit.co.jp/fwin2k/win2ktips/749rrobincli/rrobincli.html
http://social.technet.microsoft.com/Forums/ja-JP/w7itprogeneralja/thread/e91970ed-e53b-484a-a0fc-1fffed4ba841
PR