Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

Windows Server RDS 연결 브로커(RD Connection Broker) 고가용성 구성 완벽 가이드

원격 데스크톱 연결 브로커(RD Connection Broker, RDCB)는 Windows Server의 원격 데스크톱 서비스(RDS) 역할을 구성하는 핵심 구성 요소입니다. RD 연결 브로커는 다음과 같은 기능을 제공합니다.

  • RDS 팜 서버 간 부하 분산(Load Balancing): 사용자가 RDS 팜에 접속하면 부하가 가장 적은 RDS 호스트로 자동 리디렉션됩니다.
  • VDI 및 RemoteApp에 대한 사용자 접근 관리
  • 팜 내 RDS 호스트 구성 관리
  • 세션 재연결(Reconnect): 사용자가 다시 접속할 때 팜 내 다른 서버에 미완료 세션이 있는지 확인하고 기존 세션으로 안내합니다.

이 글에서는 RDCB 역할이 설치된 서버 중 하나에 장애가 발생해도 서비스가 지속되도록 고가용성(High Availability) RD 연결 브로커를 구성하는 방법을 단계별로 살펴봅니다. 연결 브로커 데이터를 저장하기 위해 MS SQL Server 2019 데이터베이스 서버를 사용하며, 단일 장애점(Single Point of Failure)을 방지하기 위해 SQL Always On 가용성 그룹(Availability Group)으로 구성된 두 대의 SQL Server 노드를 활용합니다.

RDCB 고가용성 구성 요건

RD 연결 브로커 고가용성을 구성하려면 다음 요건을 충족해야 합니다.

  • Windows Server 2022/2019가 실행되는 RDCB 역할 서버 최소 2대
  • RDCB SQL 데이터베이스에 고가용성을 적용하려면 SQL Server 2014 이상(Standard 또는 Enterprise Edition)이 설치된 호스트 최소 2대 필요 — 본 예제에서는 각 서버에 독립형(standalone) MS SQL Server 2019 Enterprise 인스턴스를 설치했습니다. SQL DB 고가용성이 필요 없다면 SQL Express 한 대면 충분합니다.
  • RDCB 역할 서버에 SQL Server Native Client 설치
  • RDCB 서버들에게 SQL 데이터베이스와 SQL 설치 폴더에 대한 전체 제어 권한 부여
  • 팜 내 원격 데스크톱 세션 호스트(RDSH) 역할 서버 최소 1대

여기서는 RDCB 역할과 SQL Server가 모두 설치된 두 대의 서버로 고가용성 RDCB 환경을 구축하며, SQL 데이터베이스의 고가용성과 재해 복구(DR)는 SQL Server Always On 가용성 그룹이 담당합니다.

Windows Server 2012부터 RDS 연결 브로커는 액티브/액티브(Active/Active) 모드로 고가용성을 제공합니다. 이 모드에서는 모든 RDCB 서버가 활성 상태로 수신 연결을 처리할 수 있어, 대규모 원격 데스크톱 환경에서 높은 가용성과 확장성을 동시에 확보할 수 있습니다.

1단계: RDCB를 위한 인프라 준비

RDCB 역할을 실행할 모든 서버에 고정 IP를 할당하고 Active Directory 도메인에 가입시킵니다.

  • srv-rds1.woshub.com192.168.13.20
  • srv-rds2.woshub.com192.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

두 대의 RDS 호스트를 그룹에 추가합니다.

Add-AdGroupMember -Identity "MUN_RD_Connection_Brokers" -Members srv-rds1$,srv-rds2$

DNS에 RDS 팜 클러스터 이름(예제에서는 MUNRDCB)에 대한 A 레코드를 생성합니다. DNS 레코드에는 모든 RDCB 서버의 IP 주소가 포함되어야 하며, 이를 통해 RD 연결 브로커 서버 간 라운드 로빈(Round Robin) 부하 분산이 가능해집니다.

  • A — MUNRDCB.woshub.com → 192.168.13.20 (첫 번째 RDCB 서버 srv-rds1.woshub.com)
  • A — MUNRDCB.woshub.com → 192.168.13.21 (두 번째 RDCB 서버 srv-rds2.woshub.com)

