SQL ServerNet分布式系统之二:CentOS系统搭建Nginx负载均衡(下)

  上一篇文章介绍了VMWare12虚拟机、Linux(CentOS7)系统设置、计划Nginx1.6.3代理服务做负载均衡。接下来介绍通过Nginx将请求分发到各web应用处理服务。

 

1、Web应用开发

  1、asp.net mvc5开发

  (1)新建一个MVC5工程,新建1个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的值。

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>

站点:A
<br />
Session Value: @ViewBag.DD
<br/>
<br />
Session SCode: @ViewBag.SCode
<br />
<br />
Session ID: @ViewBag.SID
<br />
<br />
Cookies ID: @ViewBag.CID
<br />
<br />
Cookies Values: @ViewBag.CVAL
<br />
<br />
Cookies Values: @ViewBag.CDO

   以上实现session和cookies读写,为了注解负载均衡下,每回请求处理是不是保持一致,接下去主要内容,做负载均衡怎么样怎样保险session一致,对于asp.net技术session原理此处不做牵线,网上查找下大把。

 

  贰 、Session共享技术

   .Net平台对帮忙两种session存款和储蓄格局:

  (1)InProc 模式

    session存储于当下站点在同3个进程内,修改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
查看意况,确定保障服务符合规律运营。

SQL Server 1

 

  四 、Web站点安顿

  布置五个站点个别为:

  站点A:端口为8081,

  站点B:端口为8082,

  SQL Server 2

 

② 、成效意义表现

   (1)浏览器访问Index方法,http://192.168.119.128/demo,显示如下:

SQL Server 3     
  SQL Server 4

 

  (2)浏览器访问GetSession方法,http://192.168.119.128/demo/getsession,显示如下:

 SQL Server 5 
  SQL Server 6

 

  通过上述验证,获取到的session和cookies都以平等。

 

 

作者:andon
出处:http://www.cnblogs.com/Andon_liu
关于小编:专注于微软平台项目架构、管理。熟悉设计情势、领域驱动、架构划设想计、敏捷开发和品种管理。现首要从事ASP.NET
MVC、WCF/Web API、SOA、MSSQL、redis方面包车型大巴花色支付、架构、管理工科作。
如有失水准或提议,请一起念书商讨!
正文版权归小编和新浪共有,欢迎转发,但未经作者同意必须保留此段评释,且在篇章页面显著地方给出原来的书文连接。
如有毛病,能够邮件:568773262@qq.com 联系自己,多谢。

 

相关文章