負載均衡伺服器session共享的解決方案

2021-09-05 21:54:19 字數 2761 閱讀 1609

asp.net

的程式中要使用

session

物件時,必須確保頁面的

@page

指令中enablesessionstate

屬性是true

或者readonly

,並且在

web.config

檔案中正確的設定了

sessionstate

屬性。asp.net

中session

的狀態保持是由

web.config

檔案中的標記下的標記的

mode

屬性來決定的。該屬性有四種可能的值:

off、

inproc

、stateserver

和sqlserver。設為

off會禁用

session

。inproc

是預設的設定

,這種模式和以前的

asp的會話狀態的方法是類似的

,會話的狀態會被儲存在

asp.net

程序中,它的優點是顯而易見的:效能。程序內的資料訪問自然會比誇程序的訪問快。然而,這種方法

session

的狀態依賴於

asp.net

程序,當

iis程序崩潰或者正常重起啟時,儲存在程序中的狀態將丟失。

為了克服

inproc

模式的缺點,

asp.net

提供了兩種程序外保持會話狀態的方法。

asp.net

首先提供了提供了乙個

windows

服務:aspstate,

這個服務啟動後,

asp.net

應用程式可以將

mode

屬性設定為

「sateserver」,

來使用這個

windows

服務提供的狀態管理方法。

除了在web.config

檔案中設定

mode

屬性為stateserver

外,還必須設定執行

stateserver

伺服器的

ip位址和埠號

.1、如果在

iis所在的機器執行

stateserver則ip

位址就是

127.0.0.1,

埠號通常是

42424.

配置如下:

mode=」stateserver」

stateconnectionstring="tcpip=127.0.0.1:42424"

2、找一台伺服器作為session伺服器(如ip為:192.168.1.244),啟動其windows中的asp.net state service(預設的埠號為42424),把啟動型別改為自動;

3、 修改session伺服器登錄檔中的項hkey_local_machine\system\currentcontrolset\services \aspnet_state\parameters中的allowremoteconnection 鍵的值為1,其中的port鍵控制asp.net state service的監聽埠;修改後需要重啟asp.net state service才生效;

4、每台伺服器的web。config 的

stateconnectionstring都指向這台伺服器

使用這種模式

,會話狀態的儲存將不依賴

iis程序的失敗或者重啟

,會話的狀態將儲存在

stateserver

程序的記憶體空間中。

另一種會話狀態模式是

sqlserver

模式。這種模式是將會話的狀態儲存在

sql server

資料庫中的。使用這種模式前,必須至少有一台

sql server

伺服器,並在伺服器中建立需要的表和儲存過程。

.net sdk

提供了兩個指令碼來簡化這個工作:

installsqlstate.sql

和uninstallsqlstate.sql

。這兩國檔案存放在下面路徑中:

winntmicrosoft.netframework

要配置sql server

伺服器,可以在命令列中執行

sql server

提供的命令列工具

osql.exe

osql -s [server name] -u [user] -p [password]

例如:osql -s (local) -u as -p 「」-i installsqlstate.sql

做好必要的資料庫準備工作後,將

web.config

檔案中的

sessionstate

元素的mode

屬性改為

」sqlserver」,

並指定sql

連線字串。具體如下:

mode="sqlserver"

sqlconnectionstring="data source=127.0.0.1;userid=sa;password=;trusted_connection

=yes"

使用sqlserver

模式處了可以使

session

的狀態不依賴於

iis伺服器之外,還可以利用

sql server

的集群,使狀態儲存不依賴於單個的

sql server,

這樣就可以為應用程式提供極大的可靠性。

解決nginx負載均衡的session共享問題

之前有寫過ubuntu環境下搭建nginx環境,今天來談一下nginx session共享問題,查了一些資料,看了一些別人寫的文件,總結如下,實現nginx session的共享伺服器有多台,用nginx做負載均衡,這樣同乙個ip訪問同乙個頁面會被分配到不同的伺服器上,如果session不同步的話,...

解決nginx負載均衡的session共享問題

之前有寫過ubuntu環境下搭建nginx環境,今天來談一下nginx session共享問題,查了一些資料,看了一些別人寫的文件,總結如下,實現nginx session的共享伺服器有多台,用nginx做負載均衡,這樣同乙個ip訪問同乙個頁面會被分配到不同的伺服器上,如果session不同步的話,...

伺服器負載均衡演算法

3.1 伺服器負載均衡演算法 big ip是一台對流量和內容進行管理分配的裝置。它提供10種靈活的演算法將資料流有效地 到它所連線的伺服器群。而面對使用者,只是一台虛擬伺服器。使用者此時只須記住一台伺服器,即虛擬伺服器。但他們的資料流卻被big ip靈活地均衡到所有的伺服器。這10種演算法包括 輪詢...