Windows ServerでRDS接続ブローカーの高可用性(HA)を構成する完全ガイド
リモートデスクトップ接続ブローカー(RD Connection Broker:RDCB)は、Windows Serverのリモートデスクトップサービス(RDS)ロールを構成する重要なコンポーネントです。RD接続ブローカーは、RDSファームサーバー間のロードバランシング(RDSファームへの接続時に、負荷が最も低いRDSホストへユーザーをリダイレクト)、VDIおよびRemoteAppsへのユーザーアクセス管理、ファーム内のRDSホスト構成の管理といった機能を提供します。さらに、RDCBはユーザーのセッション再接続も可能にします。RDSへ接続する際、RDCBはファーム内の他のサーバーに未完了のセッションがないかを確認し、以前のセッションへユーザーをリダイレクトします。
本記事では、RDCBロールを持つサーバーの1台に障害が発生しても機能を維持できる、フォールトトレラントな高可用性RD接続ブローカーインスタンスの構成方法を解説します。Remote Desktop Connection Brokerのデータ保存には、MS SQL Server 2019が稼働するデータベースサーバーを使用します。単一障害点(SPOF)を回避するため、RDCB用のSQLデータベースもフォールトトレラント構成で展開する必要があります。この例では、SQL Server Always On 可用性グループを構成した2台のSQL Serverノードを使用します。
RDS接続ブローカーHAの要件とサポートされる構成
- Windows Server 2022/2019が稼働するRD接続ブローカーロールのサーバーが最低2台必要です。
- RDCBのSQLデータベースに高可用性を使用する場合は、SQL Server 2014以降(StandardまたはEnterpriseエディション)が稼働するホストが最低2台必要です。この例では、各サーバーにスタンドアロンのMS SQL Server 2019 Enterpriseインスタンスをインストールしています。HA構成のSQLデータベースを使用しない場合は、SQL Expressの1サーバーで十分です。
- RD接続ブローカーロールを持つサーバーにSQL Server Native Clientをインストールします。
- SQLデータベースおよびSQLインストールフォルダーに対するフルコントロール権限をRD接続ブローカーのサーバーに付与します。
- ファーム内にリモートデスクトップセッションホスト(RDSH)ロールを持つサーバーが少なくとも1台必要です。
ここでは、2台のサーバーによる高可用性RDCB構成を作成します。両方のサーバーにRD接続ブローカーロールとSQL Serverをインストールします。SQL Serverデータベースの高可用性と災害復旧(DR)は、SQL Server Always On 可用性グループによって提供されます。
Windows Server 2012以降では、RDS接続ブローカーはアクティブ/アクティブモードで高可用性を提供します。このモードでは、すべてのRDCBサーバーがアクティブであり、着信接続を処理できます。これにより、大規模なリモートデスクトップ環境において高い可用性とスケーラビリティを実現できます。
リモートデスクトップ接続ブローカー向けインフラの準備
まず、RD接続ブローカーロールを持つすべてのサーバーに静的IPアドレスを割り当て、Active Directoryドメインに参加させます。
srv-rds1.woshub.com—192.168.13.20srv-rds2.woshub.com—192.168.13.21
次に、Active Directoryに新しいセキュリティグループ(MUN_RD_Connection_Brokers)を作成し、すべてのRDCBサーバーを追加します。ADUCスナップイン(dsa.msc)またはPowerShellを使用してグループを作成できます。
New-ADGroup "MUN_RD_Connection_Brokers" -path 'OU=Groups,OU=Berlin,DC=woshub,DC=com' -GroupScope Global -PassThru –Verbose
2台のRDSホストをグループに追加します。
Add-AdGroupMember -Identity "MUN_RD_Connection_Brokers" -Members srv-rds1$,srv-rds2$
DNSに、RDSファームのクラスタ名(この例ではMUNRDCB)のAレコードを作成します。DNSレコードには、すべてのRDCBサーバーのIPアドレスを含める必要があります。これにより、RD接続ブローカーサーバー間のロードバランシング(ラウンドロビン)が有効になります。以下のレコードを作成しました。
- Aレコード —
MUNRDCB.woshub.com 192.168.13.20(1台目のRDCBサーバー srv-rds1.woshub.com のIPアドレス) - Aレコード —
MUNRDCB.woshub.com 192.168.13.21(2台目のRDCBサーバー srv-rds2.woshub.com のIPアドレス)
PowerShellを使用してDNSにAレコードを作成することもできます。
Add-DnsServerResourceRecordA -Name MUNRDCB -IPv4Address 192.168.13.20 -ZoneName woshub.com
Add-DnsServerResourceRecordA -Name MUNRDCB -IPv4Address 192.168.13.21 -ZoneName woshub.com
RDCBロールを持つすべてのサーバーにSQL Server Native Clientをインストールします。SQL Server Native Clientは、MicrosoftのWebサイトからお使いのSQL Serverバージョンに対応したものをダウンロードするか、SQL Serverインストールメディア(D:\1033_ENU_LP\x64\Setup\x64\sqlncli.msi)からコピーして入手できます。
次に、SQL Server Management Studio(SSMS)を起動し、共有Connection Brokerデータベースを作成する最初のSQLサーバー(後ほどAlways On可用性グループへ移行します)に接続します。
[セキュリティ] → [ログイン]を開き、新しいログインを追加します。[検索]をクリックし、[場所]でドメインを選択し、[オブジェクトの種類]で「グループ」を指定して、ドメイングループMUN_RD_Connection_Brokersを見つけます。
そのグループに対してdbcreatorとsysadminのロールを割り当てます。
Windows DefenderファイアウォールでSQL Serverのポートを開放します(デフォルトではTCP 1433ポートがSQL Serverへの接続に使用されます)。
Windows Serverへのリモートデスクトップサービスロールのインストール
次に、サーバーにRDSロールをインストールします。サーバーマネージャーコンソールを開き、[管理] → [役割と機能の追加] → [リモートデスクトップサービスのインストール]を選択します。
[標準的な展開] → [セッションベースのデスクトップの展開]を選択します。
RD接続ブローカーロールをインストールするサーバーを1台選択します。この時点で、2台目のサーバーにRDCBロールをインストールする必要はありません。
同じサーバーにRD Webアクセスロールをインストールします。RDセッションホストロールは両方のサーバーにインストールします。
RDSロールのインストールが完了するまで待ちます。
ロールのインストール完了後、両方のサーバーのローカルRDS Management Serversグループに、RDCBホストおよび「NT AUTHORITY\NETWORK SERVICE」アカウントを追加します。
ファーム内の最初のサーバーにRD接続ブローカーロールをインストールすると、RD接続ブローカーサーバーのローカルドライブ上のC:\Windows\rdcbDb\rdcms.mdfにローカルSQLデータベースが作成されます。
このデータベースには、ファームおよびターミナルユーザーセッションに関する情報が格納されています。ローカルコンピューター上にあるため、他のRDCBサーバーはこのデータベースを利用できません。RDCBのHAを提供するには、このデータベースを他のサーバーからアクセス可能な専用SQLサーバーへ移行する必要があります。
RD接続ブローカー高可用性の展開
RDCBロールを持つ2台目のホストをファームに追加する前に、ローカルのRDCBデータベースを外部のSQL Serverへ移行しておく必要があります。
Connection Brokerデータベースをローカルデータベースから専用SQL Serverへ移動するには、サーバーマネージャーを開き、[リモートデスクトップサービス] → [概要]へ移動します。RD接続ブローカーの役割アイコンをクリックし、[高可用性の構成]を選択すると、「リモートデスクトップ接続ブローカー フェールオーバー構成ウィザード」が起動します。
次に、[専用データベースサーバー]を選択します。ローカルのRDCBデータベースを移行する先となるSQL Serverの接続設定を指定します。
以下の2つのフィールドに入力します。
- RD接続ブローカークラスターのDNS名:ラウンドロビンDNSレコードを作成済みのRDCBファームのFQDN名(この例では
MUNRDCB.woshub.com)。これは、RDPクライアントがRD接続ブローカーサーバーへ接続する際に使用するアドレスです。 - データベース接続文字列:SQL Serverデータベースへの接続文字列を指定します。形式は次のとおりです:
DRIVER=SQL Server Native Client 11.0;SERVER=<SQL Server名>;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE=<DB名>。この例でのSQL Server名はデータベースを作成するSQLサーバー名、DB名は新規データベースの名前です:DRIVER=SQL Server Native Client 11.0;SERVER=srv-rds2.woshub.com;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE=RDCB_DB
RDCBのHA構成を一度有効にすると、RDSファーム全体の構成を廃止しない限り、内部のRDCBデータベースへ戻すことはできませんのでご注意ください。
次の画面で[構成]をクリックします。
その後、SQL Server Management StudioでSQL Serverインスタンスに接続し、新しいデータベースRDCB_DBが作成されていることを確認します。
両方のRD接続ブローカーサーバーに、データベースへの書き込み権限を付与します。[データベース] → [RDCB_DB] → [セキュリティ] → [ユーザー] → [新しいユーザー]を開きます。
BUILTIN\RDS Management Serversとwoshub\MUN_RD_Connection_Brokersの2つの新しいユーザーを作成し、両方にdb_ownerとpublicの権限を付与します。
最初のサーバーに障害が発生した場合の高可用性を実現するため、現在の構成に2台目のRD接続ブローカーサーバーを追加します。
RD接続ブローカーのアイコンをクリックし、[RD接続ブローカーサーバーの追加]を選択します。
Connection Brokerロールをインストールする2台目のサーバー名を入力して[次へ]をクリックします。すると、RDSファームホストの一覧にRDCBロールを持つ2台のサーバーが表示され、「RD接続ブローカー(高可用性モード)」というメッセージも確認できます。
以上で、リモートデスクトップ接続ブローカーの高可用性構成は完了です。
RD接続ブローカーHAのためのSQL Serverフェールオーバー構成
続いて、SQLデータベースのフェールオーバー構成をセットアップします。現時点ではデータベースは1台のサーバーでのみ稼働しています。RD接続ブローカーデータベースをSQLクラスターに配置します。従来型のMicrosoftフェールオーバークラスターでも、SQL Server Always On 可用性グループでも構いません。
SQL Server 2019におけるAlways Onの基本構成については関連記事をご参照ください。ここでは主な手順のみ紹介します。
- [フェールオーバークラスタリング]機能をインストールし、任意のファイルサーバー上に監視(witness)とクォーラムを配置した2ノード構成のSQL-RDSクラスターを構築します(前述のAlways On関連記事を参照)。
- 両方のサーバーのSQL Server構成マネージャー設定で、[AlwaysOn 可用性グループの有効化]オプションを有効にします。
- 可用性グループの新規作成ウィザードを実行します。
- 可用性グループの名前を入力します(SQL-RDS)。
- 高可用性グループに配置するデータベースを選択します(RDCB_DB)。
- 2台目のSQLサーバーを高可用性グループに追加し、[自動フェールオーバー]オプションにチェックを入れます。
- [リスナー]タブで、Always Onグループ内のデータベースにクライアントが接続する際に使用する名前とIPアドレスを入力します(SQL-RDSDB-liste)。
- フェールオーバークラスターマネージャースナップイン(
FailoverClusters.SnapInHelper.msc)を開き、新しいリソースが役割一覧に表示されていることを確認します。
次に、接続ブローカーの設定で、RDCBデータベースを保持するSQLサーバーの接続文字列を変更します。RDCBの接続文字列を変更できるのはPowerShell経由のみです。
Set-RDDatabaseConnectionString [-DatabaseConnectionString] <String> [[-ConnectionBroker] <String>] [<CommonParameters>]
この例では、RDCBファームをSQLデータベースの高可用性グループへ切り替えるコマンドは次のようになります。
Set-RDDatabaseConnectionString -ConnectionBroker srv-rds1.woshub.com -DatabaseConnectionString "DRIVER=SQL Server Native Client 11.0;SERVER=SQL-RDSDB-liste;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE=RDCB_DB"
コマンドがエラーを返さなければ、問題ありません。これで、RDS接続ブロークークラスターはSQL Always On可用性グループを使用するように構成されました。
RDSファームの設定を開き、HAのために新しい接続文字列が使用されていることを確認します([タスク] → [展開プロパティの編集])。
以上で、Windows Server 2022/2019上に高可用性RDS接続ブローカーサービスが構成できました。RDSファーム内のホストの1台をシャットダウンすることで、RDCBの高可用性をテストできます。
その後は、RDSライセンスサーバーの展開、RDSHサーバーの追加、RDSコレクションのセットアップ、RemoteAppsの公開、RDS用HTML5 Webクライアントの有効化など、RDSファームの構成を進めていくことができます。
-
SSMSでSQL Serverに接続する方法を初心者向けにわかりやすく解説
こんにちは!前回の記事では、Microsoft SQL Serverのインストール手順と、SQL Serverを操作するためのインターフェースツールであるSSMS(SQL Server Management Studio)についてご紹介しました。 今回はその続きとして、SSMSからSQL Serverに接続する具体的な手順を、画像付きでわかりやすく解説していきます。それでは早速始めましょう! #1. SQL Server Management Studioを起動する ステップ1:まずはSSMSを起動します。起動方法はいくつかありますが、タスクバーの検索機能を使うか、デスクトップにショートカット
-
SQL ServerデータベースをAWS RDSインスタンスへ移行する方法
本記事では、オンプレミス(またはAmazon EC2やAzure上)でホストされているMicrosoft® SQL Server®データベースを、Amazon Relational Database Service(RDS)へ移行する方法を解説します。移行の基本的な流れは、SQLデータベースをAWS S3バケットにバックアップし、そのS3バケットからAWS RDSインスタンス上にデータベースを復元するというものです。 はじめに 以前のAmazon RDSインスタンスでは、.bakファイルからのデータ復元がサポートされていませんでした。そのため、ユーザーはAmazon Data Migratio