全部运行在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复制!的更多相关文章

  1. Session服务器之Memcached与Redis

    安装Memcached[root@nginx ~]# yum -y install libevent memcached 指定用户大小等信息,工作环境中常指定大小一般为4到8G,此信息测试使用.[ro ...

  2. Session服务器之Redis

    Session服务器之Redis Redis与Memcached的区别内存利用率:使用简单的key value (键值对)存储的话,Mermcached 的内存利用率更高,而如果Redis采用hash ...

  3. Session服务器之Memcached

    材料:两台Tomcat(接Session复制一起做) 第一台Tomcat:IP为130 [root@localhost ~]# yum install libevent memcached -y    ...

  4. Apache + Tomcat + mod_jk实现集群服务及session共享

    实现效果:用apache 分发请求到tomcat中的对应的项目 原理:

  5. 【转载】HTTP Session 内存到内存复制的拓扑结构

    http://www.oschina.net/question/129540_23215 HTTP 协议本身是“连接 - 请求 - 应答 - 关闭连接”的模式,是一种无状态协议:然而随着 web 动态 ...

  6. 客户端session与服务端session

    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...

  7. ASP.NET状态服务及session丢失问题解决方案总结

    原文:ASP.NET状态服务及session丢失问题解决方案总结[转载] asp.net Session的实现: asp.net的Session是基于HttpModule技术做的,HttpModule ...

  8. 转:客户端session与服务端session

    会话(Session)跟踪是Web程序中常用的技术,用来 跟踪用户的整个会话 .常用的会话跟踪技术是Cookie与Session. Cookie通过在客户端记录信息确定用户身份 , Session通过 ...

  9. 【转】Android 服务器之SFTP服务器上传下载功能

    原文网址:http://blog.csdn.net/tanghua0809/article/details/47056327 本文主要是讲解Android服务器之SFTP服务器的上传下载功能,也是对之 ...

随机推荐

  1. 前台后台$.psot交互

    前台 {include file='public/header' /} <body class="login-bg"> <div class="logi ...

  2. Java“被迫”退出争霸,Python继续霸占首位!老牌程序员:我不服

    2019年转眼已经接近尾声,如果盘点下2019年最火的语言,除了Python还能有谁?你心中的王者语言又是谁? 这一年Python风光无限 这一年JAVA走向右边 这一年,我们都很感慨,你呢? 关于P ...

  3. Bugku-CTF之文件包含2 (150)

    Day37   文件包含2

  4. kali 安装与配置

    打开虚拟机 新建一个虚拟机 导入虚拟文件 然后进行下面的步骤 开启虚拟机 语言:中文简体 地区: 中国 语言: 汉语 自动安装 配置网络 配置域名 填写密码(两次一致) 自动校对时钟 使用整个磁盘 选 ...

  5. Eclipse使用段注释格式化代码后混乱情况解决

    今天在Eclipse写代码用到段注释代码块注释一个方法,习惯使用格式化代码,结果一看格式化后的代码就乱了.就像下面那样. 觉得太乱了,而且不好对比检查.如果取消注释中间的**还保存了的,好纠结.于是就 ...

  6. 117. 填充每个节点的下一个右侧节点指针 II

    Q: 给定一个二叉树 struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右 ...

  7. HDU 6631 line symmetric 计算几何

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6631 题意:共\(T\)组数据,每组数据给出\(n\)个点的坐标,这\(n\)个点按顺序给出,相邻的点 ...

  8. java_设计模式_装饰设计模式

    package IO; /* * 装饰设计模式 模拟咖啡 * 1.抽象组件:需要装饰的抽象对象(接口或抽象父类) * 2.具体组件:需要装饰的对象 * 3.抽像装饰类:包含了对抽象组件的引用以及装饰着 ...

  9. 吴裕雄 python 神经网络——TensorFlow 完整神经网络样例程序

    import tensorflow as tf from numpy.random import RandomState batch_size = 8 w1= tf.Variable(tf.rando ...

  10. JVM系列(二)之类加载

    什么是类的加载 类加载是指将源代码编译后的.class加载到内存中初始化待程序使用的过程,类加载的最终结果就是将.class字节码加载到JVM中生成一个java.lang.Class对象,提供给程序使 ...