tomcat集群下的session共享和负载均衡(redis实现)

简介: tomcat集群下的session共享和负载均衡(redis实现)

环境


操作系统:windows

tomcat1:Apache Tomcat/7.0.52(8085)

tomcat2:Apache Tomcat/7.0.52(8086)

jdk:1.8.0_251

nginx:nginx-1.20.1(8070)

redis:Redis 3.0.501(6379)


说明


基于redis实现的session共享,基于nginx实现的负载均衡和反向代理。

部署

  • session共享配置


1、拷贝相关jar包到所有tomcat的lib目录下


commons-pool2-2.2.jar

jedis-2.5.2.jar

tomcat-redis-session-manager-2.0.0.jar


2、编辑tomcat/conf/server.xml,修改内部的端口配置,保证端口号不会被重复使用(多服务器时端口可相同)


<Server port="8015" shutdown="SHUTDOWN">
    <Service name="Catalina">
        <Connector
            port="8085"
            protocol="HTTP/1.1" 
            redirectPort="8443"/>
    </Service>
</Server>


3、编辑tomcat/conf/context.xml,在Context标签内增加内容如下:


<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
     host="127.0.0.1"
     port="6379"
     database="0"
     maxInactiveInterval="60" />


说明:Manager 标签内的host和port等信息为redis组件的信息


  • 反向代理和负载均衡配置


1、在nginx/conf/nginx.conf文件中进行配置


可参考如下(包含反向代理和负载均衡):

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
  upstream web-01 {
    server 192.168.0.168:8085 weight=1;
    server 192.168.0.168:8086 weight=1;
  }
    server {
        listen       8070;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
      proxy_pass http://web-01;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}


  • tomcat测试资源


部署test.jsp到测试包内


test.jsp内容参考如下(title和h1的内容可根据不同的tomcat进行调整以方便观察):

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>tomcat1</title>
</head>
<body>
<center><h1>tomcat1</h1></center>
<center>
<h3>sessionId:</h3><%=session.getId()%>
<h3>session创建时间:</h3><%=session.getCreationTime()%>
<center>
</body>
</html>


启动

  • 双击nginx/nginx.exe启动
  • 双击redis/redis-server.exe启动
  • 双击tomcat/bin/startup.bat启动多个tomcat


测试

  • 浏览器输入test.jsp所在资源的路径,页面中会包含tomcat信息和sessionId信息

3df3955efe6644aa8f11487cbaeab139.png


请求地址的ip和port为nginx代理的

e6afbf86da984bf484deb089cce133f8.png

  • 可以观察到nginx会将多次请求进行负载均衡转发到不同的tomcat上,同时所有tomcat的sessionId是同一个,这个sessionId也可以在redis中看到
  • 效果图:

c8d3673c4f4d498798c94a7c2bd3d302.gif


redis内:

f620a67072714b068208f7752b8090da.png


相关文章
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
7月前
|
缓存 负载均衡 监控
135_负载均衡:Redis缓存 - 提高缓存命中率的配置与最佳实践
在现代大型语言模型(LLM)部署架构中,缓存系统扮演着至关重要的角色。随着LLM应用规模的不断扩大和用户需求的持续增长,如何构建高效、可靠的缓存架构成为系统性能优化的核心挑战。Redis作为业界领先的内存数据库,因其高性能、丰富的数据结构和灵活的配置选项,已成为LLM部署中首选的缓存解决方案。
759 25
|
8月前
|
存储 NoSQL 前端开发
Redis专题-实战篇一-基于Session和Redis实现登录业务
本项目基于SpringBoot实现黑马点评系统,涵盖Session与Redis两种登录方案。通过验证码登录、用户信息存储、拦截器校验等流程,解决集群环境下Session不共享问题,采用Redis替代Session实现数据共享与自动续期,提升系统可扩展性与安全性。
491 3
Redis专题-实战篇一-基于Session和Redis实现登录业务
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
948 26
|
存储 负载均衡 NoSQL
搭建高可用及负载均衡的Redis
通过本文介绍的高可用及负载均衡Redis架构,可以有效提升Redis服务的可靠性和性能。主从复制、哨兵模式、Redis集群以及负载均衡技术的结合,使得Redis系统在应对高并发和数据一致性方面表现出色。这些配置和技术不仅适用于小型应用,也能够支持大规模企业级应用的需求。希望本文能够为您的Redis部署提供实用指导和参考。
928 9
|
关系型数据库 MySQL 应用服务中间件
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
491 7
|
NoSQL 关系型数据库 MySQL
Tomcat、MySQL、Redis最大支持说明
综上所述,Tomcat、MySQL、Redis的并发处理能力均非固定值,而是通过合理的配置与优化策略,结合系统硬件资源,共同决定了它们在实际应用中的表现。开发者应根据应用的具体需求和资源条件,对这些组件进行细致的调优,以达到最佳性能表现。
278 1
|
负载均衡 算法 应用服务中间件
负载均衡技术在Web服务器集群中的应用
【8月更文第28天】随着互联网的发展和用户对Web服务需求的增长,单台服务器很难满足大规模访问的需求。为了提高系统的稳定性和扩展性,通常会采用Web服务器集群的方式。在这种架构中,负载均衡器扮演着至关重要的角色,它能够合理地分配客户端请求到不同的后端服务器上,从而实现资源的最优利用。
537 2
|
NoSQL Redis API
限流+共享session redis实现
【10月更文挑战第7天】
211 0