3 Amazon Elastic Load Balancer Tips
July 15th, 2009 by Erik
Getting running on Amazon’s Elastic Load Balancer is easy. Once your up, you’ll also need to monitor it and do some basic maintenance of your nodes. These tips should make the most of the Elastic Load Balancer and show you some simple ways to get the monitoring data you’ll need.
1. Configure Health Checks
If an instance is off or not responding, you will want the load balancer to stop sending requests to those instances ASAP. The following code will setup a check that polls your server every 5 seconds. Be warned, this functionality is not enabled by default!
elb-configure-healthcheck ApplicationServers --target "TCP:80" --interval 5 --timeout 3 --unhealthy-threshold 2 --healthy-threshold 2 |
Once you have this setup, the load balancer will check that port 80 responds to http requests and will stop sending requests to any instances if it sees a problem. You can then check in on the status of your instances with the following command:
elb-describe-instance-health ApplicationServers INSTANCE-ID i-12345678 InService INSTANCE-ID i-23456789 InService |
2. Clear Out Old Instances
If you are using auto scaling to automatically add the instances to the load balancer, you can probably skip this one. But if you are like me and add instances to the load balancer only after completing the startup scripts, you’ll need to periodically clean out any invalid instances. After running with elastic load balancer for a few weeks, I found I had extra instances registered with the load balancer that were no longer running. When an instance that registers itself is shut down by auto scaling, the load balancer isn’t updated. This is VERY important, because after a week, the instance id will likely have cycled through to someone else!
elb-deregister-instances-from-lb ApplicationServers --instances i-23456789,i-34567890 |
3. Check Monitoring Values
You already know about describing the instance health from when you setup the health check before. Now checkout the cloud watch monitoring tools. If you’re not using auto scaling, these values in combination with your own internal metrics will help determine when to add capacity. Spend some time with your log files and these metrics.
mon-list-metrics | grep "ApplicationServers" HealthyHostCount AWS/ELB {LoadBalancerName=ApplicationServers} Latency AWS/ELB {LoadBalancerName=ApplicationServers} RequestCount AWS/ELB {LoadBalancerName=ApplicationServers} UnHealthyHostCount AWS/ELB {LoadBalancerName=ApplicationServers} mon-get-stats HealthyHostCount --statistics Average,Minimum,Maximum --dimensions "LoadBalancerName=ApplicationServers" --namespace "AWS/ELB" --period 600 --headers Time Samples Average Minimum Maximum Unit 2009-07-16 03:47:00 98.0 2 2.0 2.0 Count 2009-07-16 03:57:00 103.0 2 2.0 2.0 Count 2009-07-16 04:07:00 98.0 2 2.0 2.0 Count 2009-07-16 04:17:00 98.0 2 2.0 2.0 Count 2009-07-16 04:27:00 99.0 2 2.0 2.0 Count 2009-07-16 04:37:00 98.0 2 2.0 2.0 Count |
You should follow me on Twitter.
Tags: aws, ec2, elastic load balancer, tips