上一篇文章介紹了VMWare12虛擬機、Linux(CentOS7)系統安裝、部署Nginx1.6.3代理服務作負載均衡。接下來介紹經過Nginx將請求分發到各web應用處理服務。nginx
1、Web應用開發web
一、asp.net mvc5開發redis
(1)新建一個MVC5工程,新建一個Controller,在Index方法實現將當前時間保存到Session["mysession"],並寫Cookies["mycookies"]存儲主機名和當前時間。數據庫
public ActionResult Index() { if (this.HttpContext.Session["mysession"] == null) { this.HttpContext.Session["mysession"] = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); } this.HttpContext.Response.Cookies.Add(new HttpCookie("mycookies") { Expires = DateTime.Now.AddDays(1), Value = HttpContext.Server.MachineName + "||" + DateTime.Now.ToString() }); return View(); }
(2)在Controller中新增第二個方法GetSession,顯示Session和Cookies的值。centos
public ActionResult GetSession() { if (this.HttpContext.Session["mysession"] != null) { ViewBag.DD = this.HttpContext.Session["mysession"].ToString(); ViewBag.SCode = this.HttpContext.Session["mysession"].GetHashCode().ToString(); ViewBag.SID = this.HttpContext.Session.SessionID; } ViewBag.CVAL = System.Web.HttpContext.Current.Request.Cookies["mycookies"].Value; ViewBag.CID = System.Web.HttpContext.Current.Request.Cookies["mycookies"].Name; ViewBag.CDO = System.Web.HttpContext.Current.Request.Cookies["mycookies"].Domain; return View(); }
(3)將session和cookies信息在頁面顯示,GetSession視圖代碼以下:設計模式
@{
ViewBag.Title = "GetSession";
}
<h2>站點:A -- GetSession</h2>
<span>站點:A</span>
<br />
<span>Session Value: @ViewBag.DD</span>
<br/>
<br />
<span>Session SCode: @ViewBag.SCode</span>
<br />
<br />
<span>Session ID: @ViewBag.SID</span>
<br />
<br />
<span>Cookies ID: @ViewBag.CID</span>
<br />
<br />
<span>Cookies Values: @ViewBag.CVAL</span>
<br />
<br />
<span>Cookies Values: @ViewBag.CDO</span>
以上實現session和cookies讀寫,爲了驗證負載均衡下,每次請求處理是否保持一致,接下來重要內容,作負載均衡如何如何保持session一致,對於asp.net技術session原理此處不作介紹,網上搜索下大把。瀏覽器
二、Session共享技術緩存
.Net平臺對支持幾種session存儲模式:cookie
(1)InProc 模式session
session存儲於當前站點在同一個進程內,修改web.config或者bin中文件更新,會致使session丟失。此模式爲默認模式。
(2)aspnet state 模式
aspnet state是將session存儲在狀態服務中,須要啓動ASP.NET State Service,能看到進程aspnet_state.exe。還須要在web.config配置此模式。
(3)SQLServer 模式
此模式須要SQL Server配置相關信息,啓動代理服務、數據庫帳號及表,並將web.config指向數據庫。
(4)第三方擴展 模式
本框架採用此模式,將session存儲到其餘存儲,好比:Memcached、redis緩存中,達到共享session的目的。能夠經過實現ASP.NET中的SessionStateStoreProviderBase這個抽象類擴展。本系統採用將session存儲在redis緩存中,經過引入 RedisSessionStateProvider組件。
Install-Package Microsoft.Web.RedisSessionStateProvider
三、Nginx服務狀態狀況
在centos終端輸入命令service nginx status 查看狀況,確保服務正常運行。
四、Web站點部署
部署兩個站點分別爲:
站點A:端口爲8081,
站點B:端口爲8082,
2、功能效果展示
(1)瀏覽器訪問Index方法,http://192.168.119.128/demo,顯示以下:
(2)瀏覽器訪問GetSession方法,http://192.168.119.128/demo/getsession,顯示以下:
經過以上驗證,獲取到的session和cookies都是一致。