Remote Desktop Connection Broker (RDCB) là một thành phần của vai trò Remote Desktop Services (RDS) trong Windows Server. RD Connection Broker cho phép bạn cân bằng tải các máy chủ RDS farm (khi kết nối đến farm RDS, người dùng được chuyển hướng đến máy chủ RDS ít tải nhất), cung cấp quyền truy cập người dùng vào VDI và RemoteApps, quản lý cấu hình máy chủ RDS trong farm. Ngoài ra, RDCB cho phép người dùng kết nối lại phiên của họ: khi kết nối đến RDS, RDCB kiểm tra xem có phiên chưa hoàn thành nào trên các máy chủ khác của farm không và chuyển hướng họ đến phiên trước đó.
Trong bài viết này, chúng tôi sẽ chỉ cách cấu hình một thể hiện RD Connection Broker có sẵn sàng cao (high availability) chịu lỗi, duy trì các tính năng của nó trong trường hợp một trong các máy chủ với vai trò RDCB gặp sự cố. Máy chủ cơ sở dữ liệu chạy MS SQL Server 2019 sẽ được dùng để lưu trữ dữ liệu Remote Desktop Connection Broker. Để tránh điểm lỗi đơn lẻ, cơ sở dữ liệu SQL của RDCB cũng nên được triển khai trong cấu hình chịu lỗi. Trong ví dụ này, chúng ta sẽ sử dụng hai node SQL Server với nhóm sẵn sàng Always On (SQL Always On Availability Group) được cấu hình.
Yêu cầu và cấu hình được hỗ trợ cho RD Connection Broker High Availability:
- Ít nhất 2 máy chủ với vai trò RD Connection Broker chạy Windows Server 2022/2019;
- Nếu bạn muốn dùng high availability cho cơ sở dữ liệu SQL của RDCB, bạn sẽ cần ít nhất 2 máy chủ với SQL Server 2014 trở lên (phiên bản Standard hoặc Enterprise). Trong ví dụ này, chúng ta đã cài đặt instance MS SQL Server 2019 Enterprise độc lập trên từng máy chủ. Nếu bạn không định dùng HA cho database SQL, một máy chủ với SQL Express là đủ;
- Cài đặt SQL Server Native Client trên các máy chủ với vai trò RD Connection Broker;
- Cấp quyền kiểm soát đầy đủ đối với cơ sở dữ liệu SQL và thư mục cài đặt SQL cho máy chủ RD Connection Broker;
- Ít nhất một máy chủ với vai trò Remote Desktop Session Host trong farm.
Chúng ta sẽ tạo cấu hình RDCB có sẵn sàng cao của hai máy chủ. Cả hai đều sẽ có vai trò RD Connection Broker và SQL Server cài đặt. Sẵn sàng cao và khôi phục thảm họa của cơ sở dữ liệu SQL Server sẽ được cung cấp bởi nhóm sẵn sàng Always On của SQL Server.

Kể từ Windows Server 2012 trở lên, RDS Connection Broker cung cấp high availability ở chế độ Active/Active. Trong chế độ này, tất cả máy chủ RDCB đều hoạt động và có thể xử lý các kết nối đến. Nó cho phép cung cấp sẵn sàng cao và khả năng mở rộng RDCB trong môi trường Remote Desktop lớn.
Chuẩn bị hạ tầng cho Remote Desktop Connection Broker
Gán địa chỉ IP tĩnh cho tất cả máy chủ với vai trò RD Connection Broker và tham gia chúng vào domain Active Directory của bạn.
srv-rds1.woshub.com—192.168.13.20srv-rds2.woshub.com—192.168.13.21
Tạo một nhóm bảo mật mới trong Active Directory (MUN_RD_Connection_Brokers) và thêm tất cả máy chủ RDCB vào nó. Bạn có thể tạo nhóm bằng snap-in ADUC (dsa.msc) hoặc bằng PowerShell:
New-ADGroup "MUN_RD_Connection_Brokers" -path 'OU=Groups,OU=Berlin,DC=woshub,DC=com' -GroupScope Global -PassThru –Verbose
Thêm hai máy chủ RDS vào nhóm:
Add-AdGroupMember -Identity "MUN_RD_Connection_Brokers" -Members srv-rds1$,srv-rds2$

Tạo bản ghi A cho tên cụm của farm RDS của bạn (trong ví dụ của chúng ta là MUNRDCB) trong DNS. Bản ghi DNS phải chứa địa chỉ IP của tất cả máy chủ RDCB. Nó cho phép cân bằng tải (Round Robin) giữa các máy chủ RD Connection Broker. Tôi đã tạo các mục sau:
- A —
MUNRDCB.woshub.com 192.168.13.20(địa chỉ IP của máy chủ RDCB đầu tiên — srv-rds1.woshub.com) - A —
MUNRDCB.woshub.com 192.168.13.21(địa chỉ IP của máy chủ RDCB thứ hai — srv-rds2.woshub.com)
Bạn có thể tạo bản ghi A trong DNS bằng PowerShell:
Add-DnsServerResourceRecordA -Name MUNRDCB -IPv4Address 192.168.13.20 -ZoneName woshub.com
Add-DnsServerResourceRecordA -Name MUNRDCB -IPv4Address 192.168.13.21 -ZoneName woshub.com

