Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

First off -- I'm not a sysadmin so I'm not even sure what I'm doing is right.

Basically I have two Amazon EC2 webservers that are essentially clones of each other. I've created an Elastic Load Balancer, and I've added both instances to it. I'm pushing production code simultaneously to both servers so the content stays consistent.

Now this is working alright, but I'm having a hard time wrapping my head around configurations. If I eventually expand and launch more instances and add them to the load balancer, how can I keep things like Apache configurations consistent across them all? I'd hate to have to manually SSH into each instance just to update my httpd.conf files.

Is there a strategy for this, and/or is my load balancer setup correct here?

share|improve this question
up vote 3 down vote accepted

Tongue in cheek answer, find a qualified sysadmin to help you. :-)

More helpfully, yes you're on the right path. By using Amazon's ELB, you essentially have a black box load balancer that 'just works' and can be easily managed via Amazon's tools. Your main responsibility as regards deployment is then to keep the webapp servers consistent and up to date. There are 3 classical strategies:

  1. "By the seat of your pants", mostly log in to each app server manually, and perform installations manually and/or with a little scripting to assist with parts of it.

  2. Using a declarative tool for configuration management, such as Chef, Puppet etc (there are many) to script everything.

  3. Use what's built into Amazon AWS. The workflow generally goes something like this: a) Deploy a production version. b) Build a staging server in a separate VM. c) Develop code, and install on the separate staging server. d) When ready to release, spawn x copies of the staging server AMI. e) Swing the ELB over to use the new (what used to be staging) VMs for production. f) Keep the old production VM around for a couple of days, to facilitate rollback if you need it.

The good choices of the above are generally 2) and 3).

You could read "Web Operations: Keeping the Data On Time" by John Allspaw and Jesse Robbins. It is quite high-level, i.e. the opposite of giving "paste this script in there" advice; it focuses more on higher-level concepts such as "why" and "culture". And it's a good book.

share|improve this answer
Thanks for your tips! And yes -- we are looking for a qualified sysadmin. :) – Calvin Dec 5 '10 at 20:05
For simple ssh deployment on multiple machines, you can take a look at vlad and fabric. I've been using fabric for my client apps deployment and it works simply. :) – rquillo Dec 6 '10 at 1:47
Puppet doesn't support Windows currently. – LwoodyIII Dec 7 '10 at 15:24

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.