Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I'm working on a website where we need to have a good deal of uptime. Specially in the short bursts (15-day periods) that the website's events happen.

The page is dead simple and can be served almost completely off an html cache. While there is a php based part, this is not mission critical and in case of failure, we can live with the cache for a say 20 minutes until the eventual problem is sorted out. More than 20 minutes won't really work as the site hosts a live score board among other things.

We had successful deployments in Amazon using multiple EC2 with elastic load balancing and also using the Rackspace cloud (Cloud Sites and Cloud Servers).

For this particular website we'd like to have the app running in these two providers at the same time but just serve the pages from off one of them. In case the main provider fails just move to the other and keep going.

I know how to make everything work in just one provider. What I'm not clear on how to achieve is the actual switch from one provider to the other. For example, if I CNAME myapp.com to a domain in Rackspace and it fails, when I change the CNAME to point to Amazon, a great deal of users will aready have their DNS cached to Rackspace and the whole thing would be pointless... this is one of the many questions that I have...

Any help is greatly appreciated... tips, advise, gotchas, anything is welcome...

share|improve this question

4 Answers 4

up vote 3 down vote accepted

I would think that either Amazon or Rackspace alone should give you the uptime that you require. The whole point of the cloud is that you already have a high availability situation. If your Amazon or Rackspace hardware fails your image is restarted on other hardware. Have you already had an uptime problem or are you trying to solve an issue that hasn't yet occured?

If you have massive surges of traffic, and a lot of static content I think you should consider a CDN. Edgecast has reasonable prices and an excellent network. All your static content could get served from their geo redundant servers and help you with site availability.

share|improve this answer
    
From what I understand they don't supply SLAs do they (also isn't speed always an issue on amazon)? So you actually have no guarantee of uptime. I agree with the CDN comment though - specially for heavily cache-content. –  Coops Feb 11 '11 at 19:21
    
I haven't actually used Amazon, but Rackspace Cloud Servers don't seem to have a speed problem. –  Antonius Bloch Feb 11 '11 at 19:36
    
after reading your comment I've spoken to a salesperson at Edgecast and liked what I heard. We've had lot's of outages with Rackspace Cloud that's why we're doing some research. The Rackspace dedicated servers are extremely well supported but their cloud network is too young and has around 10 micro outages per month (which is not acceptable for this particular project). –  Julian Feb 11 '11 at 21:30

This tutorial might contains what you need: http://www.howtoforge.org/high_availability_loadbalanced_apache_cluster

Good luck!

share|improve this answer
    
Not sure that really helps -- where do you host your apache service? –  Coops Feb 11 '11 at 19:19

If you have a low TTL set for the DNS records, you might be able to have them transition to the new site automatically. Another option is to use a CDN. Have the site served from the CDN, and have the CDN talk to your servers. That will distribute the load to servers that are designed for such a setup. We've used http://www.edgecast.com/ in the past to handle such loads.

share|improve this answer

You could consider using multiple availability zones/regions to provide higher availability and still only use one provider, which might make this easier. That doesn't mitigate against business risk of the various scenarios which could take down your app on a provider, though, so running multi-cloud is a decent idea.

If you simply rely on DNS entries, then you are at the mercy of your TTL (and of every bit of software out there respecting it right). There's a great SF thread on trying to wring instant failover out of DNS, and the upshot is that if you do it right it will probably mostly be pretty fast. Assuming it's good enough for your use case, you can get it from most commodity DNS services (dns made easy, dyn). Basically you advertise multiple A records and most well behaved clients will use ones that're working. Of course in your case you don't want balancing you want "warm" failover, which is actually harder.

You could try BGP but I am not sure how that would work; you might be able to do it running Vyatta (via Quagga) or something on a box on either side but I've never seen that working.

share|improve this answer

Your Answer

 
discard

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.