Cài đặt SQL Server Native Client trên tất cả máy chủ với vai trò RDCB. Bạn có thể tải SQL Server Native Client cho phiên bản SQL Server của bạn từ trang web Microsoft hoặc sao chép từ hình ảnh cài đặt SQL Server (D:\1033_ENU_LP\x64\Setup\x64\sqlncli.msi).

Sau đó chạy SQL Server Management Studio và kết nối với máy chủ SQL đầu tiên, nơi cơ sở dữ liệu Connection Broker chung sẽ được tạo (sau này chúng ta sẽ chuyển nó sang nhóm sẵn sàng Always On high availability).
Mở Security -> Logins để thêm login mới. Nhấn Search, chọn domain của bạn trong Locations, đặt Object Types = Groups, và tìm nhóm domain MUN_RD_Connection_Brokers.

Gán vai trò dbcreator và sysadmin cho nhóm.

Mở cổng SQL Server trong Windows Defender Firewall (mặc định, cổng TCP 1433 được dùng để kết nối đến SQL Server).
Cài đặt vai trò Remote Desktop Services trên Windows Server
Sau đó bạn phải cài đặt vai trò RDS trên máy chủ của mình. Mở bảng điều khiển Server Manager, chọn Manage -> Add roles and Features -> Remote Desktop Services Installation.

Cài đặt vai trò RDS trên máy chủ độc lập được mô tả trong bài viết này.
Chọn Standard deployment -> Session-based desktop deployment.

Chọn một máy chủ bạn muốn cài đặt vai trò RD Connection Broker. Bạn không cần cài đặt vai trò RDCB trên máy chủ thứ hai ngay bây giờ.

Cài đặt vai trò RD Web Access trên cùng máy chủ. Cài đặt vai trò RD Session Host trên cả hai máy chủ.

Đợi cài đặt vai trò RDS hoàn tất.

Khi bạn đã cài đặt xong các vai trò, hãy thêm tài khoản máy chủ RDCB và 'NT AUTHORITY\NETWORK SERVICE' vào nhóm cục bộ RDS Management Servers trên cả hai máy chủ.

Trong quá trình cài đặt vai trò RD Connection Broker trên máy chủ đầu tiên trong farm, một cơ sở dữ liệu SQL cục bộ sẽ được tạo trong C:\Windows\rdcbDb\rdcms.mdf trên ổ cứng cục bộ của máy chủ RD Connection Broker.

Cơ sở dữ liệu này lưu trữ thông tin về farm và phiên người dùng terminal. Vì nó nằm trên máy tính cục bộ, các máy chủ RDCB khác sẽ không thể sử dụng nó. Để cung cấp RDCB HA, bạn phải chuyển nó sang máy chủ SQL chuyên dụng nơi các máy chủ khác có thể truy cập.
Triển khai RD Connection Broker High Availability
Trước khi thêm máy chủ thứ hai với vai trò RD Connection Broker vào farm, bạn phải di chuyển cơ sở dữ liệu RDCB cục bộ sang máy chủ SQL chuyên dụng.
Để chuyển cơ sở dữ liệu Connection Broker từ cơ sở dữ liệu cục bộ sang máy chủ SQL chuyên dụng, mở Server Manager -> Remote Desktop Services -> Overview. Để chạy Remote Desktop Connection Broker Failover Configuration Wizard, nhấp vào hình ảnh vai trò RD Connection Broker và chọn Configure High Availability.

Sau đó chọn Dedicated Database Server. Chỉ định cài đặt kết nối SQL Server mà cơ sở dữ liệu RDCB cục bộ sẽ được chuyển.
Điền hai trường:
- DNS name for the RD Connection Broker Cluster: tên FQDN của farm RDCB chúng ta đã tạo bản ghi DNS Round Robin (trong ví dụ của chúng ta là
MUNRDCB.woshub.com). Đây là địa chỉ mà client RDP sẽ sử dụng khi kết nối đến máy chủ RD Connection Broker; - Database Connection String – chỉ định chuỗi kết nối đến cơ sở dữ liệu SQL Server. Đây là định dạng chuỗi:
DRIVER=SQL Server Native Client 11.0;SERVER=<SQL Server Name>;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE=<DB Name>Trong ví dụ này, SQL Server Name là tên máy chủ SQL bạn muốn tạo cơ sở dữ liệu, và DB Name là tên cơ sở dữ liệu mới của bạn:DRIVER=SQL Server Native Client 11.0;SERVER=srv-rds2.woshub.com;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE=RDCB_DB

