2017-05-17 327 views
1

有關實例的Azure網站清晰度是否將這些實例運行在多臺計算機上,如Web服務器場環境,其中一個客戶端請求(會話)可以由服務器場中的不同服務器作爲服務器。Azure網站實例究竟是什麼

問題與服務器場asp.net應用程序是我們可以放鬆會話變量,如果是這樣的話,爲了解決這個問題,我們在web.config中添加機器密鑰,以確保客戶端會話始終是服務器由相同的服務器所以不會失去會話變量。

Azure實例如何工作。這並不意味着我們可以在同一個計劃下擁有10個網站,讓我們可以通過以前的標準。

我在託管關於Azure的asp.net基於webform的網站我很困惑,究竟是如何工作的。互聯網上有很多文章造成混亂。

回答

2

PaaS的事情是,你不要必須關心這一點。如果你有一個有狀態網站,您可以使用ARR親和力設置,以確保客戶端總是得到相同的實例: enter image description here

+1

當然,如果一個實例因故障或自動縮放而關閉,事情就會崩潰;) – juunas

+0

ARR Affinity很大程度上解決了這個問題,但並不能完全證明這一點,因爲如果該實例失敗,我們仍然可能丟失會話並且對我的理解實例就像一個虛擬機。所以從我這邊來看,失敗證明可以是基於SQL SERVER的會話解決方案。現在這會導致另一個問題,如果會話服務器關閉了SQL Server羣集服務器或VR Server與SQL Server的用戶帳戶。 – Learning

+0

SQL Server將是一個選項,但用於存儲會話信息的首選Azure資源是Redis緩存。標準層提供複製和故障轉移功能,並提供99,99%的SLA。這可能是最好的,你可以得到(沒有100%的解決方案)。 –

2

添加到馬丁·布蘭德的答案。

應用服務計劃可以有多個實例。這些實例運行該計劃中的所有應用程序。所以它幾乎就像一個經典的網絡農場。除了它更容易管理。

有一個更好的方法來保持Web農場中的會話信息,而不是依賴ARR Affinity的粘性會話。 將會話數據放在中心位置。爲此,您可以使用Azure Redis緩存或SQL數據庫。有一些現成的會話狀態提供程序可用於插入ASP.NET應用程序。這樣你的會話狀態就不會存儲在實例中,所以你不需要關心客戶端是否碰到同一臺服務器。

我與ARR Affinity存在的問題是,Azure不保證您的實例將保持運行。硬件故障可能會導致一個失敗,並且會丟失一部分會話數據。如果你使用自動縮放,同樣的事情。

+0

我同意Redis會是更好的選項來存儲會話信息。 –