欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

nginx 負(fù)載均衡 多站點(diǎn)共享Session

 更新時(shí)間:2012年11月06日 17:26:53   作者:  
這里我們就 演練一下 以數(shù)據(jù)庫(kù)的形來存儲(chǔ)Session,來實(shí)現(xiàn)多站點(diǎn)共享Session
多站點(diǎn)共享Session常見的作法有:

•使用.net自動(dòng)的狀態(tài)服務(wù)(Asp.net State Service);
•使用.net的Session數(shù)據(jù)庫(kù);
•使用Memcached。
•使用Cookie方式實(shí)現(xiàn)多個(gè)站點(diǎn)間的共享(這種方式只限于幾個(gè)站點(diǎn)都在同一域名的情況下);
這里我們就 演練一下 以數(shù)據(jù)庫(kù)的形來存儲(chǔ)Session,來實(shí)現(xiàn)多站點(diǎn)共享Session。

首先我們 建好一下站點(diǎn),如下圖:

 

Default.aspx 

其中 有二個(gè)Button  ,SetSession 主要是用于給一個(gè) Session 賦值(如:Session["ShareValue"] = “abcd”) ,

GetSession 主要就是獲得 一個(gè) Session 值。

具體代碼如下:

  

 代碼部分就這么多就行了…

下面就是要配置一下 Web.config了 , 其實(shí)主要就是在 <system.web>
這個(gè)節(jié)點(diǎn)中 增加 machineKey 及 sessionState 這兩個(gè)節(jié)點(diǎn),
1.增加machineKey 主要作用是:
“按照MSDN的標(biāo)準(zhǔn)說法:“對(duì)密鑰進(jìn)行配置,以便將其用于對(duì) Forms 身份驗(yàn)證 Cookie 數(shù)據(jù)和視圖狀態(tài)數(shù)據(jù)進(jìn)行加密和解密,并將其用于對(duì)進(jìn)程外會(huì)話狀態(tài)標(biāo)識(shí)進(jìn)行驗(yàn)證。”也就是說Asp.Net的很多加密,都是依賴于machineKey里面的值,例如Forms 身份驗(yàn)證 Cookie、ViewState的加密。默認(rèn)情況下,Asp.Net的配置是自己動(dòng)態(tài)生成,如果單臺(tái)服務(wù)器當(dāng)然沒問題,但是如果多臺(tái)服務(wù)器負(fù)載均衡,machineKey還采用動(dòng)態(tài)生成的方式,每臺(tái)服務(wù)器上的machinekey值不一致,就導(dǎo)致加密出來的結(jié)果也不一致,不能共享驗(yàn)證和ViewState,所以對(duì)于多臺(tái)服務(wù)器負(fù)載均衡的情況,一定要在每臺(tái)站點(diǎn)配置相同的machineKey?!?,具體可以查一下其它資料。
2.增加 sessionState 主要是讓 Session 保存在數(shù)據(jù)庫(kù)中。
具體配置如下:

復(fù)制代碼 代碼如下:

<machineKey validationKey="86B6275BA31D3D713E41388692FCA68F7D20269411345AA1C17A7386DACC9C46E7CE5F97F556F3CF0A07159659E2706B77731779D2DA4B53BC47BFFD4FD48A54"
decryptionKey="9421E53E196BB56DB11B9C25197A2AD470638EFBC604AC74CD29DBBCF79D6046"
validation="SHA1" decryption="AES"/>
<sessionState mode="SQLServer" sqlConnectionString="Data Source=PC-07195;Initial Catalog=AWBUISession;Persist Security Info=True;User ID=jins;Password=js@#$1234" allowCustomSqlDatabase="true" cookieless="false" timeout="100"/>


網(wǎng)站部分 這樣就好了。。。 下面就是要配置據(jù)庫(kù)了…..

數(shù)據(jù)庫(kù)配置:
使用aspnet_regsql.exe工具
ASP.NET 2.0版本后微軟提供了aspnet_regsql.exe工具可以方便的配置Session數(shù)據(jù)庫(kù).該工具位于 Web 服務(wù)器上的"系統(tǒng)根目錄\Microsoft.NET\Framework\版本號(hào)"文件夾中.

使用舉例:

