Net分佈式系統之二:CentOS系統搭建Nginx負載均衡(下)

  上一篇文章介紹了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都是一致。

 

 

做者:andon
出處: http://www.cnblogs.com/Andon_liu 關於做者:專一於微軟平臺項目架構、管理。熟悉設計模式、領域驅動、架構設計、敏捷開發和項目管理。現主要從事ASP.NET MVC、WCF/Web API、SOA、MSSQL、redis方面的項目開發、架構、管理工做。 若有問題或建議,請一塊兒學習討論! 本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。 若有問題,能夠郵件:568773262@qq.com 聯繫我,謝謝。
相關文章
相關標籤/搜索