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

news2024/9/21 20:45:26

环境

操作系统:windows
tomcat1:Apache Tomcat/7.0.52(8085)
tomcat2:Apache Tomcat/7.0.52(8086)
jre:1.7.0_80
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信息
    在这里插入图片描述

  • 请求地址的ip和port为nginx代理的
    在这里插入图片描述

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

  • 效果图:
    在这里插入图片描述

  • redis内:
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/511943.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于 SpringBoot+WebSocket 无DB实现在线聊天室(附源码)

文章目录 基于 SpringBootWebSocket 无DB实现在线聊天室0 项目说明0.1 样例展示0.2 源码地址 1 WebSocket 简介1.1 HTTP1.2 WebSocket1.2.1 WebSocket 协议1.2.2 WebSocket 交互 2 使用教程2.1 客户端&#xff08;浏览器&#xff09;2.1.1 WebSocket 对象2.1.2 WebSocket 事件2…

重装系统后,qt5.11.3升级到qt5.12.6所遇到的问题

前提&#xff1a;重装了系统&#xff1a; c/qt windows10 语音模块TTS异常&#xff0c;数据库缺少驱动 一&#xff1a;语音模块不能播放 qt使用语音模块时&#xff0c;在初始化时出现异常&#xff1a; onecore\com\combase\dcomrem\resolver.cxx(2299)\combase.dll!00007FF8…

Oracle存储过程~封神之路

简介 Oracle 存储过程是 Oracle 数据库中的一种数据处理对象&#xff0c;它可以在数据库中定义一组预定义的 SQL 语句&#xff0c;用于完成特定的数据库操作。存储过程可以被授权的用户调用&#xff0c;并且可以执行多个语句&#xff0c;这些语句可以被视为一个单独的操作&…

“深圳首届十大金口碑人物”优必选科技创始人兼CEO周剑获此殊荣

深圳晚报社联合深圳市诚商信用评级有限公司、深圳市诚信营商促进会和中国善网&#xff0c;共同举办了首届“金口碑”评选活动。活动涵盖多个领域&#xff0c;历经多个环节的评定和实地走访&#xff0c;最终有10名个人、20家企业和70家商户成功获得“深圳首届十大金口碑人物”、…

Visual C++实现推箱子游戏的核心算法设计与实现(附源码和和资源)

需要源码和资源请点赞关注收藏后评论区留言私信~~~ 在前面的博客中已经讲解了推箱子游戏的菜单和各种对话框的实现&#xff0c;下面对推箱子游戏的核心算法设计和实现进行讲解 一、地图文件读取模块的设计与实现 地图文件读取模块&#xff0c;主要负责将地图文件进行读取&…

【AI大模型】“讯飞星火”认知大模型正式发布 计划10月底赶超ChatGPT

文章目录 前言你使用过这种对话式AI吗&#xff1f;有什么看法或感受&#xff1f;“讯飞星火大模型将超越chatgpt&#xff1f;”这类型的人工智能对现在的社会有什么意义&#xff1f;这类型的人工智能&#xff0c;未来前景如何&#xff1f;申请体验写在最后 前言 5月6日&#xf…

科普:跨链桥是如何被黑的?

科普&#xff1a;跨链桥是如何被黑的&#xff1f; [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hbvPVTkb-1666679410875)(htTPS://tva1.sinaimg.cn/large/e6c9d24ely1h4r0auxvmxg20tr04ojug.gif)] 跨链桥是一种允许两个独立区块链网络之间进行通信…

【git】用好 stash,工作超nice

一、介绍 如果修改后的内容还不想commit&#xff0c;就可以用git stash命令。它会将工作区和暂存区中的修改(也就是还没commit的内容)都会被保存到堆栈里&#xff0c;并在之后恢复到任意指定的分支上。 二、应用场景 1、在分支a进行开发feature 1时&#xff0c;突然需要紧急…

【AI大模型】讯飞星火大模型能否超越chatgpt?

文章目录 前言你使用过这种对话式AI吗&#xff1f;有什么看法或感受&#xff1f;“讯飞星火大模型将超越chatgpt&#xff1f;”这类型的人工智能对现在的社会有什么意义&#xff1f;这类型的人工智能&#xff0c;未来前景如何&#xff1f;申请体验写在最后 前言 5月6日&#xf…

机器学习-10 聚类算法

