May 24, 2024

Free load balancer (possible connection broker) for VDI

Looking for an alternative (free) Connection Broker solution I stumbled across Crossroads.

It is a little application that will run on pretty much any current Linux/OSX build, and will load balance specific IP’s, ports.

Just because I wanted something quick and easy to test this on, I downloaded Ubuntu Desktop 6.0.6 LTS to try it out on.

Download Crossroads here. I chose the 1.48 build, as it is the latest stable (at the time of this writing).

So, download it, to your Linux system, and unpack it, and install it.
I downloaded/copied it to /tmp, and installed it as follows:

Unpacking the archive
root@ubuntu:/tmp# gunzip crossroads-stable.tar.gz
root@ubuntu:/tmp# tar –xvf crossroads-stable.tar
root@ubuntu:/tmp# cd crossroads-1.48

Compiling/Installing Crossroads
(make sure you have a C compiler like gcc installed)
root@ubuntu:/tmp/crossroads-1.48# make install
root@ubuntu:/tmp/crossroads-1.48# touch /etc/crossroads.conf

Basic Configuring of Crossroads
edit /etc/crossroads.conf (with the below configuration)


service rdp {
port 3389;
revivinginterval 15;
backend one {
server 10.1.1.100:3389;
maxconnections 1;
setserverheader "X-Real-IP: %r";
trafficlog /tmp/backend.1.log;
}
backend two {
server 10.1.1.101:3389;
maxconnections 1;
setserverheader "X-Real-IP: %r";
trafficlog /tmp/backend.2.log;
}
}

I set the “maxconnections” to 1, because if I have XP/Vista desktops on the backend, I don’t want someone attempting to connect to one that already has an active connection.

Starting Crossroads
/usr/local/bin/crossroads start

Checking the status of Crossroads
/usr/local/bin/crossroads status

Stopping Crossroads
/usr/local/bin/crossroads stop

Keep in mind, this is just a rudimentary implementation of Crossroads in a Connection Broker capacity.

The Crossroads documentation gives more parameters and information to have it start automatically at different run levels, allowed from/denied from, etc.

Additionally, the default Makedef.def is setup for a maximum of 20 connections. So, before you compile it, adjust the number accordingly.

The config file (/etc/crossroads.conf) also has many additional settings, that can customize the connections, including things such as allowed/denied addresses, etc.

The Web Interface
There is also a web gui that will display connections/etc.
To start it up, run /usr/local/bin/crossroads-mgr start PORT

So if you run /usr/local/bin/crossroads-mgr start 80, you should see something like this:

Now, in a production environment, I’d recommend creating a hardened Linux VM, and really tweaking /etc/crossroads.conf to get the best performance and security.

This could be a really viable solution in a small environment where costs play a significant factor.

As can be seen it really isn’t hard to do, doesn’t take long, and (by reading the docs) can be locked down enough to be a cheap (free) solution.

4 thoughts on “Free load balancer (possible connection broker) for VDI

  1. We are using Crossroad to balancing VNC connections to XP VM’s, and to reset the VM to a known state after the user disconnects.

    VM’s are a mix of vmware, virtualbox, and qemu.

  2. @ajd4096

    Any chance you could provide some documentation/configuration on how you have it deployed?

    Like all of the “blanks” that are in the configuration above?

    I would really like to help a school roll this out, but I don’t want to put it in place if it isn’t “ready for prime time”, and by what you are saying, it certainly could be if the right configuration is performed.

    Thanks,

    smooter

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.