我當前的超小型虛擬機達到了限制,因此我決定創建第二個超小型實例並將這兩個實例添加到可用性集中,以便我的服務每次都可用,並且透過負載平衡器也可以平衡負載。我的問題是知道數據會發生什麼?兩者會一樣嗎?因為我需要兩者都提供相同的數據!例如:
Request1 -> vm1 -> 新增資料 Request2 -> vm2 -> 想要讀取先放入 vm1 的數據
或者甚至更簡單:如果我運行一個 wordpressblog 並添加一個博客,它必須在兩者上都可用!
道
答案1
每個虛擬機器都由自己的 vhd 支持,該 vhd 駐留在 Azure 儲存體中的頁面 Blob 中。這不是儲存需要在多個實例之間共享的任何類型的內容的好地方(並且進程內會話狀態也將僅限於該虛擬機器的運行實例)。您需要將會話狀態和任何其他持久性資料儲存在兩個虛擬機器都可以存取的公共位置,但不要這樣做不是將內容直接儲存在 vhd 的主磁碟或臨時磁碟上。
對於會話狀態,您可以輕鬆設定 Windows Azure SQL 資料庫(基本上是 sql-as-a-service)並將其用作會話狀態提供者。或者您可以運行 memcached、使用表存儲或選擇完全不同的東西 - 我將把其他想法留給您想像。
運行 WordPress 也是如此 - 內容需要位於公共資料儲存中。由於 WordPress 使用 MySQL,因此您可以在獨立的虛擬機器執行個體中設定 MySQL,或透過 Azure Store 訂閱 MySQL 資料庫。
另一種選擇是將內容儲存在 Blob 儲存中,該儲存完全獨立於您創建的任何虛擬機,並且非常容易存取。 Blob 儲存以及表格儲存具有出色的語言 SDK 支持,該支援基於 REST API(目前為 .net、php、java、python、node 和 ruby SDK)建置。您可以從 Azure 取得選擇的 SDK下載頁。您也可以仔細閱讀原始碼,在github 倉庫。