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

news/2024/7/10 0:20:39 标签: apache, tomcat, 负载均衡

环境

操作系统:windows
tomcat1:Apache Tomcat/7.0.52(8085)
tomcat2:Apache Tomcat/7.0.52(8086)
jdk:1.8.0_251
apache-http:httpd-2.2.17-win32-x86-no_ssl(8888)

说明

基于httpd实现的session共享、负载均衡和反向代理。

部署

  • httpd配置

1、直接双击httpd-2.2.17-win32-x86-no_ssl.msi文件安装httpd

2、修改httpd\conf\httpd.conf

修改监听端口

Listen 8888

增加自定义配置文件的引入

include "D:\software\httpd\conf\mod_jk.conf"

3、在httpd\conf\下新建mod_jk.conf文件

内容:

LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so
JkWorkersFile conf/workers.properties
JkMount /*.jsp controller

4、复制JK插件mod_jk-1.2.31-httpd-2.2.3.so到httpd\modules\下

5、在httpd\conf\下新建workers.properties文件

#server 
worker.list=controller
#========tomcat1======== 
worker.tomcat1.port=8025
worker.tomcat1.host=127.0.0.1
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1

#========tomcat2======== 
worker.tomcat2.port=8026
worker.tomcat2.host=127.0.0.1
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1

#========controller,负载均衡控制器======== 
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2
worker.controller.sticky_session=false
worker.controller.sticky_session_force=1
#worker.controller.sticky_session=1 

说明:

1、worker.xxx.port/host/type/lbfactor中的xxx为tomcat中server.xml内的jvmRoute标签的内容

2、port是AJP/1.3的端口号

1、在tomcat\conf\server.xml中:

修改ip和端口号

<Connector port="8085" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
<Connector port="8025" protocol="AJP/1.3" redirectPort="8443" />

增加jvmRoute配置

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
...

增加集群配置

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

1、部署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>

2、在所有工程包的web.xml中添加<distributable/>配置

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true">

  <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>
<distributable/>
</web-app>

启动

  • httpd

1、双击httpd\bin\ApacheMonitor.exe启动

2、点击界面中的start按钮启动

在这里插入图片描述

看到如下界面说明启动成功

在这里插入图片描述

双击tomcat/bin/startup.bat启动多个tomcat

测试

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

在这里插入图片描述

  • 请求地址的ip和port为httpd代理的

在这里插入图片描述

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

在这里插入图片描述


http://www.niftyadmin.cn/n/402737.html

相关文章

Java基础学习+面向对象

一&#xff0c;基础概念介绍 1.1Java跨平台原理&#xff08;一次编译&#xff0c;处处运行&#xff09; Java 源代码经过编译&#xff0c;生成字节码文件&#xff0c;交由 Java 虚拟机来执行&#xff0c;不同得系统有不同得JVM,借助JVM 实现跨平台。就比如说我们在 Windows 下…

【模拟电子技术】理论考核回顾

写在前面&#xff1a; 1&#xff1a;好好学习&#xff0c;早日学会看B站华成英老师的课&#xff0c;不然就会像我一样最后快挂科了。 2&#xff1a;杂谈&#xff1a;我觉得一个“智者”可以因为我不会做题来侮辱我的智商&#xff0c;但是不能借此侮辱我没好好复习。 3&#…

insmod rmmod modprobe用法和区别

模块加载&#xff08;insmod/modprobe&#xff09; insmod和modprobe都是用于加载Linux内核模块的工具&#xff0c;但它们在使用方式和功能上有一些区别。 insmod命令&#xff1a; 功能&#xff1a;insmod命令用于手动加载指定的内核模块到运行中的内核中。用法&#xff1a;in…

Dell服务器安装Ubuntu系统

1、下载镜像&#xff0c;做启动盘 镜像链接 http://old-releases.ubuntu.com/releases/20.04.2/ubuntu-20.04.2-live-server-amd64.iso 版本可以根据自己要求选择。 做启动盘 我用的是ultraiso 记得先格式化&#xff0c;再写入。 2、 设置BIOS启动 按F11&#xff0c;进入BIOS…

springcloud-alibaba (06)RocketMQ下载安装和单机启动个人笔记

RocketMQ 01 下载RocketMQ02 安装RocketMQ03 启动RocketMQ1. 内存分配1.1 第一步1.2 第二步1.3 第三步 2. 启动RocketMQ2.1 启动NameServer2.2 启动Broker 04 测试RocketMQ05 关闭RocketMQ 01 下载RocketMQ 下载 RocketMQ 即可以从 Apache 官网下载&#xff0c;也可以从 gitHu…

《MySQL(五):基础篇- 多表查询》

文章目录 5. 多表查询5.1 多表关系5.1.1 一对多5.1.2 多对多5.1.3 一对一 5.2 多表查询概述5.2.1 数据准备5.2.2 概述5.2.3 分类 5.3 内连接5.4 外连接5.5 自连接5.5.1 自连接查询5.5.2 联合查询5.6.2 标量子查询5.6.3 列子查询5.6.5 表子查询 5.7 多表查询案例 5. 多表查询 我…

协众信息 Web前端入门技巧

编程思维   学习web前端开发核心在于一个“编程思维”&#xff0c;因为每段代码都不一样&#xff0c;都需要分别去看&#xff0c;所以只要你掌握了学习web前端的编程思维&#xff0c;那么写程序对于你来说&#xff0c;就只是先分析业务&#xff0c;然后编码就可以了。  …

ai绘画生成古风场景怎么弄?告诉你怎么ai绘画

随着人工智能技术的不断发展&#xff0c;ai绘画已经成为一个令人着迷的领域。一些软件利用深度学习算法和生成对抗网络等技术&#xff0c;能够帮助艺术家和爱好者创造出令人惊叹的艺术作品。今天我就来跟大家分享一下如何一键ai绘画&#xff0c;感兴趣的朋友就跟我一起看下去吧…