需求:
PC端考试系统在外网进行,发布多个IIS服务器,用Nginx解决负载均衡的问题,用Redis解决session共享的问题,具体操作如下。
方案:
程序中修改:
1、在配置文件中添加redis的服务器,如下:
1、 引用redis的工具类,如下:
2、 引入全局变量,在这里是学号作为全局变量
3、 程序在开启的时候,运行mypage类,mypage类继承page,并重写其中的方法,判断是否有key为全局变量的ursercode存在。
整体思路:在程序启动的时候,首先运行mypage方法,在运行此方法的时候,首先初始化RedisSession类,(该类目前方法比较多,执行的比较慢。等正式用的时候,可以将没有用到的方法都删除),初始化方法后判断是否有global.UserCode,假如没有,则跳转到登录页面,假如有,则不跳转。
4、 在登录的时候,需要将key值加入到redis中,这样才有了程序启动的时候判断key值。
将程序发布到IIS上面,形成2个端口号,分别是8010/8055
Redis:
在window系统中安装redis(window版本,绿色版),直接启动即可。可以用客户端工具RedisDesktopManager进行连接。
Nginx:
在window系统中安装nginx(window版本,绿色版),直接启动集合。
修改Nginx的配置文件:
配置上8010和8055的端口号,实现负载均衡。为了区分俩个网址,在其界面上也有所不同。
效果:
我们首先登陆,然后我们可以进入到主界面,当我们访问
的时候,主界面为:这时候我们访问的是8010的IIS服务器。
我们刷新页面,页面的内容变为:
这时候访问的是8055的IIS服务器,虽然访问了不同的IIS服务器,但是没有跳转登录页,session共享实现。
至此,session共享和负载均衡都已经实现。