聚类算法 算法概括聚类&#xff08;clustering&#xff09;聚类的概念聚类的要求聚类与分类的区别 常见算法分类聚类算法中存在的问题 距离度量闵可夫斯基距离欧式距离&#xff08;欧几里得距离&#xff09;曼哈顿距离切比雪夫距离皮尔逊相关系数余弦相似度杰卡德相似系数 划分…

建造者模式详解:建造随意搭配的肯德基套餐

一、简介 建造者模式&#xff08;Builder Pattern&#xff09;是五种创建型设计模式之一&#xff0c;它将一个复杂对象的构建与其表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。这句话怎么理解呢&#xff1a;一个对象的构建过程本质上就是这个对象包含的所有成员…

一觉醒来IDEA感觉不香了,AI智能编程工具Cursor使用

一、简介 为使用人工智能编程而构建的编辑器&#xff0c;一款人工智能编程软件、智能Ai代码生成工具。 它有什么特点呢&#xff1f; 集成了GPT-4&#xff0c;国内可用&#xff0c;不仅有ChatGPT的聊天功能&#xff0c;还有强大的自动代码生成能力&#xff0c;简直是编码神器。 …

Java中常见的几种数组排序方法

这篇文章总结一下我学习到的几种常见的数组排序方法 冒泡排序 冒泡排序在我看来是最简单、最基本的排序方法&#xff0c;我们应当将冒泡排序的原理和代码熟记于心。 冒泡排序的原理十分简单&#xff1a;用数组的第一个元素和第二个元素进行比较&#xff0c;将大的放到后面&a…

【Java编程系列】Minio实现文件上传下载

热门系列&#xff1a; 【Java编程系列】Amazon S3实现文件上传下载 目录 热门系列&#xff1a; 1、前言 2、Minio实战代码 2.1 Minio环境部署 2.2 Minio的Sdk对接实现 2.2.1 Minio Maven依赖 2.2.2 minio配置与初始化 2.2.3 上传文件 2.2.4 下载文件 2.2.5 生成文件…

【LLM大模型】LLM模型和指令微调方法

note 文章目录 note零、AIGC生成式模型1. 核心要素2. LLM evolutionary tree3. 几个bigScience里的概念 二、LLM大模型1. ChatGLM&#xff08;1&#xff09;GLM-130B&#xff08;2&#xff09;ChatGLM-6B 2. LLaMA3. RoBERTa4. Bloom5. PaLM 三、模型指令微调1. 指令微调的注意…

使用Vue+Vue-router+el-menu实现菜单功能实战

前言 上节回顾 上一小节我们使用H5+CSS3实现了管理平台的架构布局,并且通过Vuex的使用,获取到前端数据本地化存储的username,绑定到右上角进行全局展示。还不了解上下文的同学可以回顾一下 使用Vue+Vuex+CSS3完成管理端响应式架构模板实战 。 本节介绍 本小节已经是专栏的…

【C语言】字符串---刷题篇

1.统计字符串中元音字母的字数 2.使用起泡法和选择法将字符串按ASCII码值从小到大排列 3.将字符串中的数字字符倒置&#xff0c;即‘0’变‘9’、‘1’变‘8’、…、‘9’变‘0’.例如&#xff1a;字符串“a1b2c3d4e9f0”倒置变为“a8b7c6d5e0f9 4.将一个字符串中从第m个字符开…

187页9万字企业大数据治理与云平台实施方案(word)

1 项目背景概述 1.1 项目背景理解 1.2 项目需求范围 2 项目技术方案 2.1 咨询研究服务方案 2.1.1 咨询研究服务内容 2.1.2 咨询服务方案 2.2 第三方独立评估 2.2.1 概述 2.2.2 管理办法 2.2.3 考核机制 2.3 安全咨询研究服务方案 2.3.1 安全咨询服务内…

大唐杯学习笔记(1)—— 5G网络架构与组网部署

目录 一、名词汇总1.核心网与接入网2.5G网络架构3.核心网架构演进(1)2G核心网(1)3G&#xff0c;4G核心网 4.4G核心网架构5.5G核心网架构6.5G接入网网架构7.主要网元功能 二、5G主要网元功能1.用户面功能UPF(User Plane Function)2.会话管理功能SMF(Session Management Function…

【SpringCloud微服务实践】服务注册与发现(理论)

注册与发现 在之前的示例中&#xff0c;采取的是硬编码的方式&#xff0c;需要调用的微服务的地址是被我们写死在文件或代码中的。在传统应用程序中&#xff0c;一般都是这么做的&#xff0c;然而这种方式存在不少缺陷&#xff1a; 静态配置&#xff1a;因为是写死的网络地址…