Sau khi cấu hình HA của RD Connection Broker được bật, bạn sẽ không thể quay lại cơ sở dữ liệu RDCB nội bộ mà không phải hủy cấu hình toàn bộ farm RDS.
Nhấn Configure ở bước tiếp theo.
Sau đó kết nối với instance SQL Server của bạn bằng SQL Management Studio và đảm bảo cơ sở dữ liệu mới RDCB_DB đã được tạo.

Cấp cho cả hai máy chủ RD Connection Broker quyền ghi vào cơ sở dữ liệu. Mở Database -> RDCB_DB -> Security -> Users -> New user.
Tạo hai user mới: BUILTIN\RDS Management Servers và woshub\MUN_RD_Connection_Brokers. Cấp cả hai quyền db_owner và public.

Để cung cấp high availability trong trường hợp máy chủ đầu tiên gặp sự cố, thêm máy chủ RD Connection Broker thứ hai vào cấu hình hiện tại.
Nhấp vào biểu tượng RD Connection Broker và chọn Add RD Connection Broker Server.

Nhập tên máy chủ thứ hai bạn muốn cài đặt vai trò Connection Broker và nhấn Next. Sau đó hai máy chủ với vai trò RDCB sẽ xuất hiện trong danh sách máy chủ farm RDS. Bạn cũng sẽ thấy thông báo RD Connection Broker (High Available Mode).
Điều này hoàn tất cấu hình High Availability của Remote Desktop Connection Broker.

Cấu hình Failover SQL Server cho RD Connection Broker HA
Sau đó thiết lập cấu hình failover của cơ sở dữ liệu SQL. Trong khi đó, nó chỉ chạy trên một máy chủ. Đặt cơ sở dữ liệu RD Connection Broker vào cụm SQL. Nó có thể là cụm Failover truyền thống của Microsoft hoặc nhóm sẵn sàng Always On của SQL Server.
Cấu hình Always On cơ bản trong SQL Server 2019 được mô tả trong bài viết này. Chúng tôi chỉ trình bày các bước chính ở đây:
- Cài đặt vai trò Failover Clustering và xây dựng cụm SQL-RDS của hai máy chủ RDCB với witness và quorum trên bất kỳ file server nào (được mô tả trong bài viết về Always On được đề cập ở trên);
- Bật tùy chọn Enable Always On Availability Groups trong cài đặt SQL Server Configuration Manager trên cả hai máy chủ;

- Chạy New Availability Group Wizard;
- Nhập tên của Availability Group (SQL-RDS);
- Chọn cơ sở dữ liệu bạn muốn đặt vào nhóm high availability của bạn (RDCB_DB);

- Thêm máy chủ SQL thứ hai vào nhóm high availability và kiểm tra tùy chọn Automatic Failover;

- Trên tab Listener, nhập tên và địa chỉ IP mà client sẽ dùng để kết nối đến cơ sở dữ liệu trong nhóm Always On của bạn (SQL-RDSDB-liste);

- Mở snap-in Failover Cluster Manager (
FailoverClusters.SnapInHelper.msc) và đảm bảo tài nguyên mới đã xuất hiện trong danh sách vai trò.
Sau đó thay đổi chuỗi kết nối cho máy chủ SQL với cơ sở dữ liệu RDCB trong cài đặt Connection Broker. Bạn chỉ có thể thay đổi chuỗi kết nối RDCB qua PowerShell:
Set-RDDatabaseConnectionString [-DatabaseConnectionString] <String> [[-ConnectionBroker] <String>] [ <CommonParameters>]
Trong ví dụ của tôi, lệnh để chuyển farm RDCB sang nhóm sẵn sàng Always On của cơ sở dữ liệu SQL trông như sau:
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"

Nếu lệnh không trả về lỗi, thì mọi thứ ổn. Bây giờ cụm RDS Connection Broker của bạn được cấu hình để sử dụng nhóm sẵn sàng Always On của SQL.
Mở cài đặt farm RDS của bạn và đảm bảo chuỗi kết nối mới được dùng cho HA (Tasks -> Edit Deployment Properties).

Vậy là chúng ta đã tạo dịch vụ RDS Connection Broker có sẵn sàng cao trên Windows Server 2022/2019. Bạn có thể kiểm tra high availability của RDCB bằng cách tắt một trong các máy chủ trong farm RDS.
Sau đó bạn có thể tiếp tục cấu hình farm RDS của mình, triển khai máy chủ cấp phép RDS, thêm máy chủ RDSH, thiết lập collection RDS, phát hành RemoteApps, bật HTML5 web client cho RDS, v.v.