PowerShell로 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를 설치합니다. Microsoft 웹 사이트에서 해당 SQL Server 버전용 Native Client를 다운로드하거나, SQL Server 설치 이미지(D:\1033_ENU_LP\x64\Setup\x64\sqlncli.msi)에서 복사할 수 있습니다.

이후 SQL Server Management Studio(SSMS)를 실행하여 첫 번째 SQL 서버에 접속합니다. 이 서버에는 공유 Connection Broker 데이터베이스가 생성되며, 나중에 Always On 고가용성 그룹으로 이전하게 됩니다.

보안(Security) → 로그인(Logins)에서 새 로그인을 추가합니다. [검색]을 클릭하고 [위치(Locations)]에서 도메인을 선택한 뒤, [개체 유형(Object Types)] = Groups로 설정하고 도메인 그룹 MUN_RD_Connection_Brokers를 찾아 추가합니다.

해당 그룹에 dbcreatorsysadmin 역할을 할당합니다.

마지막으로 Windows Defender 방화벽에서 SQL Server 포트를 엽니다. 기본적으로 SQL Server 접속에는 TCP 1433 포트가 사용됩니다.

2단계: Windows Server에 RDS 역할 설치

서버 관리자(Server Manager) 콘솔을 열고 [관리(Manage)] → [역할 및 기능 추가(Add Roles and Features)] → 원격 데스크톱 서비스 설치(Remote Desktop Services Installation)를 선택합니다.

표준 배포(Standard deployment)세션 기반 데스크톱 배포(Session-based desktop deployment)를 선택합니다.

RD 연결 브로커 역할을 설치할 첫 번째 서버를 지정합니다. 이 시점에서는 두 번째 서버에 RDCB 역할을 설치할 필요가 없습니다.

같은 서버에 RD 웹 액세스(RD Web Access) 역할을 설치하고, RD 세션 호스트(RD Session Host) 역할은 두 서버 모두에 설치합니다.

RDS 역할 설치가 완료되기를 기다린 후, 두 서버 모두의 로컬 RDS Management Servers 그룹에 RDCB 호스트 계정과 'NT AUTHORITY\NETWORK SERVICE' 계정을 추가합니다.

팜의 첫 번째 서버에 RD 연결 브로커 역할을 설치하는 과정에서, 해당 서버의 로컬 드라이브 C:\Windows\rdcbDb\rdcms.mdf 경로에 로컬 SQL 데이터베이스가 생성됩니다.

이 데이터베이스에는 팜 정보와 터미널 사용자 세션 정보가 저장됩니다. 하지만 로컬 컴퓨터에 위치하기 때문에 다른 RDCB 서버는 이를 사용할 수 없습니다. 따라서 RDCB 고가용성을 구현하려면 이 데이터베이스를 다른 서버들이 접근할 수 있는 전용 SQL 서버로 이전해야 합니다.

3단계: RD 연결 브로커 고가용성 배포

두 번째 RDCB 호스트를 팜에 추가하기 전에, 먼저 로컬 RDCB 데이터베이스를 외부 SQL Server로 마이그레이션해야 합니다.

서버 관리자 → 원격 데스크톱 서비스 → 개요(Overview)로 이동한 뒤, RD 연결 브로커 역할 아이콘을 클릭하고 Configure High Availability(고가용성 구성)를 선택하여 마법사를 실행합니다.

Dedicated Database Server(전용 데이터베이스 서버)를 선택하고, 로컬 RDCB 데이터베이스가 이전될 SQL Server 연결 설정을 입력합니다. 다음 두 필드를 작성합니다.

  • RD 연결 브로커 클러스터의 DNS 이름: 라운드 로빈 DNS 레코드를 만들어 둔 RDCB 팜의 FQDN(예제에서는 MUNRDCB.woshub.com). RDP 클라이언트가 RD 연결 브로커 서버에 접속할 때 사용하는 주소입니다.
  • 데이터베이스 연결 문자열(Database Connection String): SQL Server 데이터베이스 연결 문자열입니다. 형식은 다음과 같습니다.
    DRIVER=SQL Server Native Client 11.0;SERVER=<SQL Server Name>;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE=<DB Name>
    예제에서는 다음과 같습니다.
    DRIVER=SQL Server Native Client 11.0;SERVER=srv-rds2.woshub.com;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE=RDCB_DB

