Load Balance Terminal Services & Citrix Servers: 2X LoadBalancer Software Review
Product: 2X LoadBalancer for Terminal Services / Citrix
Product Homepage: click here
30 day Trial Version: click here
In modern IT environments, servers are often grouped together. The main reason for creating these groups is because they all offer the exact same service. In Server Based Computing environments such a service could be hosting a specific application or a specific desktop. Usually user requests to the service of a group are somehow distrubuted evenly over the servers in that group. Often this distribution mechanism also provides some kind of fault tolerance.
In Server Based Computing environments this distribution mechanism is called Load Balancing or Load Management. The groups are called “Silos” or “LMGs” (Load Managed Groups).
There are several vendors who have implemented load balancing in their products. A well-known hardware solution for load balancing is F5 Network’s Big IP. On the softer side, Citrix is particularly well-known for the Load Balancing capabilities of their product Presentation Server (only available on “advanced and enterprise” editions). Microsoft, with the introduction of Windows Server 2003, included the possibility to load balance across Terminal Servers by using Microsoft Network Load Balancing. In Microsoft Network Load Balancing, load calculations are based solely on network load.
2X LoadBalancer is 2X’s implementation of Load Balancing. 2X LoadBalancer was formally known as WTSGateway Pro by TerminalServices.net. The new product is a result of the merger between 2X and TerminalServices.net. 2X LoadBalancer has the following features:
- Resource Based Load Balancing
- Fault Tolerant Load Balancing
- Disconnected Session Reconnection Support
- SSL Gateway Features
In this review I will take a look at 2X LoadBalancer. My review of 2X LoadBalancer was performed with three Windows 2000 Server systems. One server acted as the “gateway” and the two remaining servers acted as the Terminal Servers.
2X LoadBalancer Architecture
The 2X LoadBalancer architecture basically consists of three components:
- 2X LoadBalancer
The 2X LoadBalancer component is the main component. This is the software that does the actual Load Balancing.
- 2X LoadBalancer Agent
The 2X LoadBalancer Agent is an agent you install on your Terminal Servers so that the 2X LoadBalancer server can check the load on the Terminal Server to make load balancing decisions.
- 2X Client
The 2X Client is installed on the machine connecting to the load balanced group of Terminal Servers. The 2X Client only has to be installed when using “direct connect mode” (see below)
Before we get on with installing all the components, it’s important to understand that the 2X LoadBalancer can operate in three modes:
- Gateway mode
- SSL Gateway mode
- Direct Connect
Gateway mode and SSL Gateway Mode
Gateway mode is when clients connect to the 2X LoadBalancer server and the connection to the (least busy) Terminal Server is established through the 2X LoadBalancer server. Optionally the connection from the client to the 2X LoadBalancer can be SSL encrypted. This provides easy secure access to your company Terminal Server over another network (for example Internet):
Direct Connect Mode
In Direct Connect mode, a user initiates a connection to the 2X LoadBalancer. The 2X LoadBalancer then determines which Terminal Server the user should connect to based upon the load balancing settings. The 2X LoadBalancer then reports the IP address of the Terminal Server to the client. The client then sets up a direct connection to the Terminal Server in question, hence the term Direct Connect mode. In this mode the client does not connect trough the 2X LoadBalancer and thus the 2X LoadBalancer is eliminated as a single point of failure for existing connections (it remains a single point of failure for new connections though). Naturally SSL is not supported in Direct Connect, for this would mean that the connection between the 2X Client and the Terminal Server would have to be SSL encrypted.
First, install the 2X LoadBalancer core components. This can be done on the following operating systems:
- Windows 2000 Professional
- Windows XP Professional
- Windows 2000 (server, advanced)
- Windows Server 2003 (standard, enterprise)
However it’s important to take into account the important role this machine plays: this machine accepts every connection to your 2X load balanced farm. If this machine is not available then you cannot connect to your terminal servers (at least not in a load balanced fashion). So be sure to use server-class hardware for this machine, as this is a single point of failure.
The 2X LoadBalancer component needs to be installed on a NON-Terminal Services / Remote Desktop / Remote Administration machine. This is because the 2X Load Balancer uses port 3389 (the port used by Windows Terminal Services). This means you have to change the port Windows uses for remote administration if you want to remotely administer the 2X LoadBalancer computer (KB187623).
Installing the 2X Load Balancer is very straight forward. After the installation completes a look at the TCP stack yields the following:
These listeners are the result of a new service being installed: the “2X LoadBalancer” service. The first listener uses port 443 to allow you to setup SSL encrypted connection to the 2X LoadBalancer. The second listener uses port 3389 and allows you to connect to the 2X LoadBalancer with your RDP-capable client (3389). The third listener uses port 3390 and is used when connecting in Direct Connect mode. Note that the listeners for port 3389 and 3390 are created during installation. The SSL listener isn’t created until you enable the SSL functionality in the 2X LoadBalancer configuration.
After the installation you’ll find two programs in the 2X LoadBalancer program group; the 2X LoadBalancer configuration tool (LoadBalancer.exe) and the 2X LoadBalancer monitoring tool, (2XLBMonitor.exe). Firing up the configuration tool reveals the following screen:
In the General Tab you select the protocol to be used by the 2X LoadBalancer. This can be either RDP (default port 3389) or ICA (default port 1494). You can change the default port if you want to connect to the 2X LoadBalancer on a different port than 3389. Note that this might complicate matters when you want to connect to the 2X LoadBalancer and your RDP capable client doesn’t allow you to change the default connection port (3389).
Add the Terminal / Citrix servers you want to load balance across in the “Terminal Servers” section. When adding Terminal / Citrix servers you can specify the IP address and the port the target Terminal / Citrix servers listen on. By default the maximum number of sessions a server accepts is 100, more than enough. Finally, when you choose to use “Direct Connect” mode, you need to enter the “Alternate Address”. This “Alternate Address” is the actual IP Address the client receives from the 2X LoadBalancer when operating in “Direct Connect”. This means that your Terminal / Citrix servers must have TWO IP addresses: one for communication between the 2X LoadBalancer server and one for the communication between the client and the Terminal / Citrix server. So if a client is connecting over the internet for example, make sure the “Alternate Address” is reachable. Use public IP addresses or setup your network perimeter equipment to forward the requests to that specific Terminal / Citrix server.
In the “Load Balancing Method” you can select between “Resource Based Load Balancing” or “Round Robin Load Balancing”. I would strongly advise you to choose “Resource Based Load Balancing” (default) because “Round Robin Load Balancing” isn’t really Load Balancing and can also be done using Microsoft Network Load Balancing. Optionally you can select which counter 2X LoadBalancer uses. You should leave the default enabled because this provides the most accurate load balancing.
Notice the “Check Agent” button. You can use this button to check if the “2X Agent” is installed on the Terminal / Citrix servers listed in the “Terminal Servers” window and if the servers are reachable.
Also, somewhat hidden under file > notifications there’s a option to setup alerts for when counters exceed a limit you can define. You can receive alerts via a netmessage or email:
Finally you can choose to “Reconnect Disconnected Sessions”. When you select this checkbox, the 2X LoadBalancer, upon (re)connection, queries all Terminal servers to see if you already have a session to that server. If so, it directs you to that specific server regardless of the load on that server. Know that when your clients are connecting over another network (internet for example) you have to make sure that Network Address Translation (NAT) is NOT being used or else the reconnect feature will NOT work. 2X states that this will be fixed in future versions of LoadBalancer.
On the options tab you can set the “Optimization Mode” to function either “by Session Performance” or “by User Count”. This setting controls how the TCP stack is leveraged. If you need to maximize the amount of users able to connect then you should select “by User Count”. This setting sacrifices some performance for an increased user count. If you don’t have to cram as many users on the 2X LoadBalancer as possible, you can safely stick with “by Session Performance” (default).
You can also change the port used for “Direct Connect Mode” to something other than the default (3390).
Select the “SSL“ checkbox if you want to enable SSL encryption on the connection from the client to the 2X LoadBalancer over port 443. Just browse for an existing certificate or create one using the “Create New Certificate” option. That’s all it takes.
You now have a fully functional SSL RDP/ICA Gateway
On the logging tab you can select if you want to log load balancing data. By default load balancing is not logged. For every load-balanced login attempt the 2X LoadBalancer logs an entry similar to this:
Thu,09 Feb 2006 12:58:44 Client 10.0.0.99 Connect Terminal Server 10.0.0.10 Port 3389,By Auto
10.0.0.10 CPU 0% Memory 10% Session 4
10.0.0.20 CPU 0% Memory 14% Session 4
The services tab allows you to start and stop the 2X LoadBalancing service. Note that all connections running through the 2X LoadBalancer will be dropped when this service is stopped.
This tab, not surprisingly allows you to enter the license key for 2X LoadBalancer. The trial version runs for 30 days with full functionality, limited to load balancing between two Terminal / Citrix servers.
If you plan on using “Resource Based Load Balancing” then you need to install the 2X Agent on every Terminal / Citrix server you want to add to the load balanced group. If for some reason you’re going to use “Round Robin Load Balancing” then you do not need to install the 2X Agent.
The 2X Agent install is very straight forward (next, next, finish). It installs a service called “2X LoadBalancer Agent” which operates on UDP port 20001. There’s no additional configuration required: once you’ve installed it, you’re done.
The 2X client is a modified version of the Windows XP remote desktop client. The installer comes in a msi package which can be easily modified to provide an unattended setup. Consult the manual for detailed instructions on how to do this.
The 2X Client has additional functionality in that it enables you to provide a proxy server setup in the “Network” tab complete with the ability to enter proxy user credentials. The most important configuration you can do is in the “General” tab:
In the “Mode” section” you can select one of three (explained above):
- Regular Gateway
- SSL Gateway
- Direct Connect
Note that you need to change the associated port number(s) if you also changed them on the 2X LoadBalancer.
Not every company does Server Based Computing on an enterprise-scale. Small and medium-sized businesses are examples of such companies. These are the kind of companies that want to take advantage of Server Based Computing, by using for example Terminal Services, but do not want to invest in high-end load balancing options like Citrix load balancing for example. This is where 2X LoadBalancer is at it’s best. 2X LoadBalancer is priced as follows:
No. of Servers Euro USD 2 Servers €350 $395 4 Servers €595 $775 8 Servers €995 $1195 Unlimited Servers €1495 $1750
As you can see, 2X Load Balancer is priced per server, not per user. But, for comparison’s sake, let’s say you, on average, have 25 users on a server and you that you have 8 servers. This would make the concurrent user price for 2X LoadBalancer a staggering $5.98! (( 8 servers x 25 users ) / $1195 )
Now compare this with the list price for a Citrix Presentation Server Advanced edition concurrent user license (the first version with Load Balancing): at least $300. I know there are a lot of ifs, buts and maybes there but that’s still a huge difference.
- Extremely competitive pricing
- Easy and quick setup and administration
- SSL Gateway functionality
- Small footprint
- Session Reconnection
- Agent required on every Terminal Server
- No tool to view or manage sessions that are already setup through the 2X LoadBalancer
- DNS names cannot be entered when adding a terminal server to the farm
- 2X Client can not be managed via Group Policy
2X LoadBalancer does what its name implies and more. The product installation and configuration is easy and intuitive. Performance of the whole (SSL) load balancing mechanism is very good. I was particularly impressed with the SSL component of the product.
2X LoadBalancer packs a tiny installation and an even smaller price. So if you’re looking to load balance your Terminal / Citrix servers and/or looking for an easy secure way to provide access to your company Terminal / Citrix servers over the internet, 2X LoadBalancer is definitely worth a try.