At Provoke, we've helped a lot of our customers realize the cost and manageability benefits of moving their computing workloads to the Windows Azure cloud. Infrastructure-as-a-Service in Azure gives you the flexibility to run whatever workload you want without having to buy the hardware to support it or be concerned with mundane tasks like ensuring the server room's air conditioning is working. Whether a workload is hosted on-premises or out on the internet though, data loss and corruption are still as likely to occur and system updates still have the potential to cause outages.
The Azure platform is rock solid and Microsoft is so confident of this that it guarantees at least 99.95% uptime availability for virtual machines. The thing to keep in mind here though is that this "uptime" refers to whether your service is actually able to be connected to (the virtual machine is running), not whether it is functioning as you expect it to function. Should the worst happen and your VM boots perfectly well but straight into a critical error notification, how easily would you be able to recover your service?
Having backup/restore points available for your important data is just as critical in the cloud as it is on-premises but is often overlooked due to a misunderstanding of cloud resiliency. Helpfully though, there are solutions available in Azure to protect your data and get you back up and running quickly in the event of a disaster – here are a few of them:
Virtual Machine Snapshots
One of the major benefits of virtualizing a server is the ability to take a snapshot of the machine's state at any point in time and be able to roll back to this snapshot if anything goes wrong. It is particularly useful as a safety net when implementing major system changes – it's a lot easier and safer reverting to a snapshot than rebuilding or restoring from backup. Unfortunately, the Azure management portal doesn't provide any method of snapshotting virtual machines at the moment, however the underlying Azure BLOB storage system is actually capable of producing snapshots of the virtual hard disk (VHD) files. Chris Clayton at Microsoft has put together some PowerShell scripts which can be used to demonstrate the process but please note that at this stage, the use of BLOB snapshots for virtual machines is not supported by Microsoft and shouldn't be relied on for production use.
A similar, safer method which is supported though is to simply shut down the VM and make a copy of the VHD file to keep in separate storage. If you need to roll back, you can just attach this version of the VHD to the VM and you'll be back to where you were with a perfectly functioning machine again. To be extra safe, the destination storage account you choose could even be located in totally separate Azure datacenter to protect against a datacenter outage.
Azure Backup Vault
To allow for more granular restores, a regular backup of the file system contents should also be undertaken. With your data stored in the cloud though, it may not be feasible to download a copy of it to be included in your on-premises backup procedure due to bandwidth constraints. The Backup Vault service in Windows Azure provides a solution to this problem by allowing you to back up your data directly to the cloud and since the backup store is in the same datacenter as your VMs, cloud backups complete pretty quickly. It's a neat solution which integrates directly with System Center Data Protection Manager and Windows Server Backup through the use of an agent and is fully secured with X.509 certificates.
Follow this link for more information on setting up Azure Backup Vault: http://www.windowsazure.com/en-us/manage/services/recovery-services/configure-a-backup-vault/
Azure SQL Database – Automated Exports
If you’re hosting databases in Azure SQL Database (the platform-as-a-service offering of SQL Server), you can now schedule automatic database backups to be run directly from the Azure management portal. At the specified time, a .bacpac file will be created containing the database schema and content and will be placed in an Azure BLOB storage account of your choice. To restore the database, you simply reimport the .bacpac file.
Storage Account Replication
More of a feature than a tool, Windows Azure allows you to select different levels of redundancy for your storage accounts. At the most basic level, selecting Locally Redundant storage still ensures that multiple copies of your data are kept within a single Azure datacenter - this protects against loss in the event of a hardware component failure. Geo-Redundant storage ensures that a copy of your data is replicated to a sister Azure datacenter possibly thousands of kilometers away – protecting against a complete datacenter failure such as from a natural disaster. The geo-redundant storage option is transparent to the end-user and the replicated copy of the data is not able to be accessed. In order to fail-over storage so that it can be accessed, Microsoft will need to initiate this process themselves. A new option available in preview is Read-Access Geo-Redundant storage which does allow access to the replicated copy of the data but for read-only usage. Each of these options has a different price point but for the added peace of mind, I’d recommend paying for the protection of production data.
System and data recoverability is a critical component of any solution design and just because your systems are running in the cloud doesn’t mean you should pay any less attention to it. If you’re running services in Windows Azure, there are some great native tools available to help protect your data which you should absolutely be considering to form part of your disaster recovery strategy. Stay safe out there!