Session服务器之Session复制!
全部运行在Tomcat下





第一台主机:192.168.200.131 安装nginx
修改hosts文件
[root@localhost ~]# vim /etc/hosts
192.168.200.131 nginx
192.168.200.130 node1
192.168.200.122 node2
//将hosts文件发送给另外两台主机
[root@nginx ~]# scp /etc/hosts 192.168.200.122:/etc
[root@nginx ~]# scp /etc/hosts 192.168.200.130:/etc
//关闭防火墙及安全机制
[root@localhost ~]# iptables -F
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# hostname nignx
[root@localhost ~]# bash //bash刷新
[root@nignx ~]#vim /usr/local/nginx/conf/nginx.conf
修改如下
#gzip on;
upstream tomcat_pool { //声明tomcat_pool,默认轮询
server 192.168.200.130: weight= max_fails= fail_timeout=10s;
//server 192.168.200.130:8080(节点端口)
//weight=1(权重)
//max_fails=1(最大故障数)
//fail_timeout=10s(故障超时)
server 192.168.200.122: weight= max_fails= fail_timeout=10s;
}
server {
listen 80;
server_name localhost;
charset utf-8;
access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_set_header Host $http_host; //此处要添加host头
//如果反向代理层的nginx不重写请求头中的host字段,将会导致请求失败,报400错误
proxy_pass http://tomcat_pool; //做tomcat代理
}
[root@nginx ~]# nginx -t
[root@nginx ~]# killall -HUP nginx
测试:

结论:131主机nginx做tomcat反向代理依旧可以访问tomcat页面
轮询测试:介于122、130ip之间相互变化
因为130、122主机都做了session.jsp服务,此时131主机也可以进入测试页面

Session绑定测试使得在122或130任意主机之间一个保持ip不变:
[root@nignx ~]#vim /usr/local/nginx/conf/nginx.conf
upstream tomcat_pool {
ip_hash; //ip_hash表示绑定
server 192.168.200.130:8080 weight=1 max_fails=1 fail_timeout=10s;
server 192.168.200.122:8080 weight=1 max_fails=1 fail_timeout=10s;
} 测试:
结论:这种方式极不稳定一旦122的主机服务中断,那么131服务必定从120跳转到130,这样会影响线上服务
解决方案一进行Session复制(在tomcat两台主机做nginx主机不用改变)

Session复制测试(131主机):
可以利用IE浏览器测试,测试结果为session不变,node在变,ip也在变
解决方案2:



=================================================================================
第二台主机:192.168.200.130 安装tomcat
[root@localhost ~]# hostname node1
[root@localhost ~]# bash
[root@node1 ~]#

建立session.jsp的测试
[root@node1 ~]# vim /usr/local/tomcat8/webapps/ROOT/session.jsp
Session ID:<%= session.getId() %><BR>
SessionPort:<%= request.getServerPort() %>
//第一条与第二条:开头都是直接在网页上输出
//后面的函数都是会自动获取本机session的ID号,根据机器信息自动生成
<% out.println("This tomcat server 192.168.200.130");%>
启动tomcat
[root@node1 ~]# /usr/local/tomcat8/bin/shutdown.sh
[root@node1~]# /usr/local/tomcat8/bin/startup.sh
测试:

Session复制:

[root@node1 ~]# /usr/local/tomcat8/bin/shutdown.sh
[root@node1 ~]# /usr/local/tomcat8/bin/startup.sh
[root@node1 ~]# netstat -anpt | grep -E "8080|4000" //有4000端口表示复制成功,没有4000端口表示复制失败,测试失败
Session复制测试:
Session复制测试结果应该为session不变,node在变,ip也在变(图为教师图)

本次实验失败
===============================================================================
第三台主机:192.168.200.122 安装tomcat
[root@localhost ~]# hostname node2
[root@localhost ~]# bash
[root@node2 ~]#

建立session.jsp的测试
[root@node2 ~]# vim /usr/local/tomcat8/webapps/ROOT/session.jsp
Session ID:<%= session.getId() %><BR>
SessionPort:<%= request.getServerPort() %>
//第一条与第二条:开头都是直接在网页上输出
//后面的函数都是会自动获取本机session的ID号,根据机器信息自动生成
<% out.println("This tomcat server 192.168.200.122");%>
启动tomcat
[root@node2~]# /usr/local/tomcat8/bin/shutdown.sh
[root@node2 ~]# /usr/local/tomcat8/bin/startup.sh
测试:

Session复制:

