博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Net分布式系统之二:CentOS系统搭建Nginx负载均衡(下)
阅读量:7238 次
发布时间:2019-06-29

本文共 2683 字,大约阅读时间需要 8 分钟。

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

 

一、Web应用开发

  1、asp.net mvc5开发

  (1)新建一个MVC5工程,新建一个Controller,在Index方法实现将当前时间保存到Session["mysession"],并写Cookies["mycookies"]存储主机名和当前时间。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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的值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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";}

站点:A -- GetSession

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

   以上实现session和cookies读写,为了验证负载均衡下,每次请求处理是否保持一致,接下来重要内容,做负载均衡如何如何保持session一致,对于asp.net技术session原理此处不做介绍,网上搜索下大把。

 

  2、Session共享技术

   .Net平台对支持几种session存储模式:

  (1)InProc 模式

    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

 

  3、Nginx服务状态情况

  在centos终端输入命令service nginx status 查看情况,确保服务正常运行。

 

  4、Web站点部署

  部署两个站点分别为:

  站点A:端口为8081,

  站点B:端口为8082,

  

 

二、功能效果展现

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

        

 

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

     

 

  通过以上验证,获取到的session和cookies都是一致。

 

 

作者:andon 
出处:  
关于作者:专注于微软平台项目架构、管理。熟悉设计模式、领域驱动、架构设计、敏捷开发和项目管理。现主要从事ASP.NET MVC、WCF/Web API、SOA、MSSQL、redis方面的项目开发、架构、管理工作。 如有问题或建议,请一起学习讨论! 

转载地址:http://kerfm.baihongyu.com/

你可能感兴趣的文章
第一节 接口概述 [转贴]
查看>>
C# Attribute 用法备忘
查看>>
数据结构学习笔记(5.线性表之双向循环链表)
查看>>
智能家居趋势
查看>>
[Leetcode] Pow(x, n)
查看>>
关于Microsoft Speech SDK 中TTS的研究 [转]
查看>>
两个与后台有关的回调处理
查看>>
idhttp.post方式 调用datasnap rest 远程方法
查看>>
Gulp快速入门
查看>>
TClientDataSet的 fastscript封装
查看>>
有用的国外开源项目网址
查看>>
DataGridView 绑定DataTable方式编辑保存的bug?
查看>>
ComboBox 使用数据绑定时 Sorted 属性的bug
查看>>
BZOJ 3172 单词(ac自动机)
查看>>
具体数学第二版第四章习题(2)
查看>>
DotNetBar.7.0 Crack
查看>>
D3D中深度测试和Alpha混合的关系
查看>>
延时执行和取消延时执行
查看>>
关于线程安全
查看>>
使用Java自带的VisualVM监控远程主机JVM内存使用情况
查看>>