rss logo

How to Set Up a Windows RDS Farm

Microsoft logo

Today, Remote Desktop Services (RDS) environments are commonly used in companies. For small organizations (typically fewer than 30 users), a single server is often sufficient. However, when dealing with larger numbers of simultaneous users, performance issues may arise—even with upgraded hardware. Scaling the architecture as user demand grows can also become increasingly complex.

To implement a scalable solution capable of supporting a high number of concurrent connections, setting up an RDS farm becomes essential. This architecture separates key roles (such as the broker, license server, and session hosts) across multiple servers. It also enables load distribution by creating a pool of RD Session Host servers that can share the user load effectively. In the following article, we’ll walk through the setup process step by step.

RDS Farm Architecture

The following diagram illustrates the architecture we’ll be setting up.

Diagram showing RDS Farm architecture with user profiles, RD Session Hosts, RDS Connection Broker, and RDS Clients, including IP addresses and server names.
RDS Farm Architecture.

Installation on broker.std.local

You can deploy the RDS architecture either via the PowerShell command line or by using the graphical interface.

Installation via the Graphical Interface (GUI)

Adding Servers to Manage

  • In Server Manager, right-click on All Servers and select Add Servers:
Screenshot of Server Manager interface showing the option to add servers under the 'All Servers' menu.
  • Select and add the appropriate servers to the management console:
Screenshot showing the process of adding servers from Active Directory in Server Manager, including selecting and moving servers to the selected list.

Installation

  • Still in Server Manager, click on Manage, then select Add Roles and Features:
Screenshot of Server Manager showing the option to add roles and features from the 'Manage' menu on the local server properties page.
  • In the initial window of the wizard, click Next to continue:
Screenshot of the 'Before You Begin' page in the Add Roles and Features Wizard, with instructions and the 'Next' button highlighted.
  • Select the Remote Desktop Services installation option, then click Next:
Screenshot of the Add Roles and Features Wizard, showing the selection of the Remote Desktop Services installation type, with the 'Next' button highlighted.
  • Choose the Standard deployment option, then click Next:
Screenshot of the Add Roles and Features Wizard, showing the selection of the standard deployment type for Remote Desktop Services, with the 'Next' button highlighted.
  • Select the Session-based desktop deployment option, then click Next:
Screenshot of the Add Roles and Features Wizard, showing the selection of the session-based desktop deployment scenario for Remote Desktop Services, with the 'Next' button highlighted.
  • At the Role Services step, no changes are needed—simply click Next to proceed:
Screenshot of the Add Roles and Features Wizard, showing a review of selected role services for Remote Desktop Services, with the 'Next' button highlighted.
  • Add the RD Connection Broker server by selecting it from the server pool, then click Next:
Screenshot of the Add Roles and Features Wizard, showing the selection of the server for the Connection Broker role, with an arrow indicating the server being added and the 'Next' button highlighted.
  • Also assign the broker server the role of RD Web Access, then click Next:
Screenshot of the Add Roles and Features Wizard, showing the selection of the server for the Remote Desktop Web Access role, with an arrow indicating the server being added and the 'Next' button highlighted.
  • Add the RDS servers as RD Session Host servers by selecting them from the server pool, then click Next:
Screenshot of the Add Roles and Features Wizard, showing the selection of the Remote Desktop Session Host servers, with an arrow indicating the server being added and the 'Next' button highlighted.
  • Check the Restart the destination server automatically if required option, then click Deploy to begin the installation:
Screenshot of the Add Roles and Features Wizard, showing the confirmation of selected roles and the option to automatically restart the destination server, with the 'Deploy' button highlighted.

Installation via PowerShell

  • Install the required RDS roles using the following PowerShell command:
PS C:\> Add-WindowsFeature -Name RDS-Connection-Broker,RDS-Licensing,RDS-RD-Server -IncludeManagementTools -Restart
  • Next, initiate the deployment using PowerShell:
PS C:\> Import-Module RemoteDesktop
PS C:\> New-RDSessionDeployment -ConnectionBroker broker.std.local -WebAccessServer broker.std.local -SessionHost rds01.std.local

Post-Installation Configuration

Once the installation is complete, you’ll need to configure the RDS farm to make it fully operational.

RD Licensing (broker.std.local)

  • In Server Manager, navigate to Remote Desktop Services > Overview, then click the RD Licensing icon to add a Licensing Server:
Screenshot of Server Manager's Remote Desktop Services overview, with the RD Licensing icon highlighted.
  • Select the broker server to act as the RD Licensing server, then click Next to continue:
Add License Server Wizard in Remote Desktop Services, showing the broker server selected and the 'Next' button highlighted.
  • Review the selections, then click Add to proceed:
Confirmation screen of the Add License Server Wizard, with the 'Add' button highlighted.
  • Once the installation completes, click Close to exit the wizard:
