How to autoscale windows servers w/ amazon ec2

amazon ec2amazon-web-servicesautoscalingwindows-server-2008

I'm building a distributed app which consists of a load balancer, web-server, database server, messaging queue, and backend workers. Workers consume messages off the queue, perform tasks and then update the database server. Ideally I'd like to have the ability to scale the workers based on some metric. I'm familiar with ec2, s3, cloudfront, but am new to VPC and auto-scaling.

My question is this: How do I go about setting up autoscaling windows servers based on a metric that I define. I have setup windows servers before on ec2, it's painful to RDP in, install cygwin, then ssh in, not very scalable IMO. I'd like them to be ephemeral if possible so I can save money on usage by scaling up and down. Any ideas / advice are greatly appreciated.

Thanks

Best Answer

Your link to how to create CloudWatch Alarms is indeed the mechanism you will wind up using if you go the Amazon Auto Scaling route. However, as you state yourself, setting up Windows servers can be quite painful -- not only is connecting to them and getting them up to the state you want rather slow, there is often also a considerable delay just getting them up and running in the first place (see Speeding up launch of Amazon EC2 Windows instances, for instance -- it's horrible).

To mitigate the pain a bit, you can create a custom Windows AMI. This lets you install your software on the machine so that it's already there when the instance comes up. Chef, the infrastructure management framework, works with Windows, so you can also go that route. Anything that makes life easier for you! If you combine the two, you can use Chef mostly for configuring software that you've already installed, saving you even more time.

However clever these approaches may be, there is still the slowness of getting Windows up and running on Amazon. If what you are auto scaling cannot deal with these delays and the instances not being up and running on time, you need a solution that can help plan ahead. Amazon's own CloudWatch service is reactive in nature, and lacks the ability to estimate future load. This gap in functionality is what caused Netflix to develop their own in-house predictive auto scaler Scryer (which is not available to the public), and what Elastisys offers in elastisys:scale, a product whose private beta one can request to join right now.

Full disclosure: I work for Elastisys AB, a company that creates auto-scaling solutions based on research performed in the UmeƄ University (Sweden) cloud research group.

Related Topic