aspnet_regsql.exe -S . -U sa -P 123456 -ssadd -sstype p
-S參數(shù):
表示數(shù)據(jù)庫(kù)實(shí)例名稱. 可以用"."表示本機(jī).
-U和-P參數(shù):
表示用戶名和密碼.
-E參數(shù):
可以再-U –P 與 -E中選擇一組. –E表示以當(dāng)前系統(tǒng)用戶通過windows身份驗(yàn)證登錄數(shù)據(jù)庫(kù), -U -P則是使用SqlServer用戶登錄數(shù)據(jù)庫(kù).
-ssadd / –ssremove 參數(shù):
-ssadd表示是添加Session數(shù)據(jù)庫(kù), -ssremove表示移除Session數(shù)據(jù)庫(kù).
sstype 參數(shù)說明:
t
將會(huì)話數(shù)據(jù)存儲(chǔ)到 SQL Server tempdb 數(shù)據(jù)庫(kù)中。這是默認(rèn)設(shè)置。如果將會(huì)話數(shù)據(jù)存儲(chǔ)到 tempdb 數(shù)據(jù)庫(kù)中,則在重新啟動(dòng) SQL Server 時(shí)將丟失會(huì)話數(shù)據(jù)。

將會(huì)話數(shù)據(jù)存儲(chǔ)到 ASPState 數(shù)據(jù)庫(kù)中,而不是存儲(chǔ)到 tempdb 數(shù)據(jù)庫(kù)中。
c
將會(huì)話數(shù)據(jù)存儲(chǔ)到自定義數(shù)據(jù)庫(kù)中。如果指定 c 選項(xiàng),則還必須使用 -d 選項(xiàng)包括自定義數(shù)據(jù)庫(kù)的名稱。
我的設(shè)置是:aspnet_regsql.exe -S . - E -d AWBUISession -ssadd -sstype c

好了。基本的 我們就已經(jīng)搞定了。。
現(xiàn)在 我們分別把我們剛建的一個(gè)網(wǎng)站 部署 到 IIS 中。不過我們既然要負(fù)載。至少也的部署兩份。

 

我們把 其中一個(gè) 服務(wù)器中的 defaut.aspx 中 “服務(wù)器 1” 改成 “服務(wù)器 2” ,這樣做的主要目地是 做一下 區(qū)別! 

具體如下:

 

兩個(gè)網(wǎng)站的 URL分別是:

 server 1:127.0.0.1:8081;

server 2:127.0.0.1:8080;   

OK。下面我們就是 配置 Nignx了。

 

首先 在 nginx\conf 配置  文件中找到 nginx.conf 這個(gè)文件 ,就記事本打開, 

 

做如上的 設(shè)置:

OK。  nginx  這樣配置 就算OK 了。 我們啟動(dòng)一下 nginx ..

在瀏覽器中 輸入我們 在 nginx 中配置的 URL 如:127.0.0.1:8090 

 

我們會(huì)看到 服務(wù)器 1 已經(jīng)開始為我們服務(wù)了,我們?cè)冱c(diǎn)一下 “SetSession”來設(shè)置一下一個(gè) 會(huì)話值,

 

我們會(huì)看到 服務(wù)器 2 開始 工作。這時(shí)我們?cè)冱c(diǎn)一下 “GetSesion”看一下 剛才在 服務(wù)器 1 設(shè)置 的會(huì)話值,結(jié)果如下 : 

 

出現(xiàn)這種情況 ,主要就是在數(shù)據(jù)庫(kù)中存儲(chǔ) 一個(gè)會(huì)話時(shí) 沒有做到 服務(wù)器1 和服務(wù)2的Session 共享,主要是 在 

ASPStateTempSessions 這個(gè)表中的 一個(gè)SessionID ,

其中的SessionId包括兩個(gè)部分:網(wǎng)站生成的24位SessionID及8位AppName對(duì)于不同的站點(diǎn),其AppName不同,在能夠在不同站點(diǎn)下使24位SessionID相同的情況下,要保證經(jīng)過組合加上AppName后的SessionID相同,可以通過修改存儲(chǔ)過程TempGetAppID,使其得到的SessionID與AppName無關(guān),修改TempGetAppID如下:

復(fù)制代碼 代碼如下:

ALTER PROCEDURE [dbo].[TempGetAppID]
@appName tAppName,
@appId int OUTPUT
AS
SET @appName = 'Test' --LOWER(@appName) 修改這里,使多個(gè)站點(diǎn)的APPname ,為一個(gè)固定值。
SET @appId = NULL
SELECT @appId = AppId
FROM [AWBUISession].dbo.ASPStateTempApplications
WHERE AppName = @appName
IF @appId IS NULL BEGIN
BEGIN TRAN
SELECT @appId = AppId
FROM [AWBUISession].dbo.ASPStateTempApplications WITH (TABLOCKX)
WHERE AppName = @appName
IF @appId IS NULL
BEGIN
EXEC GetHashCode @appName, @appId OUTPUT
INSERT [AWBUISession].dbo.ASPStateTempApplications
VALUES
(@appId, @appName)
IF @@ERROR = 2627
BEGIN
DECLARE @dupApp tAppName
SELECT @dupApp = RTRIM(AppName)
FROM [AWBUISession].dbo.ASPStateTempApplications
WHERE AppId = @appId
RAISERROR('SQL session state fatal error: hash-code collision between applications ''%s'' and ''%s''. Please rename the 1st application to resolve the problem.',
18, 1, @appName, @dupApp)
END
END
COMMIT
END
RETURN 0