Installation progress screen of the Add License Server Wizard, showing the 'Close' button highlighted.

Adding RD Session Host Servers

  • In the Deployment Overview pane, right-click RD Session Host and select Add RD Session Host Servers:
Deployment Overview in Server Manager with the option to add RD Session Host servers highlighted.
  • Select the additional RDS servers (e.g., RDS02 and RDS03) from the server pool, then click Next:
Wizard screen showing selection of RDS02 and RDS03 as session host servers, with 'Next' highlighted.
  • Check the option Restart the destination server automatically if required, then click Add to begin the deployment:
Confirmation screen with selected session host servers and the restart option checked, 'Add' button highlighted.
  • After the deployment completes successfully, click Close to exit the wizard:
Progress screen showing successful installation of session host servers RDS02 and RDS03, with the 'Close' button highlighted.

Setting Up the User Profile Share (rdsprofiles.std.local)

  • Right-click the User_Profiles folder and select Properties:
Context menu in Windows Explorer showing 'Properties' selected for the 'User_Profiles' folder.
  • In the Sharing tab, configure the share settings as shown below:
Windows folder sharing configuration window, with user selection, permission levels, and the 'Done' button highlighted.

Creating a Session Collection

  • In the Deployment Overview, right-click RD Session Host and select Create Session Collection:
Deployment Overview screen with the 'Create Session Collection' option highlighted.
  • On the Before You Begin page, click Next:
Start page of the Create Collection wizard, with 'Next' highlighted.
  • Enter a name for the session collection (e.g., RDSFarm), then click Next:
Collection naming step, showing 'RDSFarm' as the chosen name and the 'Next' button.
  • Select the RD Session Host servers to include in the collection, then click Next:
Selection of RD Session Host servers (RDS01, RDS02, RDS03) from the server pool.
  • Specify the user groups that should have access to the RDS farm, then click Next:
User Groups step, with 'STD\Domain Users' selected and 'Next' highlighted.
  • Define the user profile disk location using the shared folder configured earlier on rdsprofiles.std.local, then click Next:
User Profile Disks page showing the shared path '\\rdsprofiles\User_Profiles'.
  • Review the summary, then click Create to confirm and begin the deployment:
Confirmation page of the Create Collection wizard, showing collection details and the 'Create' button highlighted.
  • Once the process completes successfully, click Close to exit the wizard:
Progress page showing successful creation of the session collection, with the 'Close' button highlighted.

Adding a DNS Entry (on the AD Server)

⚠️ The new hostname must match the name of the session collection previously defined. In this example: RDSfarm ⚠️

  • Open the DNS Manager console from an Active Directory server:
Run dialog with 'dnsmgmt.msc' entered to open DNS Manager.
  • In the domain zone (e.g., std.local), right-click and select New Host (A or AAAA) to add DNS records:
DNS Manager showing the 'New Host (A or AAAA)' option under the domain.
  • Repeat this step to associate the hostname (e.g., rdsfarm.std.local) with the IP addresses of each RD Session Host server:
New Host window showing multiple IPs assigned to 'rdsfarm.std.local'.

Alternative to DNS Entry: Configuring the RDP File (Client-side)

As an alternative to using a DNS entry, you can manually specify the session collection by customizing an RDP file. The simplest way to do this is by editing the RDP shortcut in Notepad.

Notepad displaying the contents of a customized RDP file with multiple connection settings.

Once the file is open, check whether it already contains any of the following lines: loadbalanceinfo, full address, gatewayhostname, use redirection server name, or alternate full address. If they are present, delete them to avoid conflicts.

  • Then, add the following lines—replacing the highlighted values with your own collection and broker hostnames:
loadbalanceinfo:s:tsv://MS Terminal Services Plugin.1.RDSFarm
full address:s:broker.std.local
gatewayhostname:s:broker.std.local
use redirection server name:i:1
alternate full address:s:broker.std.local

Save the file and launch the RDP connection using the modified shortcut.

Client Connection

Using the DNS Entry

  • The client connects using the DNS alias rdsfarm, which points to the RDS farm. The broker will redirect the session to one of the available RD Session Host servers:
Remote Desktop Connection window with 'rdsfarm.std.local' entered in the 'Computer' field.

Alternative (without DNS Entry)

  • The client connects using the custom RDP file created earlier. This file specifies the collection and broker address manually:
Remote Desktop Connection using an RDP file with 'broker.std.local' as the destination.

Forcing a Connection to a Specific RD Session Host

By default, the RD Connection Broker distributes users across the available RD Session Host servers to balance the session load. However, as an administrator—for example, when installing software—it may be useful to connect directly to a specific host.

  • To connect directly to RDS02 (IP address: 192.168.1.201), open the Run dialog on a Windows machine and enter the following command:
mstsc /v:192.168.1.201 /admin
Run dialog with the command 'mstsc /v:192.168.1.201 /admin' entered.