Redis 主从复制
1 主从复制
主从复制架构仅仅用来解决数据的冗余备份,从节点仅仅用来同步数据
无法解决: 1.master节点出现故障的自动故障转移
2 主从复制架构图
3 搭建主从复制
service network restart
vi /usr/local/redis-6.2.6/redis.conf
# 1.准备3台机器并修改配置
- master
port 6379
bind 0.0.0.0
- slave1
port 6379
bind 0.0.0.0
slaveof masterip masterport
slaveof 192.168.56.171 6379
- slave2
port 6379
bind 0.0.0.0
slaveof 192.168.56.171 6379
# 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0
bind 0.0.0.0
# 守护进程,修改为yes后即可后台运行
daemonize yes
# 密码,设置后访问Redis必须输入密码
requirepass 123321
bind 0.0.0.0
port 6379
daemonize yes
requirepass 123321
bind 0.0.0.0
port 6379
daemonize yes
replicaof 192.168.189.134 6379
masterauth 123321
slaveof 192.168.189.134 6379
requirepass 123321
bind 0.0.0.0
port 6379
daemonize yes
replicaof 192.168.189.133 6379
masterauth 123321
slaveof 192.168.189.133 6379
requirepass 123321
# 2.启动3台机器进行测试
- cd /usr/redis/bin
- ./redis-server /root/master/redis.conf
- ./redis-server /root/slave1/redis.conf
- ./redis-server /root/slave2/redis.conf
查看集群信息: info replication
Redis哨兵机制
1 哨兵Sentinel机制
Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。简单的说哨兵就是带有自动故障转移功能的主从架构。
无法解决: 1.单节点并发压力问题 2.单节点内存和磁盘物理上限
2 哨兵架构原理
3 搭建哨兵架构
# 1.在主节点上创建哨兵配置 - 在Master对应redis.conf同目录下新建sentinel.conf文件,名字绝对不能错; # 2.配置哨兵,在sentinel.conf文件中填入内容: - sentinel monitor 被监控数据库名字(自己起名字) ip port 2 sentinel monitor mymaster 192.168.189.133 6379 1 sentinel auth-pass mymaster 123321 # 3.启动哨兵模式进行测试 ./redis-sentinel /usr/local/redis-6.2.6/sentinel.conf 说明:这个后面的数字2,是指当有两个及以上的sentinel服务检测到master宕机,才会去执行主从切换的功能。
id 越小 优先权越大
偏移量越大,优先权越高。
Redis实现分布式会话
1 什么是分布式会话
1 这是我么之前学过的注册登录模式
2 如果非常多的人访问,因为单台服务器的访问承受能力是有限的,那么我们就想用多态服务器来承担压力
3 一般通过负载均衡的方式来实现,来分担服务器的压力。
4 负载均衡解释。
官方解释: 网络专用术语,负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
大白话:nginx就是一个接受请求,然后决定请求最终那个服务器来接受,这个算法我们后面给大家讲nginx或者ribbon的时候给大家补充,但是有时候会存在这样的问题,用户1第一次请求到tomcat1, 下一次请求的时候就可能请求到tomcat2了,这样会存在session丢失,然后系统提示我们需要登录。
5 解决方案。
-
session 复制,也就是当一个服务器有新的session保存的时候,通过服务器通信机制,然后将session复制到其他的服务器,如果服务器较多的话,会存在大量的网路和io占用,效率低下。
-
redis实现session共享。