架构之路:nginx与IIS服务器搭建集群实现负载均衡(三)

参考网址:https://blog.csdn.net/zhanghan18333611647/article/details/50811980

【前言】

在《架构之路:nginx与IIS服务器搭建集群实现负载均衡(二)》中提到有好多有趣的地方,接下来就为大家一块儿讲讲在深入研究过程中遇到那些有趣的事情。

·实战之行——发现问题

·探索之旅——寻出问题原因

·解决之道——解决问题

【实战之行】

在《架构之路:nginx与IIS服务器搭建集群实现负载均衡(二)》中做了小Demo,当时做出来后很兴奋,于是一鼓作气,用实战来检验。

实验前就雄心勃勃,Nginx确实大有来头(详情:猛击me),坚信这个东西可以弄成。

于是马不停蹄进入实战,这次实战是拿之前做的廊坊一中项目来进行的。

(1)在IIS上将廊坊一中系统发布两份【端口:一中A为8030;一中B为8040】(注:为了做接下来实验,将发布两个网站首页进行了区别—一中A的登录界面以及主界面有8030标识,一中B登录界面以及主界面有8040标识)如下截图:

(2)为了保证接下来实验正确性,先单独浏览两个网站确认发布没有问题,如下截图:

(3)配置好Nginx,由于和上篇博客配置过程一样,在此不再赘述。

(4)访问Nginx的监控端口8090——》出的登录界面是8030网站提供的——》输入用户名和密码点击登录;如下截图:

(5)预想是出现系统主界面,但是奇怪的现象发生,没有进入系统的主界面;而是返回8040的登录界面,如下图所示:

【探索之旅】

遇到问题就冲上去去探索去解决,往往能有意想不到的收获。

(一)本实验的基本架构如下图:

为什么会出现上述那种情况,由于学到的知识有限自己百思不得其解;根据自己之前的探究经验——想不明白原理情况下就去做猜想并做相应的实验去验证。

于是乎就开始了自己实验的探索之旅。

(二)探索五阶段

(1)第一阶段:开始的时候因为没有方向,就改配置瞎测试——改Nginx比重实验、同一台电脑不同浏览器实验、不同电脑来访问的实验、、、、

(2)第二阶段:总结第一阶段——盲目的这样做实验并没有好的效果;于是乎就改变方向,去网上查和别人交流。在这个过程中收获许多知识,比如:对Session和Cookie的理解,网站访问的来龙去脉等等。

最后确认这个问题属于Session共享问题。并做出猜想:由于Nginx服务比重配置为1:1,则轮流给客户端提供服务;当登录时将相应Session信息记录在IIS服务器8030时,当轮到8040给客户端提供服务时读不到这个Session信息而导致实战中遇到现象。

(3)第三阶段:有了猜想后,根据猜想做了比较有针对性的实验:

①刷新出8030的登录界面——》填写用户A和其对应密码点击登录——》得到8040的登录界面——》再次输入用户A和其对应密码点击登录——》进入8030的主界面。

②刷新出8030的登录界面——》填写用户A和其对应密码点击登录——》得到8040的登录界面——》再次输入用户B和其对应密码点击登录——》得到8030的登录界面。此后只要刷出8040的登录界面就能用用户A登录到8030的主界面,刷出8030登录界面用用户B就能进入8040的主界面。

通过这两个实验验证上面自己的猜想,不过针对具体的过程自己还是比较模糊。

(4)第四阶段:通过代码来验证,廊坊一中是用MVC来做的,下面就是登录这条线的代码分析:

①用户输入用户名和密码后去访问登录的Controller,如下图示:

②登录Controller接受住用户名后进行校验;若成功则返回成功标识,如下图所示:

③登录页面接受到成功标识后再次申请访问主页面Controller,如下图所示:

④主页面的Controller对来访问的请求先进行拦截,如下图所示:

⑤拦截后,检查是否有相应的Session信息;若有则进入主页,若没有则返回登录页面,如下图:

(5)第五阶段:实验和代码相结合,再次从原理上描述出现实战中的情况;用图来对上述实验进行再现:

【解决之道】

通过探索明白了问题产生的根本在于Session没有共享;

接下来就是如何去解决该问题;通过上网查找以及和别人交流,经过不懈的尝试最终找到了利用另外一台服务器来存储Session从而实现Session共享来解决这个问题。

有了上面的基础这次从   原理——》实现——》实验验证

(一)原理:

(1)基本架构图改成如下所示:

(2)一次登陆的来龙去脉如下图所示:

(二)实现:

原理上明白如何解决;接下来就是考虑如何去做?

通过查阅相关资料用SQLServer来做session的存储,让网站连上,从而实现Session共享。

(1)建立session数据库步骤如下:

①执行.Net自带的脚本,如下图所示:

②生成相应的数据库,如下图:

③为保证8030和8040读到是同一个Session需将,该库中的一个存储过程做修改;见下图:

④启动ASP.Net State Service服务(建议将其设为自启动)

(2)在8030和8040的网站的配置文件中,添加连接该库的字符串;如下图所示:

(三)实验验证:

(1)重启两个网站和Nginx服务(重启Nginx命令:nginx.exe -s reload)——》用浏览器访问Nginx监听端口8090——》出现登录界面——》输入用户名和密码;如下图所示:

(2)点击登录,奇迹出现;见下图:

(3)刷新主界面,见下图:

