Over the past year I have seen almost every cloud provider have significant outages in certain data centres. E.g. I have something in the South Central US region and just experienced an over 3 day outage of their storage service. (Lucky I host most of my storage needs on Amazon S3).
I want to know how companies have multiple data centres while keeping all their data in sync and having automatic failovers. Is this custom coded or are there specific tools/ways to do this?
To elaborate, I use
- Azure Storage Blob (only for temporary files anyway)
- Amazon S3 for main data storage
- SQL Azure
- Virtual servers (Web Roles)
- AppFabric Caching
I can see the Caching and Azure Storage don’t really matter much because they only host temporary files and data that can be easily regenerated. The Virtual Servers are just running an ASP.NET website hence you can start one of these up anytime anywhere. However I would need to point the SQL database to the local region.
The main issue I have is how would I have the SQL database available and synchronized in multiple regions?
Second is how do I provide redundancy in Amazon S3. I have a CDN with CloudFront however this is just a CDN, not fully redundant. Or is it even worth it?
On Windows Azure, one trick could be to use Traffic Manager (through the old management portal) and SQL Database Data Sync.
With Traffic Manager, you basically have a fail-over DNS. There’s maybe no need to run both locations at he same time but in case of a general outage, Traffic Manager allows you to start services on the second location without having to do complex DNS updates.
Data Sync will synchronize databases on two or more locations. Not real-time, but it may help if you want to have a disaster recovery site and are okay with a bit of data loss eventually.
Check http://www.slideshare.net/maartenba/architectural-patterns-for-the-cloud for a broader story.
On a side note: it’s always something you have to figure out. Windows Azure and Amazon offer numerous building blocks but expect you to combine them based on needs and services you’re using.