經(jīng)過以上修改之后,下面要實(shí)現(xiàn)多個(gè)站點(diǎn)共用同一個(gè)SessionID.

重啟一下各站點(diǎn)。再在瀏覽一下網(wǎng)站 

點(diǎn) “SetSession”, 

 

再點(diǎn):“GetSession” 

這樣 我們就看到 服務(wù)器2 給出了我們 剛才在 服務(wù)器 1 中設(shè)置 的會(huì)話值了。

 

我們 再點(diǎn):“GetSession”, 

 

可以看到  服務(wù)器1 和服務(wù)器 2 返回的是相同的結(jié)果,達(dá)到了 “多站點(diǎn)共享Session”

 

 附加一點(diǎn): Session 過期刪除,主要是 在 SQL server 代理中的  作業(yè)完成。

具體的可以,查一下其它相關(guān)資料.

相關(guān)文章

  • 解決Nginx 配置 proxy_pass 后 返回404問題

    解決Nginx 配置 proxy_pass 后 返回404問題

    這篇文章主要介紹了Nginx 配置 proxy_pass 后 返回404問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • 修改Nginx配置返回指定content-type的方法

    修改Nginx配置返回指定content-type的方法

    nginx作為一個(gè)http服務(wù)器,在功能實(shí)現(xiàn)方面和性能方面都表現(xiàn)的非常優(yōu)越,下面這篇文章主要給大家介紹了關(guān)于修改Nginx配置返回指定content-type的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • nginx 訪問限制與訪問控制的實(shí)現(xiàn)

    nginx 訪問限制與訪問控制的實(shí)現(xiàn)

    訪問控制要做的事情是控制客戶端的資源訪問權(quán)限,本文主要介紹了nginx 訪問限制與訪問控制的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • HAProxy和Nginx搭建負(fù)載均衡器的實(shí)現(xiàn)

    HAProxy和Nginx搭建負(fù)載均衡器的實(shí)現(xiàn)

    負(fù)載均衡器是一個(gè)常用于分布式計(jì)算和網(wǎng)絡(luò)應(yīng)用中的系統(tǒng)組件,主要用于將客戶端的請(qǐng)求分發(fā)到多個(gè)后端服務(wù)器上,以實(shí)現(xiàn)高可用性、高性能和可擴(kuò)展性,本文主要介紹了HAProxy和Nginx搭建負(fù)載均衡器的實(shí)現(xiàn),感興趣的可以了解一下,感興趣的可以了解一下
    2023-11-11
  • 配置Nginx實(shí)現(xiàn)簡(jiǎn)單防御cc攻擊

    配置Nginx實(shí)現(xiàn)簡(jiǎn)單防御cc攻擊

    本文主要介紹lua+Nginx下如何快速有效得防御CC攻擊。至于如何安裝Nginx就不詳細(xì)介紹了,閑話少說,大家請(qǐng)看示例
    2018-02-02
  • ELK與Grafana聯(lián)合打造可視化監(jiān)控來分析nginx日志

    ELK與Grafana聯(lián)合打造可視化監(jiān)控來分析nginx日志

    這篇文章主要為大家介紹了ELK與Grafana的聯(lián)合打造可視化監(jiān)控來分析nginx日志,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • Nginx rewrite正則匹配重寫的方法示例

    Nginx rewrite正則匹配重寫的方法示例

    這篇文章主要介紹了Nginx rewrite正則匹配重寫的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • nginx實(shí)現(xiàn)發(fā)布靜態(tài)資源的方法

    nginx實(shí)現(xiàn)發(fā)布靜態(tài)資源的方法

    這篇文章主要介紹了nginx實(shí)現(xiàn)發(fā)布靜態(tài)資源的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Nginx常見的幾種回源方式實(shí)現(xiàn)

    Nginx常見的幾種回源方式實(shí)現(xiàn)

    本文主要介紹了Nginx常見的幾種回源方式實(shí)現(xiàn),通過Nginx回源文件至本地機(jī)房,域名解析采用內(nèi)外網(wǎng)單獨(dú)解析,外地辦公同事可以通過CDN進(jìn)行更新,感興趣的可以了解一下
    2024-02-02
  • Windows下Nginx的配置及配置文件部分介紹

    Windows下Nginx的配置及配置文件部分介紹

    這篇文章主要介紹了Windows下Nginx的配置及配置文件部分介紹,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-03-03

最新評(píng)論