(4)查看数据库中存储Session表的数据;如下图:

原文地址:https://www.cnblogs.com/zxtceq/p/10305393.html

时间: 2024-08-26 11:22:31

架构之路:nginx与IIS服务器搭建集群实现负载均衡(三)的相关文章

架构之路:nginx与IIS服务器搭建集群实现负载均衡(二)

[前言] 在<架构之路:nginx与IIS服务器搭建集群实现负载均衡(一)>中小编简单的讲解了Nginx的原理!俗话说:光说不练假把式.接下来,小编就和大家一起来做个小Demo来体会一下Nginx的神奇之处. [准备工作] ·安装一款文本编辑器(这里以Notepad++为例) ·下载Nginx(这里以Nginx-1.4.7为例,其他版本操作相同) ·建两个简单网页:在文件夹test1新建一个html页内容为--我是Test1,在文件夹test2新建一个html页内容为--我是Test2) ·将

使用LVS+NAT搭建集群实现负载均衡

使用LVS+NAT搭建集群实现负载均衡 LVS集群简介    计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式.集群计算机通常用来改进单个计算机的计算速度和/或可靠性.一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多        LVS集群分布图   集群有三种类型:           

使用LVS+DR搭建集群实现负载均衡

使用LVS+DR搭建集群实现负载均衡 DR模式的概述与工作原理 DR模式服务概述:        Direct Routing(直接路由) --在同一个地域,同一个网段 Director分配请求到不同的real server.real server处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接.负载均衡器仅处理一半的连接,避免了新的性能瓶颈,同样增加了系统的可伸缩性.Direct Routing由与采用物理层(修改MAC地址)技术,因此所有服务器都必须在一

Web服务器Tomcat集群与负载均衡技术

我们曾经介绍过三种Tomcat集群方式的优缺点分析.本文将介绍Tomcat集群与负载均衡技术具体实施过程. 在进入集群系统架构探讨之前,先定义一些专门术语: 1. 集群(Cluster):是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信.应用程序可以通过网络共享内存进行消息传送,实现分布式计算机. 2. 负载均衡(Load Balance):先得从集群讲起,集群就是一组连在一起的计算机,从外部看它是一个系统,各节点可以是不同的操作系统或不同硬件构成的计算机.如

用apache和tomcat搭建集群,实现负载均衡

型的企业应用每天都需要承受巨大的访问量,在着巨大访问量的背后有数台服务器支撑着,如果一台服务器崩溃了,那么其他服务器可以使企业应用继续运行,用户对服务器的运作是透明化的,如何实现这种透明化呢?由如下问题需要解决. 一.Session的复制 二.如何将请求发送到正常的服务器 针对以上问题,可以使用群集和负载均衡来解决,整体架构如下:  中间由一台服务器做负载均衡(Load Balancer),它将所有请求,根据一定的负载均衡规则发送给指定的群集服务器(Cluster),群集服务器拥有着相同的状态和

LVS搭建集群实现负载均衡-NAT模式

服务介绍: LVS 简称 Linux Virtual Server,在实际环境中经常作为B/S结构的网络应用中的负载均衡器来使用,工作在7层网络模型中的,网络层,也就是通常说的IP层,由于数据的处理是在Linux内核态完成的,所以性能很高 nat 模式: 支持任 何操作系统,以及私有网络,只需要一个公网ip ,系统性能受到限制,每次执行nat需要重写包,有一定延迟. 实验环境 实验环境: xuegod 63   VIP:eth0 192.168.0.103    ; DIP:eth1 192.1

nginx反向代理tomcat集群达到负载均衡,同时使用proxy_cache做web缓存

Nginx最早是作为一款优秀的反向代理软件,以高并发下的卓越性能被越来越多的用户所用户,国内最早研究nginx的是张宴,该大牛的博客地址:http://zyan.cc/ .但是随着需求的发展,nginx的功能已经不再单单是反向代理,现在已经更倾向作为web容器. Nginx从0.7.48版本开始,支持了类似Squid的缓存功能.Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache相关指令集构成,前者用于反向代理时,对后端内容源服务器进行缓存,后者主要用于对

在Linux上使用Nginx为Solr集群做负载均衡

在Linux上使用Nginx为Solr集群做负载均衡 在Linux上搭建solr集群时需要用到负载均衡,但测试环境下没有F5 Big-IP负载均衡交换机可以用,于是先后试了weblogic的proxyserver,和Apache,效果均很差,两台服务器做了负载均衡之后并发响应速度还没单台不做负载均衡的速度快.最后使用nginx,效果很不错,下面将在Linux上安装步骤记述一下. 1        安装准备 nginx软件版本:nginx 1.2.5 安装包:rhel_nginx-1.2.5-1.

Nginx实现tomcat集群进行负载均衡

一.背景 随着业务量和用户数量的激增,单一的tomcat部署应用已经无法满足性能需求,而且对于每次发布项目期间服务不可用的问题也凸显,既然出现了这个问题,那么我们本文就借助nginx来完美的解决这个问题. 二.基本概念 1.说明:关于Nginx的概念和介绍以及Centos7下安装步骤,请移步:Centos7安装Nginx实战 2.正向代理和反向代理 假设我们给定客户端A.代理服务器B.以及最终服务器C 正向代理:代理服务器B来代替客户端A来访问最终服务器C并将最终结果转发给客户端A,站在客户端A