基于redis实现会话保持

redis的作用主流的应用就是做数据的缓存服务器,还有就是用来做后端服务器的会话保持。

nginx给后端的tomcat做反向代理,

tomcat软件会自动帮助客户端生成会话信息。

而阿帕奇不会自动帮助客户端生成会话信息。

而后端的redis哨兵集群的作用是为了适配我们自己的java程序连接redis的驱动。

php需要安装连接redis的驱动,java程序要想连接redis也需要必要的驱动。【而java程序要去连接redis软件没有现成的驱动,都是公司的开发人员自己写的。】

1.配置nginx软件实现tomcat软件的负载均衡。【ip地址是192.168.140.11】

如上图所示,这是安装gcc软件。

如上图所示,这是安装nginx软件所需要的依赖软件。

如上图所示,随后我们去运行make make install去安装nginx软件。

2.配置tomcat实例【ip地址是192.168.140.11】

如上图所示,我们先去安装jdk,我们将jdk的tar包解压缩到指定目录下,随后我们再到/etc/profile文件中去编写对应的jdk的环境变量。

如上图所示,此时我们已经把jdk安装成功。

如上图所示,此时我们就已经把这个tomcat安装成功,并且配置好了tomcat的环境变量。

如上图所示,这是查看tomcat的版本信息。

如上图所示,随后我们要去创建两个tomcat的实例,我们去创建对应的tomcat实例的配置目录和日志目录,随后我们将默认的tomcat软件配置目录下的所有文件都复制到对应的tomcat实例配置目录下。

如上图所示,随后我们去创建两个实例的项目目录。

如上图所示,我们修改对应实例的配置文件。

如上图所示,我们到tomcat实例的配置文件下指定实例的监听端口。

如上图所示,随后我们去修改这个实例提供http服务的端口为9000

如上图所示,关于虚拟主机的配置,我们配置这个虚拟主机的项目目录是/data01,并且指定将这个虚拟主机的日志文件都保存在这个实例的日志目录中。

随后我们将第二个实例的监听端口设置为8020,提供http服务的端口为9001

我们配置这个实例的虚拟主机的项目目录是/data01,并且指定将这个虚拟主机的日志文件都保存在这个实例的日志目录中。

如上图所示,我们去配置不同tomcat实例的服务脚本。

如上图所示,此时tomcat的两个实例启动成功。

tomcat测试页面

如上图所示,这里的getId就是tomcat给客户端生成的会话ID。

如上图所示,这是配置两个不同tomcat实例的访问首页。

3.使用nginx给后端的tomcat做负载均衡

如上图所示,我们去编辑nginx软件的配置文件将两个tomcat实例设置成一个upstream组,

随后设置location

如上图所示,当我们编辑好nginx的配置文件之后,我们去启动nginx,查看nginx启动之后对应的端口信息。

4.通过nginx访问tomcat,此时tomcat会话ID是非持久的。

如上图所示,现在每刷新一次这个界面,对应的会话ID都会发生变化,此时证明,

5.配置redis的一主两从环境

1.为了适配我们现有的java驱动,所以安装redis2.6版本。

如上图所示,当我们安装好redis之后,我们就去配置redis软件的环境变量。

2.配置redis多实例

如上图所示,这是编辑各个redis实例的配置文件。

3.配置一主多从

如上图所示,配置这两个redis实例的主redis都是192.168.140.12的7001端口。

如上图所示,我们去启动这多个redis实例。

如上图所示,此时redis的一主两从就设置好了。

4.配置哨兵集群

哨兵机器负责检测主服务器状态,当主服务器挂了之后,会将从服务器提升为一个新的主服务器。

在哨兵机器上也需要安装redis软件,

这里的安装操作略过。【并且配置环境变量】

1.复制哨兵配置文件

2.编辑哨兵配置文件

如上图所示,这是用来指定哨兵启动的端口信息。

如上图所示,这是指定这个哨兵的集群的名称,并且指定这个哨兵机器人所监控的机器IP地址和端口号,最后的数字表示的是当有几个哨兵机器认为主服务器挂的时候才进行主从切换,此时设定当有一台哨兵机器认为主服务器挂的时候,就进行主从切换。

如上图所示,当哨兵机器超过30秒连接不上主服务器的时候,就判断主服务器故障,此时进行主从切换的操作,

如上图所示,这里的数字表示的是当哨兵进行主从切换的时候,启动几个进程或者线程来完成主从切换。

如上图所示,这是时间表示的是哨兵在帮助我们做主从切换的超时时间的,如果超过这个时间主从切换仍然没有完成,则表示主从切换失败。并且只会在开始连接的15分钟之后才会产生失败信息。【并且这个时间不能过长。】

3.启动哨兵

如上图所示,启动哨兵机器的命令在redis的解压目录下存在。

如上图所示,哨兵机器启动,默认是前台启动。

6.配置tomcat连接redis哨兵保存会话。

1)将jar包复制到tomcat

如上图所示,这些jar包都是用来配合tomcat上的java应用连接redis软件的驱动。

2)编辑tomcat实例配置文件,指定redis集群的信息

如上图所示,配置tomcat的两个实例的配置文件,分别将这段代码复制到这两个配置文件中,

如上图所示,此时重启两个tomcat实例。

7.测试访问nginx,查看会话ID应该是一致的。

如上图所示,无论是哪个tomcat实例去回应客户端请求,会话ID都是一样的。

相关推荐
喝醉酒的小白6 分钟前
SQL Server 可用性组自动种子设定失败问题
数据库
chem411120 分钟前
Conmon lisp Demo
服务器·数据库·lisp
爱的叹息29 分钟前
Java 连接 Redis 的驱动(Jedis、Lettuce、Redisson、Spring Data Redis)分类及对比
java·redis·spring
m0_5557629031 分钟前
QT 动态布局实现(待完善)
服务器·数据库·qt
松韬1 小时前
Spring + Redisson:从 0 到 1 搭建高可用分布式缓存系统
java·redis·分布式·spring·缓存
天上掉下来个程小白2 小时前
Redis-14.在Java中操作Redis-Spring Data Redis使用方式-操作列表类型的数据
java·redis·spring·springboot·苍穹外卖
孪生质数-2 小时前
SQL server 2022和SSMS的使用案例1
网络·数据库·后端·科技·架构
振鹏Dong2 小时前
MySQL 事务底层和高可用原理
数据库·mysql
·云扬·2 小时前
深度剖析 MySQL 与 Redis 缓存一致性:理论、方案与实战
redis·mysql·缓存
hycccccch2 小时前
RabbitMQ技术方案分析
数据库·rabbitmq