The promise of auto scaling has been a large part of the Cloud since its inception. There have been 3rd party tools in the Amazon Cloud for awhile, but unfortunately involving some cost in complexity. Amazon’s new tools are a welcome addition. At present they are Beta command line APIs but it’s reasonable to assume they will be incorporated into the AWS Console at some point.
Cloud Watch tracks a set of parameters for each running instance monitored:
Auto Scaling then let’s an administrator set triggers for adjusting the number of EC2 instances in an instance pool to reflect demand. Triggers are based on the monitored parameters.
Elastic Load Balancing provides round robin web call distribution across a set of identical web instances. In addition to ease of administration it keeps an eye on the health of instances in the pool and auto routes traffic around any problem instances that show up.
- Amazon CloudWatch – Amazon CloudWatch is a web service that provides monitoring for AWS cloud resources, starting with Amazon EC2. It provides you with visibility into resource utilization, operational performance, and overall demand patterns—including metrics such as CPU utilization, disk reads and writes, and network traffic. To use Amazon CloudWatch, simply select the Amazon EC2 instances that you’d like to monitor; within minutes, Amazon CloudWatch will begin aggregating and storing monitoring data that can be accessed using web service APIs or Command Line Tools.
Fees: $0.015 per hour for each Amazon EC2 instance monitored which amounts to $10.95 per month for a single instance of any type.
- Auto Scaling – Auto Scaling allows you to automatically scale your Amazon EC2 capacity up or down according to conditions you define. With Auto Scaling, you can ensure that the number of Amazon EC2 instances you’re using scales up seamlessly during demand spikes to maintain performance, and scales down automatically during demand lulls to minimize costs. Auto Scaling is particularly well suited for applications that experience hourly, daily, or weekly variability in usage. Auto Scaling is enabled by Amazon CloudWatch and available at no additional charge beyond Amazon CloudWatch fees.
Fees: free to Amazon CloudWatch customers. Of course the usual fees for additional EC2 instances apply.
- Elastic Load Balancing – Elastic Load Balancing automatically distributes incoming application traffic across multiple Amazon EC2 instances. It enables you to achieve even greater fault tolerance in your applications, seamlessly providing the amount of load balancing capacity needed in response to incoming application traffic. Elastic Load Balancing detects unhealthy instances within a pool and automatically reroutes traffic to healthy instances until the unhealthy instances have been restored. You can enable Elastic Load Balancing within a single Availability Zone or across multiple zones for even more consistent application performance. Amazon CloudWatch can be used to capture a specific Elastic Load Balancer’s operational metrics, such as request count and request latency, at no additional cost beyond Elastic Load Balancing fees.
Fees: $0.025 per hour for each Elastic Load Balancer, plus $0.008 per GB of data transferred through an Elastic Load Balancer
The api tools can be downloaded here: Developer Tools. Installation involves simply downloading a zip file and unzipping to a convenient subdirectory, where it can be referenced in a setup batch similar to this:
set JAVA_HOME=”C:\Program Files\Java\jdk1.6.0_03″
The only problem I ran into was making sure I properly quoted my JAVA_HOME directory to handle the space in its directory name.
Here is a quick look at the –help for each of the apis:
|mon-get-stats||Returns metric data|
|mon-list-metrics||Returns a list of the metrics|
|version||Prints the version of the CLI tool and the API.|
|as-create-auto-scaling-group||Create a new auto scaling group|
|as-create-launch-config||Create a new launch config|
|as-create-or-update-trigger||Creates a new trigger or updates an existing trigger.|
|as-delete-auto-scaling-group||Delete the specified auto scaling group|
|as-delete-launch-config||Delete the specified launch configuration|
|as-delete-trigger||Delete a trigger.|
|as-describe-auto-scaling-groups||Describes the specified auto scaling group(s)|
|as-describe-launch-configs||Describe the specified launch configurations|
|as-describe-scaling-activities||Describe a set of activiti…ties belonging to a group.|
|as-describe-triggers||Describes a trigger including its internal state.|
|as-set-desired-capacity||Set the desired capacity of the auto scaling group|
|as-terminate-instance-in-auto-scaling-group||Terminate a given instance.|
|as-update-auto-scaling-group||Update specified auto scaling group|
Elastic Load Balancing
|elb-configure-healthcheck||Configure the parameters f…tered with a LoadBalancer.|
|elb-create-lb||Create a new LoadBalancer|
|elb-delete-lb||Deletes an existing LoadBalancer|
|elb-deregister-instances-from-lb||Deregisters Instances from a LoadBalancer|
|elb-describe-instance-health||Describes the state of Instances|
|elb-describe-lbs||Describes the state and properties of LoadBalancers|
|elb-disable-zones-for-lb||Remove Availability Zones from an LoadBalancer|
|elb-enable-zones-for-lb||Add Availability Zones to existing LoadBalancer|
|elb-register-instances-with-lb||Registers Instances to a LoadBalancer|
These new tools round out the AWS Cloud offering with some welcome monitor and control capability. Amazon has to keep up in the ‘ease of use’ area to stay ahead of other Cloud vendors. These continue the trend of adding complexity to cost calculations, but Amazon’s fees seem reasonable compared to dedicated and co-located services. Including tools for auto scaling and load balancing helps administrators keep a handle on costs for maintaining instance pools. Once these tools are incorporated into the AWS Console, administration could fade into development / deployment phases of a project with only minimal ongoing maintenance.
There seems to be some room for additional graphing, charting, and spreadsheet capability for monitor results. These could conceivably be included as part of the AWS Console version of the current cmd tools.
The lure is increasing availability assurance with decreasing administration costs.