说明

Nginx、Tomcat和Redis都是Docker创建的容器

下载项目

下载

将项目拉到idea上,GitHub地址为:a6678696/RedisSessionDemo: Redis存储session例子 (github.com),,这个项目实现了Redis存储session,实现Redis存储session的博客地址为:Spring Boot 实现 Redis 存储 session | LeDao 的博客 (zoutl.cn)

修改

根据Docker的Tomcat容器端口号修改一下application.yml、info.html、login.html、main.html的端口号,方便测试时辨认出访问的是哪个Tomcat的项目

将application.yml的spring.redis.host修改为Docker给Redis分配的IP地址,查看IP地址命令如下:

1
docker inspect Redis容器id

打包

将项目打包成war包,具体步骤查看:idea将Spring Boot项目打包成war包 ,打包时会报错,跳过Maven打包项目时测试步骤就行了(点击Maven工具栏的取消测试按钮,如下图划红线的按钮)

运行项目

使用Docker创建两个Tomcat容器,并运行打包好的项目,具体步骤查看博客:Docker安装和配置Tomcat容器并部署Java项目

配置Nginx

修改nginx.conf

include /etc/nginx/conf.d/*.conf; 上面添加:(IP地址和端口根据自己的实际情况填写,IP地址是Docker给Tomcat分配的,并不是虚拟机的IP)

1
2
3
4
upstream www.123.com{
server 172.17.0.4:8888;
server 172.17.0.5:9999;
}

修改default.conf

可以用以下内容覆盖掉原来的

1
2
3
4
5
6
7
8
9
10
11
server {

listen 80;
server_name www.123.com;

location / {

proxy_pass http://www.123.com;
index index.html index.htm;
}
}

添加本机域名

找到 C:\Windows\System32\drivers\etc 打开hosts,底部加配置:

1
虚拟机IP www.123.com

测试

浏览器地址栏输入:http://www.123.com/ ,测试时可以发现:交替访问两个Tomcat运行的项目,这时候实现了负载均衡。由于这两个项目都是使用Redis的同一个session,也就是共享