25th August

in AWS

EC2 load balancer appliance rocks, and its FREE… for now anyway.

Posted by Malcolm Turnbull

Update: Sorry but as of Wednesday 6th Oct 2010, the free lifetime license is no longer available!

OK, so let me begin by saying that I am both excited and slightly scared by our latest product. I’m excited because after playing around with it in the Amazon cloud, I’ve become slightly addicted to launching multiple instances in different parts of the world and load balancing the traffic seamlessly. I’m slightly scared because this could change our whole business model from hardware load balancer vendor to online SAAS (Software As A Service) provider.

So why does the new Loadbalancer.org EC2 ENTERPRISE rock?

The Loadbalancer.org EC2 ENTERPRISE provides a simple and flexible cloud application management tool (aka. Load Balancer). You simply fire up an instance from our public ami, configure it for your application cluster and then for disaster recovery purposes simply bundle up the whole ami (pre configured).

“Hang on a minute, Doesn’t  the Amazon cloud already have a load balancing service?”, I here you say.

Ah yes, Amazons load balancing service is very good and very fast but:

  1. It is layer 4 only (round robin).
  2. Doesn’t support SSL termination
  3. Doesn’t support Cookies
  4. Doesn’t support WAN or SNAT load balancing (i.e. non-local servers)
  5. Doesn’t support URL matching rules or multiple backend clusters.
  6. Doesn’t support application maintenance modes
  7. Doesn’t support customized health checks

The Loadbalancer.org EC2 ENTERPRISE does all of the above (actually point 7 not yet but it will – fixed in RC-1 :-). )

cloudlb

Now before you get too excited, this product is currently a BETA and by that I mean when you have it configured and tested it is probably perfectly fine in production BUT while configuring it and testing don’t be surprised if you find some gotchas in the web interface! It is also almost feature complete, it does most things that you would require it too and does them well….

Its a long story but this product has been in development hell (alpha) for nearly two years now!

So I have personally taken a solid week to kick it into its current BETA6 shape, and intend to get it to RC1 pretty damn quickly….

I’m a strong believer in Trump’s “Ready, Fire, Aim”:

” So anyone who uses the Loadbalancer.org EC2 ENTERPRISE (BETA) gets a free perpetual license (on request) to use the finished product and all future versions!”

Another reason for this is that we really need feedback on how to develop this product further, with questions like:

  • Does it need the ability to remotely start instances when load increases?
  • Does it need a heartbeat failover mechanism or just scripted ami failover?
  • Does it need SNMP / graphical statistics?
  • Is it fine as it is?

Warning: The following screen shot is not pretty… but it is functional and server maintenance is seamless and AJAXified….

backends

So you’ve either left by now or hopefully I’ve caught your interest!

So how do you get started with testing? Simple just open your AWS console (or Elastic Fox) and search for the public ami (ami-5eb9932a): loadbalancer.org/ENTERPRISE-EC2-v1-demo.manifest.xml
But make sure you are searching in EU-WEST… or US-EAST @ loadbalancer.org-us-east/ENTERPRISE-EC2-v1-demo.manifest.xml

find_public_ami

Once you’ve found it, simply right click it and say start instance!

Obviously you are going to need a security group with a few useful ports open:

  • 22 – SSH : Always useful
  • 9443 : This is your access to the web administration interface (Its HTTPS access only)
  • 7777 : This is for administrative access to the HAProxy status report
  • 80 & 443 : You will probably want these open in order to put some test clusters on them

Once the instance is up and running find the public DNS and access the web interface with something like:

https://ec2-79-125-XX-XX.eu-west-1.compute.amazonaws.com:9443/

username: loadbalancer
password: loadbalancer

To set up a cluster:

  • Click on the Server tab
  • Add a front end called F1 with port 80 and backend B1, mode = http.
Label Ports Default backend Mode
F1 80 B1 http
  • Then add a new back end called B1,persistence=cookies,fallback=127.0.0.1:80
  • Then add a new server label=myserver,DNS/IP=www.loadbalancer.org,port 80, weight 1

addbackend

Then if not already prompted you will need to use Maintenance > Restart HAProxy

Assuming you get no errors then simply go to:

http://ec2-79-125-XX-XX.eu-west-1.compute.amazonaws.com/