[root@node2~]# /usr/local/tomcat8/bin/shutdown.sh
[root@node2 ~]# /usr/local/tomcat8/bin/startup.sh
[root@node2~]# netstat -anpt | grep -E "8080|4000" //有4000端口表示复制成功没有4000端口表示失败
Session复制测试结果应该为session不变,node在变,ip也在变(图为教师图)

本次实验失败
Session服务器之Session复制!的更多相关文章
- Session服务器之Memcached与Redis
安装Memcached[root@nginx ~]# yum -y install libevent memcached 指定用户大小等信息,工作环境中常指定大小一般为4到8G,此信息测试使用.[ro ...
- Session服务器之Redis
Session服务器之Redis Redis与Memcached的区别内存利用率:使用简单的key value (键值对)存储的话,Mermcached 的内存利用率更高,而如果Redis采用hash ...
- Session服务器之Memcached
材料:两台Tomcat(接Session复制一起做) 第一台Tomcat:IP为130 [root@localhost ~]# yum install libevent memcached -y ...
- Apache + Tomcat + mod_jk实现集群服务及session共享
实现效果:用apache 分发请求到tomcat中的对应的项目 原理:
- 【转载】HTTP Session 内存到内存复制的拓扑结构
http://www.oschina.net/question/129540_23215 HTTP 协议本身是“连接 - 请求 - 应答 - 关闭连接”的模式,是一种无状态协议:然而随着 web 动态 ...
- 客户端session与服务端session
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...
- ASP.NET状态服务及session丢失问题解决方案总结
原文:ASP.NET状态服务及session丢失问题解决方案总结[转载] asp.net Session的实现: asp.net的Session是基于HttpModule技术做的,HttpModule ...
- 转:客户端session与服务端session
会话(Session)跟踪是Web程序中常用的技术,用来 跟踪用户的整个会话 .常用的会话跟踪技术是Cookie与Session. Cookie通过在客户端记录信息确定用户身份 , Session通过 ...
- 【转】Android 服务器之SFTP服务器上传下载功能
原文网址:http://blog.csdn.net/tanghua0809/article/details/47056327 本文主要是讲解Android服务器之SFTP服务器的上传下载功能,也是对之 ...
随机推荐
- DFA 简易正则表达式匹配
一个只能匹配非常简单的(字母 . + *)共 4 种状态的正则表达式语法的自动机(注意,仅限 DFA,没考虑 NFA): 好久之前写的了,记得有个 bug 一直没解决... #include < ...
- pyodbc-的一些说明
cursor的description 可以获得一些关于表的信息 info=cursor.description 此时表中有多少列就有多少个元素,一个元素就是一列的信息(格式是tuple),所以这里的i ...
- 1.BMap(百度地图)第二次加载显示不全
问题: bmap第一次加载显示没问题: 第二次 再次加载这个页面时,地图的显示出现了问题: . 分析问题出现原因:你要确保dom创建后且处于显示状态(即display不能为none)才能再次初始化地图 ...
- ISR吞吐性能问题
ISR大致可以分几类: Cisco 860.880.890 ISR1800 (fixed).1800 (modular).2800.3800 Series ISR1900.2900.3800.3900 ...
- 第一struts2程序
今天学习了第一个struts2程序 第一步建立一个java web程序 第二步 加入jar包 第三步 添加两个jsp文件 login.jsp和result.jsp文件 login.jsp 在body部 ...
- mysql 隔离性与隔离级别
提到事务,你肯定不陌生,和数据库打交道的时候,我们总是会用到事务.最经典的例子就是转账,你要给朋友小王转 100 块钱,而此时你的银行卡只有 100 块钱. 转账过程具体到程序里会有一系列的操作,比如 ...
- Unity引用System.Windows.Forms遇到的一些坑
这两天在做一个unity打开文件选择框的功能.网上找到两种方法, 第一种是调用win32打开对话框,这个挺好,但是有个致命的问题,没办法多选!!!多选的话返回的是根目录的路径,文件名返回不了,找了半天 ...
- laravel搭建博客实战的教程实例
这篇文章主要给大家介绍了关于利用laravel搭建一个迷你博客的相关资料,文中将一步步的实现步骤通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着来一起学习学习吧. 本文主 ...
- js中的日期控件My97 DatePicker
使用WdatePicker插件来渲染日期类型的页面. 以下代码用到的属性有: isShowClear是否显示清空按钮 skin皮肤的样式 readOnly是否只读 maxDate:最大的选择时间 &l ...
- ‘\0’的ASCII码
1.'\0'的ASCII码为0 2.用串口发送字符串时,可以通过'\0'判断字符串是否结束,但发送数字数组的时候不能通过'\0'判断数组是否结束,因为数字0与'\0'的ASCII码值相同.
