Net分布式系统之二:CentOS系统搭建Nginx负载均衡(下)
上一篇文章介绍了VMWare12虚拟机、Linux(CentOS7)系统安装、部署Nginx1.6.3代理服务做负载均衡。接下来介绍通过Nginx将请求分发到各web应用处理服务。
一、Web应用开发
1、asp.net mvc5开发
(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的值。
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原理此处不做介绍,网上搜索下大把。
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都是一致。
出处:http://www.cnblogs.com/Andon_liu
关于作者:专注于微软平台项目架构、管理。熟悉设计模式、领域驱动、架构设计、敏捷开发和项目管理。现主要从事ASP.NET MVC、WCF/Web API、SOA、MSSQL、redis方面的项目开发、架构、管理工作。
如有问题或建议,请一起学习讨论!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
如有问题,可以邮件:568773262@qq.com 联系我,谢谢。
Net分布式系统之二:CentOS系统搭建Nginx负载均衡(下)的更多相关文章
- Net分布式系统之二:CentOS系统搭建Nginx负载均衡
一.关于CentOS系统介绍 CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat ...
- Nginx系列篇二:linux搭建Nginx负载均衡
建议先搭建好Nginx环境 可阅读--->Linux中搭建Nginx 1.准备好三台服务器[标配] 一.nginx负载均衡服务器:192.168.102.110,配置好Nginx 二.tomca ...
- Centos 7搭建Nginx负载均衡,最简单。
1.安装Nginx 1.1.下载Nginx安装包 Nginx 官网(https://nginx.org) 本次选择的是nginx-1.6.3.tar.gz版本,安装环境是centos7. 然后把下载好 ...
- Nginx系列一:正向代理和反向代理、Nginx工作原理、Nginx常用命令和升级、搭建Nginx负载均衡
转自https://www.cnblogs.com/leeSmall/p/9351343.html 仅供个人学习 一.什么是正向代理.什么是反向代理 1. 正向代理,意思是一个位于客户端和原始服务器( ...
- docker 搭建 nginx负载均衡
本文描述如何在一台机器上搭建nginx负载均衡,我将会启动3个nginx的docker,分别是1台前置nginx负责分发,后面2台负责处理请求. 首先我切换到/usr/local/docker/文件夹 ...
- Tomcat WEB搭建+Nginx负载均衡动静分离+DNS解析的实验
实验拓扑图: 实验环境: 在VMware workstation搭建虚拟环境,利用网络适配器的Nat和桥接模式模拟内网和外网环境. 实验过程中需要安装的工具包包括:vim unzip lrzsz ls ...
- 亿级Web系统搭建 Web负载均衡的几种实现方式(阿里)
我还写了两篇详细的 参考:六大Web负载均衡原理与实现 参考:LVS(Linus Virtual Server):三种IP负载均衡方式比较+另三种Web负载均衡方式 其中LVS.HAProxy可以工作 ...
- Linux学习10-CentOS搭建nginx负载均衡环境
前言 当自己的web网站访问的人越来越多,一台服务器无法满足现有的业务时,此时会想到多加几台服务器来实现负载均衡. 网站的访问量越来越大,服务器的服务模式也得进行相应的升级,怎样将同一个域名的访问分散 ...
- Linux搭建nginx负载均衡(两台服务器之间)
负载均衡种类 第一种:通过硬件负载解决,常见的有NetScaler.F5.Radware和Array等商用的负载均衡器,价格比较昂贵 第二种:通过软件负载解决,常见的软件有LVS.Nginx.apac ...
随机推荐
- [Android自定义控件] Android自定义控件
转载自:http://blog.163.com/ppy2790@126/blog/static/103242241201382210910473/ 开发自定义控件的步骤: 1.了解View的工作原理 ...
- Python KNN算法
机器学习新手,接触的是<机器学习实战>这本书,感觉书中描述简单易懂,但对于python语言不熟悉的我,也有很大的空间.今天学习的是k-近邻算法. 1. 简述机器学习 在日常生活中,人们很难 ...
- Java使用Jdbc操作MySql数据库(一)
这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...
- 论文笔记之: Hierarchical Convolutional Features for Visual Tracking
Hierarchical Convolutional Features for Visual Tracking ICCV 2015 摘要:跟卢湖川的那个文章一样,本文也是利用深度学习各个 layer ...
- document.write 方法
如果在文档加载结束后再调用document.write(),那么输出的内容将会 重写 整个页面. 某次被问及此问题,志之!
- 安卓中自定义并使用Volley框架请求网络
大家好,今天我们讲一下如何使用Volley框架请求网络,为何要使用Volley框架,这就要先说一下使用Volley框架请求网络的优点了,volley是易于定制的,即你可以根据需求来设定volley框架 ...
- Django常用命令及参数配置(Django 1.8.6)
常用命令 #新建Django项目 django-admin startproject mysite(项目名) #新建一个APP cd mysite python manager.py startapp ...
- ios7 indexPathForCell 的坑(真是一个大大的坑)
笔者在编写APP 有一个功能点击cell上一个button,修改cell的在tableview中的位置 在ios8上没有问题. 在ios7上总是崩溃 以下是崩溃后提示: Terminating app ...
- 简单的Web留言本
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- Nginx+Nodejs搭建图片服务器
图片上传请求由Node处理,图片访问请求由Nginx处理. 1.Nginx配置 #user nobody; worker_processes 1; #error_log logs/error.log; ...