Mandar Jogalekar
Mandar Jogalekar

Reputation: 3281

Possible to keep two vhd's in sync on azure vm's

This is scenario than a specific technical question. I have two azure vm's who run a web application in load balanced mode. as per this article http://asheej.blogspot.in/2014/03/load-balancing-using-windows-azure.html

both virtual machines are attached an additional disk which stores images which are referred from web application hosted in vm's IIS.

Now What would be the best way to keep contents on two vm hard drives in sync. For example, If i delete, add a data from vhd of first vm then that should also be affected on second vm.

Is there anything possible, probably using a common vhd for both machines which will take sync out of question.

Upvotes: 1

Views: 2305

Answers (2)

Krishna Azure
Krishna Azure

Reputation: 559

Before going into solution , let me briefly touch base on the VM and disk relationship.

Typically a VM contains 3 Disks attached to them 1. OS Disk 2. Temporary Disk and 3.Data Disks. The VM will have lease on all these disks ,the only way to write into data disks is via the VM.

The C: Disk is persistent, meaning when the VM get rebooted the data in the disk is retained. But the D:\ is non persistent , when you reboot the disk will be fully wiped clean. So at any point in time the D:\ shouldn't be used to store any user data.

So writing a process to sync between two VM's just to keep pictures in sync is not very ideal. You might know this already , but wanted to set context for the choice of options provided below.

Your potential options are as follows

  1. You can setup File Share using the new Azure File Service (In Preview) http://blogs.technet.com/b/uspartner_ts2team/archive/2014/06/09/setting-up-a-file-share-for-the-new-azure-file-service.aspx. This will be single source for all your images and you don't need to worry about syncing of files.

2.Store the images in the Azure Blob and access them from the application that's running in the VM http://blogs.msdn.com/b/yaohuang1/archive/2012/07/02/asp-net-web-api-and-azure-blob-storage.aspx and http://www.nickharris.net/2012/11/how-to-upload-an-image-to-windows-azure-storage-using-mobile-services/

3.Host another VM as a Webserver and host your images from there. Then the two VM's can refer the image. The cost here will be to hosting the VM.

The key point with all the 3 potential options there is no need sync the files in two different places , everything is in single place.

Edited based on new information:-

In your scenario hosting your files into VM is not the right approach. You should take the following into consideration even for the short term solution , if you are using Azure LB.

Azure Load Balancer uses a 5 tuple (source IP, source port, destination IP, destination port, protocol type) to calculate the hash that and map traffic to available servers and also the distribution is fairly random. So if you load balance the VM, you cannot control which VM the images are accessed.

Manual updates is not possible in this scenario.

Upvotes: 3

Simon W
Simon W

Reputation: 5496

You either need to setup an virtual network to allow you to create and share a windows file share OR you should investigate the use of Azure File Service for creating a share that both VMs connect to (see: http://blogs.technet.com/b/uspartner_ts2team/archive/2014/06/09/setting-up-a-file-share-for-the-new-azure-file-service.aspx).

Upvotes: 1

Related Questions