주의: RD 연결 브로커 HA 구성을 활성화한 이후에는, RDS 팜 구성 전체를 해체하지 않는 한 내장(internal) RDCB 데이터베이스로 되돌릴 수 없습니다.

[Configure]를 클릭해 진행한 뒤, SSMS에서 SQL Server 인스턴스에 접속하여 새 데이터베이스 RDCB_DB가 생성되었는지 확인합니다.

두 RD 연결 브로커 서버 모두 데이터베이스에 대한 쓰기 권한을 부여합니다. [데이터베이스(Database)] → [RDCB_DB] → [보안(Security)] → [사용자(Users)] → [새 사용자(New user)]로 이동하여 다음 두 사용자를 생성하고 각각 db_ownerpublic 권한을 부여합니다.

  • BUILTIN\RDS Management Servers
  • woshub\MUN_RD_Connection_Brokers

첫 번째 서버에 장애가 발생해도 서비스가 유지되도록, 현재 구성에 두 번째 RD 연결 브로커 서버를 추가합니다. RD 연결 브로커 아이콘을 클릭하고 Add RD Connection Broker Server를 선택합니다.

Connection Broker 역할을 설치할 두 번째 서버의 이름을 입력하고 [다음]을 클릭합니다. 그러면 RDS 팜 호스트 목록에 RDCB 역할의 두 서버가 표시되고, RD Connection Broker (High Available Mode) 메시지를 확인할 수 있습니다. 이것으로 원격 데스크톱 연결 브로커의 고가용성 구성이 완료됩니다.

4단계: RDCB HA를 위한 SQL Server 장애 조치(Failover) 구성

이제 SQL 데이터베이스의 장애 조치(failover) 구성을 설정합니다. 현재 데이터베이스는 한 대의 서버에서만 실행 중이므로, RD 연결 브로커 데이터베이스를 SQL 클러스터에 배치해야 합니다. 클래식 Microsoft 장애 조치 클러스터(MSCS) 또는 SQL Server Always On 고가용성 그룹 중 하나를 사용할 수 있습니다.

SQL Server 2019의 기본적인 Always On 구성 절차 중 핵심 단계는 다음과 같습니다.

  1. 장애 조치 클러스터링(Failover Clustering) 기능을 설치하고, 파일 서버에 감시 노드(Witness)와 쿼럼(Quorum)을 구성하여 두 RDCB 호스트로 SQL-RDS 클러스터를 구축합니다.
  2. 두 서버 모두 SQL Server Configuration Manager에서 Enable Always On Availability Groups 옵션을 활성화합니다.
  3. 새 가용성 그룹 마법사(New Availability Group Wizard)를 실행합니다.
  4. 가용성 그룹 이름을 입력합니다(예: SQL-RDS).
  5. 고가용성 그룹에 배치할 데이터베이스(RDCB_DB)를 선택합니다.
  6. 두 번째 SQL 서버를 가용성 그룹에 추가하고 Automatic Failover(자동 장애 조치) 옵션을 체크합니다.
  7. Listener(수신기) 탭에서 클라이언트가 Always On 그룹의 데이터베이스에 접속할 때 사용할 이름과 IP 주소를 입력합니다(예: SQL-RDSDB-liste).
  8. 장애 조치 클러스터 관리자(Failover Cluster Manager) 스냅인을 열어 새 리소스가 역할 목록에 나타나는지 확인합니다.

마지막으로 연결 브로커 설정에서 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 팜 설정([작업(Tasks)] → [배포 속성 편집(Edit Deployment Properties)])을 열어 HA를 위한 새 연결 문자열이 적용되었는지 확인합니다.

이상으로 Windows Server 2022/2019에서 고가용성 RDS 연결 브로커 서비스 구축을 완료했습니다. RDS 팜의 호스트 중 하나를 종료하여 RDCB 고가용성이 정상 동작하는지 테스트해 볼 수 있습니다.

이후에는 RDS 라이선싱 서버 배포, RDSH 서버 추가, RDS 컬렉션 설정, RemoteApp 게시, HTML5 웹 클라이언트 활성화 등 RDS 팜 구성을 계속 진행하면 됩니다.