CentOS 7 nginx+tomcat9 session处理方案之session复制
我们的目标是所有服务器上都要保持用户的Session,那么将每个应用服务器中的Session信息复制到其它服务器节点上是不是就可以呢?
这就是Session的第二中处理办法:会话复制
192.168.94.11(nginx)
192.168.94.22(tomcat1)
192.168.94.33(tomcat2)
关闭SElinux和防火墙
# 每台服务器都一样
[root@nginx ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
:: localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.94.66 nginx
192.168.94.22 tomcat1
192.168.94.33 tomcat2
[root@nginx ~]# scp /etc/hosts 192.168.94.22:/etc/hosts
The authenticity of host '192.168.94.22 (192.168.94.22)' can't be established.
ECDSA key fingerprint is SHA256:LztMUHktwCLql3Iw5/phDFbJoKLLO/BBNUVNV7DcAcU.
ECDSA key fingerprint is MD5:f7:4e:9a:f2::bc:c5::d2:a9::b0:bf:4b:bb:7c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.94.22' (ECDSA) to the list of known hosts.
root@192.168.94.22's password:
hosts % .3KB/s :
[root@nginx ~]# scp /etc/hosts 192.168.94.33:/etc/hosts
The authenticity of host '192.168.94.33 (192.168.94.33)' can't be established.
ECDSA key fingerprint is SHA256:LztMUHktwCLql3Iw5/phDFbJoKLLO/BBNUVNV7DcAcU.
ECDSA key fingerprint is MD5:f7:4e:9a:f2::bc:c5::d2:a9::b0:bf:4b:bb:7c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.94.33' (ECDSA) to the list of known hosts.
root@192.168.94.33's password:
hosts % .0KB/s :
安装nginx
[root@nginx ~]# wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.14.0-1.el7_4.ngx.x86_64.rpm
[root@nginx ~]# yum -y install pcre-devel zlib-devel openssl-devel
[root@nginx ~]# rpm -i nginx-1.14.-.el7_4.ngx.x86_64.rpm
[root@nginx ~]# vim /etc/nginx/nginx.conf # 修改配置文件 添加以下内容 upstream tomcat {
server 192.168.94.22:;
server 192.168.94.33:; } server {
listen ;
server_name 192.168.94.11:;
location / {
proxy_pass http://tomcat;
proxy_set_header X-Real-IP $remote_addr; }
CentOS 7 配置Tomcat 有Tomcat的安装方法
配置tomcat
修改tomcat配置文件
[root@tomcat1 ~]# cp /usr/local/tomcat/conf/server.xml{,.bak}
[root@tomcat1 ~]# vim /usr/local/tomcat/conf/server.xml
将<Engine name="Catalina" defaultHost="localhost">修改为
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1"> #tomcat2的配置修改成 jvmRoute="tomcat2"
将<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>的注释去掉
[root@tomcat1 ~]# vim /usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml
在</web-app>的上面添加<distributable/>
编写测试页面
[root@tomcat1 ~]# vim /usr/local/tomcat/webapps/ROOT/s.jsp
Session ID:<%= session.getId() %><BR> # 显示session ID
SessionPort:<%= request.getServerPort() %> # 显示端口
<% out.println("This tomcat server 192.168.94.22");%> # IP自己修改 [root@tomcat2 ~]# vim /usr/local/tomcat/webapps/ROOT/s.jsp
Session ID:<%= session.getId() %><BR>
SessionPort:<%= request.getServerPort() %>
<% out.println("This tomcat server 192.168.94.33");%>
[root@nginx ~]# systemctl start nginx [root@tomcat1 ~]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk10
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started. [root@tomcat2 ~]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk10
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
测试
浏览器访问测试 http://192.168.94.22:8080/s.jsp 刷新后 session ID 未发生变化

浏览器访问测试 http://192.168.94.33:8080/s.jsp 刷新后 session ID 未发生变化

浏览器访问测试 http://192.168.94.66/s.jsp 刷新后 session ID 未发生变化 但两个tomcat在轮询


会话复制在Tomcat上得到了支持,它是基于IP组播(multicast)来完成Session的复制,Tomcat的会话复制分为两种:
全局会话复制:利用Delta Manager复制会话中的变更信息到集群中的所有其他节点
非全局复制:使用Backup Manager进行复制,它会把Session复制给一个指定的备份节点
会话复制不适合大的集群 , 不推荐生产使用 , 否则会导致 Session 复制时性能代价过高
CentOS 7 nginx+tomcat9 session处理方案之session复制的更多相关文章
- CentOS 7 nginx+tomcat9 session处理方案之session保持
Session保持(会话保持)是我们见到最多的名词之一,通过会话保持,负载均衡进行请求分发的时候保证每个客户端固定的访问到后端的同一台应用服务器.会话保持方案在所有的负载均衡都有对应的实现.而且这是在 ...
- nginx+php负载均衡集群环境中的session共享方案梳理
在网站使用nginx+php做负载均衡情况下,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态. 下面罗列几种nginx负载均衡 ...
- Nginx+PHP负载均衡集群环境中Session共享方案 - 运维笔记
在网站使用nginx+php做负载均衡情况下,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态. 下面罗列几种nginx负载均衡 ...
- Tomcat集群环境下session共享方案 通过memcached 方法实现
对于web应用集群的技术实现而言,最大的难点就是:如何能在集群中的多个节点之间保持数据的一致性,会话(Session)信息是这些数据中最重要的一块.要实现这一点, 大体上有两种方式:一种是把所有Ses ...
- linux+nginx+tomcat负载均衡,实现session同步
linux+nginx+tomcat负载均衡,实现session同步 花了一个上午的时间研究nginx+tomcat的负载均衡测试,集群环境搭建比较顺利,但是session同步的问题折腾了几个小时才搞 ...
- Nginx+Tomcat+memcached负载均衡实现session共享
http://blog.csdn.net/love_ubuntu/article/details/8464983 1. 安装各个软件不用说了. 2. 到tomcat的安装目录lib中,加入: me ...
- Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享
Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享 ============================= 蕃薯耀 2017年11月27日 http: ...
- 细说tomcat之集群session共享方案
1. Tomcat Cluster官网:http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.htmlTomcat原生支持的集群方案,通过组播消息 ...
- Tomcat利用MSM实现Session共享方案解说
Session共享有多种解决方法,常用的有四种:1)客户端Cookie保存2)服务器间Session同步3)使用集群管理Session(如MSM) 4)把Session持久化到数据库 针对上面Sess ...
随机推荐
- 解决Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2) ";
解决方案: https://blog.csdn.net/HeatDeath/article/details/79065872 https://blog.csdn.net/hjf161105/artic ...
- mtr命令详解诊断网络路由
首先安装mtr# yum -y install mtr 一般在windows 来判断网络连通性用ping 和tracert, ping的话可以来判断丢包率,tracert可以用来跟踪路由, 在 ...
- java把一个list分割成多个list存入map中(实例)
这都是最近我写工具遇到的一些点, 这些点就是指我在网上没搜到答案,然后实际上我为此花费了时间的 public static void main(String[] args) { List<Str ...
- Vue.js之Vue计算属性、侦听器、样式绑定
前言 上一篇介绍了Vue的基本概念,这一篇介绍一下Vue的基本使用. 一.搭建一个Vue程序 1.1 搭建Vue环境 搭建Vue的开发环境总共有三种方法: 引入CDN <script src=& ...
- Java代码中解压RAR文件
import java.io.File; import java.io.FileOutputStream; import de.innosystec.unrar.Archive; import de. ...
- java递归算法提前返回值带出
/** * */ package testJava.java.foreach; import java.util.ArrayList; import java.util.LinkedList; imp ...
- 如何在Linux下修改Mysql的用户(root)密码
下面给大家分享下在Linux下如何修改Mysql的用户(root)的密码,分两种情况:第一种当拥有原来的mysql的root密码,第二种情况忘记原来的mysql的root的密码. 修改的用户都以roo ...
- 离屏Canvas — 使用Web Worker提高你的Canvas运行速度
离屏Canvas — 使用Web Worker提高你的Canvas运行速度 原文链接: developers.google.com 现在因为有了离屏Canvas,你可以不用在你的主线程中绘制图像了! ...
- Spring MVC 知识点整理
extend:http://www.jianshu.com/p/bef0e52067d2 1. Redis 存储方式 Redis存储机制分成两种Snapshot 和 AOF.无论是那种机制,Redis ...
- pandas 处理文本数据
import pandas as pd import numpy as np 常规的字符串操作 s = pd.Series(['A',"B","C"," ...