Nowadays, it is quite common to see RDS environments in companies. Generally for smaller organizations (with fewer than 30 users) a single server is sufficient. However, in the case of a larger number of concurrent users, performance issues may arise despite increasing hardware configuration. Upgrading the architecture in case of user expansion can also become complicated.
Therefore, if you want to establish a scalable solution capable of handling a significantly high number of simultaneous connections, it becomes necessary to set up an RDS Farm. This involves segregating various services (broker, license server, session host, etc.…) across multiple servers. It also allows you to create a pool of RD Session Host servers to handle user load. In the following article, we will explore this setup in detail.
RDS Farm Architecture
Here is the architecture that we will put in place.
Install (broker.std.local)
We can either install our RDS architecture from the PowerShell command line or from the graphical interface.
Install from GUI
Add servers to managed
From Server Manager do a right click to All Servers > Add Servers :
Add Servers :
Install
Still from Server Manager go to Manage > Add Roles and Features :
At the first windows click Next :
Choose Remote Desktop Services installation :
Choose Standard deployment :
Select Session-based dektop deployment :
Simply click Next :
Add the broker server :
Also add the broker server as the RD Web Access server :
Now add the RDS servers as Hosts servers :
Check the Restart the destination box and click Deploy to install :
From Server Manager go to Remote Desktop Services > Overview and click to RD Licensing icon to add a Licensing Server :
Select the broker server as the RD Licensing server :
Click Add :
Then Close :
Adding RD Session Host Servers
From the Deployment Overview, do a right click to RD Session Host and click to Add RD Session Servers :
Add the others RDS servers :
Check the Restart remote computers box and click to Add :
Once installed we can close the Window :
Set Users Profiles Share (rdsprofiles.std.local)
Do a right click on the User_Profiles folder and go to Properties :
Then set the share as shown here :
Create Collection
From the Deployment Overview, do a right click to RD Session Host and click to Create Session Collection :
Click Next :
Give a name to the RDS Collection :
Add the RDS Servers to the Collection :
Specify the user groups that should connect to the RDS farm :
Specify the folder share that we previously set up on the RDSPROFILES server :
Click Create :
Then Close once all operations are terminated :
Add DNS entry (AD Server)
⚠️Note that the new host name should be the same as the collection name previously defined. In this example : RDSfarm⚠️
Open the DNS Manager console from an Active Directory server :
From the domain zone, add new Host (A) DNS entries :
For example with three RDS Session Host :
Alternative to DNS Entry (Client)
There is another way to inform the server about the collection we want to connect to. It involves customizing an RDP icon. The simplest way to do this is to edit a RDP file with Notepad.
Once opened, check if you already have any lines containing "loadbalanceinfo," "full address," "gatewayhostname," "use redirection server name," or "alternate full address." If any of these lines exist, remove them.
Next, add the following lines and update the information based on your own server and collection names:
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 modified file, and open the RDP icon.
Client Connection
With DNS entry
The client will use the rdsfarm dns entry to connect to one of the RDS Session Host :
Alternative, without DNS entry
The client will use the RDP icon previously created to connect to one of the RDS Session Host: