2014-08-27 118 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

相關問題