Nginx+Redis+Tomcat实现负载均衡共享session
说明
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 | upstream www.123.com{ |
修改default.conf
可以用以下内容覆盖掉原来的
1 | server { |
添加本机域名
找到 C:\Windows\System32\drivers\etc 打开hosts,底部加配置:
1 | 虚拟机IP www.123.com |
测试
浏览器地址栏输入:http://www.123.com/ ,测试时可以发现:交替访问两个Tomcat运行的项目,这时候实现了负载均衡。由于这两个项目都是使用Redis的同一个session,也就是共享