2014-08-27 54 views
0

这是一个特定的技术问题的情况。 我有两个在负载平衡模式下运行web应用程序的azure虚拟机。 按照这篇文章http://asheej.blogspot.in/2014/03/load-balancing-using-windows-azure.html可能保持两个vhd的同步在天蓝色虚拟的

这两个虚拟机都附加了一个额外的磁盘,其中存储从虚拟机的IIS中托管的Web应用程序引用的图像。

现在什么是保持两个虚拟硬盘驱动器上的内容同步的最佳方式。 例如,如果我删除,从第一个vm的vhd添加一个数据,那么它也应该在第二个vm上受到影响。

有没有什么可能的,可能是两台机器都使用普通的vhd,这会同步出问题。

回答

3

在进入解决方案之前,让我简单介绍一下虚拟机和磁盘之间的关系。

通常情况下,虚拟机包含3个连接到它们的磁盘1.操作系统磁盘2.临时磁盘和3.数据磁盘。虚拟机将在所有这些磁盘上有租约,唯一的写入数据磁盘的方法是通过虚拟机。

C:磁盘是持久性的,这意味着当VM重新启动时,磁盘中的数据将被保留。但是D:\是非持久性的,当你重新启动磁盘时会完全擦干净。所以在任何时候,D:都不应该被用来存储任何用户数据。

因此,编写一个进程来同步两台虚拟机来保持图片同步并不是很理想。您可能已经知道这一点,但想要为下面提供的选项设置上下文。

您的潜在选项如下

  1. 您可以使用新的Azure的文件服务设置文件共享(在预览)http://blogs.technet.com/b/uspartner_ts2team/archive/2014/06/09/setting-up-a-file-share-for-the-new-azure-file-service.aspx。这将是所有图像的单一来源,您无需担心文件同步。

2.Store在Azure中的Blob的图像,并从该公司在VM http://blogs.msdn.com/b/yaohuang1/archive/2012/07/02/asp-net-web-api-and-azure-blob-storage.aspxhttp://www.nickharris.net/2012/11/how-to-upload-an-image-to-windows-azure-storage-using-mobile-services/

3.Host另一个虚拟机上运行的网络服务器,并从那里托管图片应用程序访问它们。然后这两个虚拟机可以引用这个映像。这里的成本将托管虚拟机。

所有3个潜在选项的关键点是无需在两个不同的地方同步文件,一切都在一个地方。

编辑基于新的信息: -

在方案中的托管文件放入虚拟机是不是正确的方法。如果您使用的是Azure LB,则即使对于短期解决方案,也应考虑以下因素。

Azure负载均衡器使用5元组(源IP,源端口,目标IP,目标端口,协议类型)来计算散列,并将流量映射到可用服务器,并且分布相当随机。所以如果你负载平衡虚拟机,你无法控制图像被访问的虚拟机。

手动更新在这种情况下是不可能的。

+2

这是一个公平的答案。正如OP所指出的那样,在两台虚拟机之间共享一个VHD是不可能的,就像无法让两台物理计算机从同一个直接连接的物理硬盘上运行一样。必须存在某种调解(一份文件份额)。不过,我认为你的理想解决方案可能是#2。存储在Blob存储中的二进制文件也可以通过URI直接引用,如果设置正确,我预计这会比#3便宜得多。 (我今天只避开#1的prod工作负载,只是它在预览版b/c)。 – 2014-08-27 21:32:02

+0

准确地说,在托管Web应用程序的虚拟机上,部署应用程序中的IIS中的Images文件夹被映射到磁盘中同样的vm在gb和app中有图像,它使用类似'/ Images /的URL来引用它。我同意转换为斑点可能最终是最好的解决方案。但是在短期内,如果这个虚拟机与另一个vm在负载均衡中一起使用,除了手动确保两个虚拟机上的映像文件夹内容相同并且生产应用程序之外,还有什么更好的选择不会中断.. – 2014-08-28 09:47:06

相关问题