We have a web solution that we sell and it comes with 1 dedicated Azure VM containing everything it requires to run the application:

  • ASP.NET web application
  • Production environment
  • QA environment
  • SQL server containing data for both PROD and QA environment

A specific customer however, has a user requirement to run his application in a high availability setup. What he wants is that when 1 server goes down, the other one should take over and vice versa.

I'm completely new to load balancing/high availability set ups and I know that Azure supports load balancing, but I'm puzzled how I could make it work. Is it as easy to just create 2 servers with the above set up and then get the high availability functionality set up? My concern is how I would get the website data and SQL Server data in sync between the 2 servers? Especially the latter.

Or would it be easier if I used the Azure SQL server instead of a local SQL server? Or perhaps introducing additional servers rather than 2?

  • Can anyone point out why I was given a vote down?
    – Zeep
    Sep 3 '18 at 12:20

First, it is recommended to use Azure SQL, setting a SQL server by yourself is not secure and "standard". Azure SQL provides you many advanced features including high availability and disaster recovery. Use Azure SQL and configure failover group according to the doc. Now, your data layer is high availability enabled.

Second, suppose you have migrated your database to Azure SQL, create a new VM in the same virtual network of your current VM. And running the same application in new VM. Create a load balancer and add these two VMs to the backend pool. Now your application layer is high availability enabled.


You can configure StarWind VSAN on a top of just two virtual machines and get real highly-available storage solution in the cloud. I believe this manual should be useful for you, check it out.


You can easy to create a high availability set with the same servers, then set this high availability set as a backend pool in LB. It's recommended to use the Azure SQL database since Azure has many built-in platform features that support highly available applications. However, It's easy to use the local SQL server on the same Azure VM and you can get the quick response since application and database host in the same Azure VM.

For Azure SQL Database, data is replicated synchronously within the region. Also, To achieve high availability with Virtual Machines, you must use availability sets, which serve a similar function to fault and upgrade domains.

Refer to this doc.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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