Redis主从复用(读写分离、哨兵配置、主备切换)

第一部分:读写分离

本文只用了一个虚拟机,通过端口号搭一个伪的主从复用模拟了三个服务器(集群环境大于50%不可用)。

注意:如果你用的是阿里云的服务器,并且是按照我下面的步骤做的操作,结果没有选举的话,需要去阿里云的安全规则开启端口,否则不会自动选举

redis启动通过三个不同的配置文件

首先把解压的reids中的conf下的redis.conf复制到 /opt/redis/conf下
在这里插入图片描述
在这里插入图片描述
把这个redis.conf改成公用的
在这里插入图片描述
打开之后,修改配置:
注释掉,表示所有ip都可以访问:
在这里插入图片描述
保护模式改成no
在这里插入图片描述
注释掉端口,因为是公用的,每个用自己的配置
在这里插入图片描述
开启后台启动:
在这里插入图片描述
每个私有的都有进程文件,所有公用的注释掉:
在这里插入图片描述
每个都有自己的dump.rdb,所以公用的里面注释掉:
在这里插入图片描述
目录改成之前创建的
在这里插入图片描述
打开从服务器访问主服务器,设置密码为root:
在这里插入图片描述
主服务器登录密码:
在这里插入图片描述
保存退出,新建配置文件(每个进程对应的文件)
在这里插入图片描述
打开redis-6379.conf配置文件写入下面的文件:

#引用配置文件
include /opt/redis/conf/redis-common.conf
#进程编号记录文件
pidfile /var/run/redis-6379.pid
#进程端口号
port 6379
#日志记录文件
logfile "/opt/redis/log/redis-6379.log"
#数据记录文件
dbfilename dump-6379.rdb
#追加文件名称
appendfilename "appendonly-6379.aof"
#下面的配置无需在6379里配置(因为6379是主服务器)
#备份服务器从属于6379推荐配置配局域网IP
#slaveof:从节点      改成自己虚拟机ip
#slaveof 39.108.74.103 6379

redis-6380.conf中写入:

#引用配置文件
include /opt/redis/conf/redis-common.conf
#进程编号记录文件
pidfile /var/run/redis-6380.pid
#进程端口号
port 6380
#日志记录文件
logfile "/opt/redis/log/redis-6380.log"
#数据记录文件
dbfilename dump-6380.rdb
#追加文件名称
appendfilename "appendonly-6380.aof"
#下面的配置无需在6379里配置(因为6379是主服务器)
#备份服务器从属于6379推荐配置配局域网IP
#slaveof:从节点      改成自己虚拟机ip
slaveof 39.108.74.103 6379

reids-6381.conf:

#引用配置文件
include /opt/redis/conf/redis-common.conf
#进程编号记录文件
pidfile /var/run/redis-6381.pid
#进程端口号
port 6381
#日志记录文件
logfile "/opt/redis/log/redis-6381.log"
#数据记录文件
dbfilename dump-6381.rdb
#追加文件名称
appendfilename "appendonly-6381.aof"
#下面的配置无需在6379里配置(因为6379是主服务器)
#备份服务器从属于6379推荐配置配局域网IP
#slaveof:从节点      改成自己虚拟机ip
slaveof 39.108.74.103 6379

接下来运行一下主从:

在这里插入图片描述
那么如何查看主从状态呢,复制三个会话,分别启动6379,6380,6381
输入:info replication
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
主节点设置一个值,可以在从节点获取到:
在这里插入图片描述
在这里插入图片描述
主节点写数据会自动把数据同步到从节点上去,然后从服务器只能读不能写:
在这里插入图片描述
优点:分散了读的压力,提高了一定可用写,某一个服务器挂机了之后其他的还能继续使用。主服务器挂机了之后,从服务器任然能够读,但数据都是之前的了。为了解决这个问题redis有了哨兵功能

第二部分 :哨兵配置

主服务器挂机之后,哨兵会重新选取从服务器中的某一个变成新的主服务器提供独写能力,挂机的服务器启动之后变成从服务器了
配置方法:
把redis中的sentineal.conf复制到/opt下
在这里插入图片描述
把sentineal.conf改成公用的:
在这里插入图片描述
修改配置:
后台启动:
在这里插入图片描述

注释掉端口,每个私有的有自己的配置文件端口:
在这里插入图片描述
注释掉进程文件,日志文件:
在这里插入图片描述
在这里插入图片描述
修改成自己的ip:
这里面数字2的意思是:
因为我这里有模拟的三台服务器,必须有大于50%(我这里即2台)的哨兵去监控主服务器是否挂机,才能确认主服务器挂机,
确定有问题才会进行选举
在这里插入图片描述
之前主服务器设置的密码是root(通过ping() PONG机制):
在这里插入图片描述
选举的时候判断主服务是否挂机(这个设置是连续30s都没有联通就会重新选举):
在这里插入图片描述
连续180s都没有选举成功之后,就放弃本次选举下次再选举,防止因为从服务器网络不好一直无法选举,从而阻塞在哪里:
在这里插入图片描述
创建三个配置文件:
touch sentinel-26379.conf
touch sentinel-26380.conf
touch sentinel-26381.conf

sentinel-26379.conf:

#引用配置文件
include /opt/redis/conf/sentinel-common.conf
#进程端口号
port 26379
#进程编号记录文件
pidfile /var/run/sentinel-26381.pid
#日志记录文件(为了方便查看日志,先注释掉,搭好环境后再打开)
logfile "/opt/redis/log/sentinel-26381.log"

sentinel-26380.conf:

#引用配置文件
include /opt/redis/conf/sentinel-common.conf
#进程端口号
port 26380
#进程编号记录文件
pidfile /var/run/sentinel-26380.pid
#日志记录文件(为了方便查看日志,先注释掉,搭好环境后再打开)
logfile "/opt/redis/log/sentinel-26380.log"

sentinel-26381.conf:

#引用配置文件
include /opt/redis/conf/sentinel-common.conf
#进程端口号
port 26379
#进程编号记录文件
pidfile /var/run/sentinel-26381.pid
#日志记录文件(为了方便查看日志,先注释掉,搭好环境后再打开)
logfile "/opt/redis/log/sentinel-26381.log"

然后启动并且查看进程:
在这里插入图片描述
然后复制三个会话,打开日志可以查看启动信息:

tail -f /opt/redis/log/sentinel-26379.log 
tail -f /opt/redis/log/sentinel-26380.log 
tail -f /opt/redis/log/sentinel-26381.log 

第三部分:主备切换

模拟主服务器挂机状态:
在这里插入图片描述
需要等30s,因为上面配置的是30s之后连不上才选举
30s之后重新启动6379服务器:
在这里插入图片描述
此时6379已经变成了slave:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

可以发现主服务器变成了6380,此时6380拥有了读写功能,其他两个只有读的功能
注意:如果你用的是阿里云的服务器,并且是按照我上面的步骤做的操作,结果没有选举的话,需要去阿里云的安全规则开启端口,否则不会自动选举

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值