Microsoft put many efforts to improve the Remote Desktop Services (formerly known as Terminal Services) features in the latest releases. With Windows 2008R2 many improvements are made and the product is getting closer to the third party add-on product like Citrix XenApp. RemoteApps, plug-n-play devices, audio/video playback and recording are some examples of supported features. In the earlier days the lack of load balancing the users between more RD servers was one the big disadvantages. Nowadays the load balancing feature in Windows 2008R2 is comparable with most (smaller) 3party add-ons, however the Citrix Load Balancing is still much more flexible and offers most more configuration settings. The current Microsoft implementation (RD Broker) is by default a single point of failure and within Microsoft technologies this can only be adjusted by using Clustering Services . Implementing Clustering services is a difficult and costly implementation for only create a fault tolerant solution for the RD Broker.
Happily there is an alternative without buying a third party product by using hardware load balancers. Such a solution can also be considered for the still much used and implemented Windows 2003 Terminal Services, where the session broker service is not that sophisticated as in Windows 2008 R2. Logically there are several hardware load balancers available, but most solutions are also expensive. The Kemp Load Balancers are really affordable and besides the offer fully integrated load balancing for RDS/TS. I implemented those load balancers for one of my customers and I will describe the real life experiences of the implementation and usage of this solution.
The Kemp Load Balancers are fully prepared for load balancing Terminal Services and offer several features for the best user experience. First of all the Kemp Load Balancers supports reconnecting to a disconnect session. There is a possibility to use the RD Broker (formerly known as Session Broker) to provide this information or use the persistence option available in the load balancer. The load balancer caches the user information (to which server the user is redirected). As long as the persistence time-out is not passed the user will be redirected to the disconnect session. Logically you should configure this time-out limited corresponding to the time outs configured on the RDS servers.
For this customer we decided to use the persistence option out of the load balancer, because we would not use the RD Broker.
Secondly the way of load balancing should be determined. The Kemp Load Balancer offers several functionalities like (weighted) round robin, (weighted) least connection and agent based adaptive load balancing (which requires additional software on the server to monitor the resource usage). The decision which to use depends really on the needs of the organization, just with the Citrix Load Balancing I don't like to use resource based balancing as the basis of the load balancing, but that is a personal opinion of course.
Configuring the Load Balancer is really easy. During the set-up of the virtual service you will probably configure port 3389. When using this port automatically the Remote Terminal configuration will be applied including the L7 Transparency. So after that you only have to choose the persistence and load balancing settings. The last step is to add the real servers into the load balancing configuration.
The environment at the customer is used for external access and support third party companies using one of their business applications. We are enrolling this environment at this moment and till now it's working fine. The customer is happy that only one port and IP-address need to available on the outside of their internal network. There is no performance delay noticeable at this moment.