1. 准备工作
- 本Demo是运行在Centos7环境下,需要下载一些安装包
- 下载安装Nginx,参考文章 Nginx 安装
- 下载Tomcat安装包,这里使用版本为Tomcat9,Tomcat下载地址
- 下载Redis安装包。Redis下载地址
2. Tomcat 配置
- Tomcat配置
- 这里只叙述部分配置,创建两个Tomcat部分不会细说,可以参照上方链接内容
-
分别在
opt
目录下创建两个文件夹,名称分别为 tomcat8080、tomcat8081,将下载好的 Tomcat 安装包分别拷贝至两个文件下,解压,命令:tar -zxvf xxxx
-
修改 tomcat8081 中的 Tomcat 服务器端口配置,这里设置为8081,注意,这里需要设置两/三个端口,其中有一个被注释掉了,分别为
Server port
和Connector port
。vim /opt/tomcat8081/apache-tomcat-9.0.31/conf/server.xml
-
在本机创建文件:
index.jsp
,右键编辑,复制下方代码- 分别在两个 Tomcat 服务器目录下的 webapp 文件夹下创建子文件夹
edu
,名字可以自定义,但访问时访问路径也应当随之改变。 - 将制作好的 index.jsp,通过远程访问工具 (xftp) 分别复制到两个Tomcat服务器的 /webapp/edu 目录下
- 注意:两个tomcat的页面名称和路径必须保持完全一致
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page language="java" import="java.text.SimpleDateFormat"%> <% SimpleDateFormat simpleDateFormat=new SimpleDateFormat("YYYY-MM-dd HH:mm:ss"); String date=simpleDateFormat.format(new Date()); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>tomcat2</title> </head> <body> SessionID:<%=session.getId()%> <BR> 当前时间为:<%=date%> <BR> SessionPort:<%=request.getServerPort()%> <BR> mzd的值为:<%=session.getAttribute("mzd")%> <BR> <% out.println("这是tomcat1 8080"); // out.println("这是tomcat2 8081"); %> </body> </html>
- 分别在两个 Tomcat 服务器目录下的 webapp 文件夹下创建子文件夹
- 【下载统一管理工具】 下载地址
- 我这里使用到2.0.4版本 tomcat-redis-session-manager
- 下载到本地,解压,不要有中文路径
- 进入文件夹下的 conf 子文件夹,修改配置文件
redis-data-cache.properties
,将其中的redis.hosts
属性修改为 Redis 运行的虚拟机的IP地址 - 将 lib 文件夹下的四个Jar包分别拷贝到 Tomcat8080 和 Tomcat8081 服务器的 lib 文件夹下
- 将刚刚修改的
redis-data-cache.properties
分别复制到 Tomcat8080 和 Tomcat8081下 conf 文件夹下
- 修改Tomcat8080 和 Tomcat8081 的配置文件
-
分别进入到两个服务器目录下的 conf 目录
-
修改 context.xml 配置文件,分别添加下列字段
vim /opt/tomcat808x/apache-tomcat-9.0.31/conf/context.xml
<Valve className="tomcat.request.session.redis.SessionHandlerValve"/> <Manager className="tomcat.request.session.redis.SessionManager"/>
-
注意:因为tomcat-redis-session-manager这个版本的不同,classname会随着变化,2.0.4的版本是叫这两个。
-
可以解压下载的tomcat-redis-session-manager中的lib文件夹的tomcat-cluster-redis-session-manager.jar ,具体的名字随版本可能会有所改变,只需和上方配置文件的名称相同即可
-
-
【分别启动两台tomcat】
cd /opt/tomcat8081/apache-tomcat-9.0.31/bin ./startup.sh ## tomcat8080 方法相同 ## 检查是否启动成功 ps -ef | grep tomcat
3. Nginx 配置
-
进入到Nginx的配置文件目录下,修改nginx.conf 文件
-
Nginx的配置文件比必在这里,如果不存在,则Nginx安装失败,可以参照最上方Nginx安装
-
vim /usr/local/nginx/conf/nginx.conf
http{ .... upstream myserver{ # 端口号分别与Tomcat服务器设置的port对应 server 192.166.xxx.xxx:8080; server 192.166.xxx.xxx:8081; } server { listen 80; server_name 192.168.xxx.xxx; #当前虚拟机IP地址 location / { proxy_pass http://myserver; root html; index index.html index.htm; } }
-
重新(启动)加载Nginx
- 当前位置也是唯一的
cd /usr/local/nginx/sbin ./nginx -s reload ./nginx
4. 验证
- 浏览器输入虚拟机地址,访问刚刚创建好的 index.jsp 路径
192.168.xxx.xxx/edu/index.jsp
- 此时,虽然已经配置了负载均衡,使用轮询策略,每次访问的tomcat不一致,但页面的
SessionID
不会发生变化。 - 查看redis,其中会有一个 KEY-VALUE 键值对
- 这里,可能会出现多次访问同一个tomcat的问题,并不是配置文件有问题,个人认为是浏览器缓存问题,可以每次点解地址栏回车,手动访问即可解决