And your load balancer will re-direct you to www.loadbalancer.org!

Simple?

Anyway we’d love your feedback!

And yes we know it needs a load of Javascript sanity checking added (its very easy to break the URL rules section :-).

BETA7 – UPDATE

OK, so beta7 is getting pretty close to feature complete:

You can now wrap up an exact copy of your load balnacer instance, upload and save the ami to an S3 bucket, register the image and then launch it as an autoscaling instance with an assigned elastic IP…. aka. HA load balancing solution.

In order to achieve this simply go to the accounts tab, fill in lots of fields and hit the save buttons… work from the top slowly and ready the messages! Section 3 ‘image wrapping’ can take about 30mins+ (It will tell you when its finished).

Section 4 ‘auto scaling’ WILL COST YOU MONEY i.e. it will launch a new instance that is VERY HARD TO DESTROY:

EC2 autoscale - hard to kill

EC2 autoscale – hard to kill

That’s why it shows the destroy script clearly on screen when it is finished! (If you are interested the creation/save scripts are /etc/loadbalancer.org/aws/bundle.sh & launch.sh)

#!/bin/bash
# /etc/loadbalancer.org/aws/rmlaunch.sh
# This script needs to be used to terminate an autoscaling instance (make a copy of it locally as it wont work if it terminates itself!)
export AWS_AUTO_SCALING_HOME="/etc/loadbalancer.org/aws/ec2-api-tools"
export EC2_HOME=/etc/loadbalancer.org/aws/ec2-api-tools
export EC2_PRIVATE_KEY=/etc/loadbalancer.org/aws/pk.pem
export EC2_CERT=/etc/loadbalancer.org/aws/cert.pem
export JAVA_HOME=/usr
/etc/loadbalancer.org/aws/ec2-api-tools/bin/as-update-auto-scaling-group EC2VAGroup --launch-configuration EC2VAConfig --availability-zones us-east-1a,us-east-1b --min-size 0 --max-size 0 --cooldown 100 --region us-east-1
sleep 120
/etc/loadbalancer.org/aws/ec2-api-tools/bin/as-delete-auto-scaling-group EC2VAGroup --region us-east-1 -f
/etc/loadbalancer.org/aws/ec2-api-tools/bin/as-delete-launch-config EC2VAConfig --region us-east-1 -f

You can launch the kill script from the original load balancer image (i.e. not the autoscale one), or you can probably get away with running it on the actual autoscale image but obviously it will kill itself during the first sleep command….
So the auto-scaling group and launch configuration won’t actually get killed… but at least the image will terminate :-).

RC-1 – UPDATE

OK, So we finally have a release candidate! Yeah!

  • Loads of bug fixes
  • Loads of input verification stuff
  • New extended health checks – nicked from ‘nagios’ – so in theory any nagios check can be implemented.
  • If you specify a check file i.e. index.html and a Response Expected i.e. OK , the specified file will be read on each server and the output grep’d for OK if it fails the real server is put in maintenance mode.
  • Password change functionality implemented for web interface.

ENTERPRISE EC2 v1 – UPDATE

Yeah – We are all systems go!

Loadbalancer.org/ENTERPRISE-EC2-v1-demo.manifest.xml
Loadbalancer.org/ENTERPRISE-EC2-v1-PAID.manifest.xml (20 cents an hour)
Loadbalancer.org-us-east/ENTERPRISE-EC2-v1-demo.manifest.xml
Loadbalancer.org-us-east/ENTERPRISE-EC2-v1-PAID.manifest.xml (20 cents an hour)

ENTERPRISE EC2 V1.5.2 – UPDATE

Ooops, We haven’t updated this Blog entry in a while!

The new EC2 v1.5.2 has a load of updates:

  • Improvements to stability and resource utilization
  • Stick tables now persist across HAProxy restarts
  • RDP cookies now have stick table support
  • TCP connections now disconect quickly on server failure
  • Fallback server is non-sticky by default
  • Default connection limits and timeouts increased
  • Feedback agent CPU Idle available as a Windows Service


About the author

Malcolm Turnbull

Malcolm is the founder of Loadbalancer.org a family run company that has generated 13 years strong organic growth using Open Source technology sold as packaged hardware & software solutions. He has a tendency to talk way too much and play devils advocate in any conversation.

Live chat