Building a 2008 R2 RDS Load Balanced Farm with RD Connection Broker

You just installed additional RD Session Host servers, because of the increase of the remote users. But now you have a problem: what if one of those servers fails, or need maintenance ? you will need to inform the users that there is problem with the server, and until is resolved they can connect to another one to do their work, and send them the address. And again, when the server is up inform the same users that they can connect back using the previous server name. Believe me they are not going to be happy, and neither will you. You can however install the RD Connection Broker role and do load balancing, so every time a server is offline users are automatically redirected to a working one; off course they will lose their connection, but they can resume work once they reconnect. Plus you can configure the Broker server to balance the load on the RD Session Host servers; meaning if a RD Session Host server is small on resources, that server should get fewer connections. Pretty smart, and if you want more information about the RD Connection Broker you can go to this Microsoft website.

For this lab I have two RD Session Host servers and one RD Connection Broker server joined to a Windows domain. Everything runs on Windows Server 2008 R2.

To start we need to add the RD Session Host computers accounts to the Session Broker Computers local group on the RD Connection Broker server. I created a security group where I added my two RD Session Host servers, and then I added this security group to the Session Broker Computers local group; is just my way of working, because I don’t like to just drop a bunch of users or computers on a server’s group.

     

Now we need to configure the RD Session Host servers to join/create the farm. On one of the RD Session Host machines open Remote Desktop Session Host Configuration console from Administrative Tools > Remote Desktop Services and double-click Member of Farm in RD Connection Broker (you can also choose right-click then Properties).

Click the Change Settings button.

On the RD Connection Broker Settings window select the Farm member radio button. Now the bellow boxes are available. In the RD Connection Broker Server name box type the name of your RD Connection Broker server. In the Farm Name box type the name you want for the farm; no spaces.

Back on the Session Host Properties page, check the box Participate in Connection Broker Load-Balancing. This is if you want to balance the load among your RD Session Host servers; and you can give it a relative weight. The smaller the number in the box (Relative weight of this server in the farm) the fewer connections the Session Host server(s) will get. This is great if you have hosts with fewer resources than the other ones in the farm. Make sure you use IP Redirection (Use IP address redirection (recommended)) then in the Select IP addresses to be used for reconnection section, check the box of each IP address that you want to use. Repeat this steps on every RD Session Host server that you want to be part of the farm.

On the Session Host Configuration console a Yes should appear under RD Connection Broker.

Let’s see if our farm was created. On the RD Session Broker server open Remote Desktop Service Manager from Administrative Tools > Remote Desktop Services. Right click the Remote Desktop Service Manager object and choose Import from RD Connection Broker. In the box type the name of your RD Session Broker server and click OK.

     

Now you should see your farm and all the RD Session Host servers members joined to farm.

Is time to configure some DNS entries. A records need to be created for every RD Session Host server IP in the farm. In your DNS server console, right-click your DNS zone name and choose New Host (A or AAA).

In the Name box type the name of your RD Farm, the one you just created. In the IP address box type the IP from one of your RD Session Host servers. Repeat this step for every IP of the RD Session Host servers in the farm, but put the same farm name in the Name box.

     

Now is time to test all this and see if it works. I will use an RDP connection, because right now I don’t have any applications published on those RD Session Host servers. When the client will initiate a remote desktop session to the farm (RDWeb or RDP), the client will perform a DNS lookup and receive an IP address for one of the servers in the farm. When another client connects, the DNS server will cycle through the addresses that are associated with the farm (DNS round-robin), and direct the client to another RD Session Host server, thus load balancing the initial connections to the farm. DNS round-robin is not load balancing it only spread out the initial connections. Once the client makes its connection to an RD Session Host server, the actual Connection Broker load balancing kicks in. When the client is referred to the RDS server via the farm name, the RDS server will query the Connection Broker server to determine how to handle the connection.

From a client open the RD client and type the name of the farm in the Computer box. Click Connect then provide the necessary credentials to connect.

As you can see the first user was redirected to Server-Host1 in my farm. On the second screen I’ve made a connection using another user. He was redirected to the second RD Session Host server. If you want those certificate errors to disappear you need to replace the self-signed certificate on the RD Session Host servers. You can further test this by modifying the weight of the connection on the RD Session Host server(s).

     

Want content like this delivered right to your

email inbox?


27 thoughts on “Building a 2008 R2 RDS Load Balanced Farm with RD Connection Broker

  • 22/06/2016 at 01:32
    Permalink

    Hi

    I dont want to hijack this post but I was wondering if someone can help with some ideas. I cant seem to find the answer for my scenario.

    I have successfully configure the RDS farm with 3 Host server and one TS broker. All works great and had no issues since 2013.

    It made sense that time that there was no need to face the rds farm to the “public” and we have created a separate terminal server for the few remote users that we had.
    Now, that number has grown and it will grow even bigger and I would like to setup a Remote Desktop Gateway that will send all the traffic to the already created internal TS farm.

    How would I go about sending the remote sessions to the internal ts farm ?

    Reply
  • 14/06/2016 at 15:47
    Permalink

    Hi Adrian..

    great write up…

    I’ve setup 2 session host servers:
    1. session host A has (calculator.exe) publish as remote app.
    2. session host b has (paint.exe) publish as remote app

    I’ve setup a RD Farm on a Connection Broker server and configured it as in your write up

    i’ve configure dns as pointed out in your article

    If I RDP into the farm (myRdFarm) it works great.

    however:

    when I connect to the RD Farm (https://myRdFarm/RDweb)

    I only see 1 of the app publish (calculator.exe) but not paint. but randomly sometimes I’ll see (paint.exe) and not (calc.exe)

    How can I get both of the publish app to show in the remote app programs list. what am i missing here..

    thanks for any help

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

*

css.php