redis系列(14)-- 高级话题之高可用Sentinel哨兵

前言:废话不说,上手就干
Sentinel哨兵是redis官方提供的高可用方案,可以用它来监控多个redis服务实例的运行情况。Redis Sentinel是一个运行在特殊模式下的redis服务器。Redis Sentinel是在多个Sentinel进程环境下相互协助工作的。
Sentinel系统有三个主要任务:
1)监控:Sentinel不断的检查主服务和从服务是否按照预期正常工作。
2)提醒:被监控的redis出现问题时,Sentinel会通知管理员或其他应用程序。
3)自动故障转移:监控的主Redis不能正常工作,Sentinel会开始进行故障迁移操作。将一个从服务器升级新的主服务器,让其他从服务器挂到新的主服务器上,同时向客户端提供新的主服务器地址。
在这里插入图片描述
一、Sentinel配置
1、Sentinel配置文件
复制三份sentinel.conf文件
在这里插入图片描述
Sentinel系统默认port是26379,三个配置port分别设置为26380、26380、26384,三个文件分别命名为:
sentinel26380.conf、sentinel26382.conf、sentinel26384.conf
执行复制命令 cp sentinel.conf xxx.conf
在这里插入图片描述
2、三份sentinel配置文件修改:
1)修改port 23680、port 23682、port 23684;
2)修改sentinel monitor mymaster 127.0.0.1 6280 2
格式:sentinel monitor <Quorum 投票数>
Sentinel监控主(Master)Redis, Sentinel根据Master的配置自动发现Master的Slave,Sentinel
默认端口号为26379 。
3)修改sentinel26380.conf
a.修改端口号
在这里插入图片描述
b.修改监控的master地址
在这里插入图片描述
sentinel26382.conf 修改port 26382 , master的port 6380
sentinel26384.conf 修改port 26384 , master的port 6380
4)启动主从Redis
在这里插入图片描述
查看master的配置信息
连接到6380端口,使用info replication
在这里插入图片描述
5)启动sentinel
redis安装时make编译后就产生了redis-sentinel程序文件,可以在一个redis中运行多个sentinel进程
启动一个运行在Sentinel模式下的redis服务实例
./redis-sentinel sentinel配置文件
执行以下三条命令,将创建三个监视主服务器的Sentinel实例:
./redis-sentinel …/sentinel26380.conf
./redis-sentinel …/sentinel26382.conf
./redis-sentinel …/sentinel26384.conf
在xshell开始三个窗口分别执行:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
6)主Redis不能工作
让Master的Redis停止服务,执行shutdown
先执行info replication确认Master的Redis,再执行shutdown
在这里插入图片描述
查看当前Redis的进程情况
在这里插入图片描述
7)Sentinel的起作用
在master执行shutdown后,稍等一会sentinel要进行投票计算,从可用slave选举新的master
查看sentinel日志,三个Sentinel窗口的日志是一样的。
在这里插入图片描述
由上图我们可知,6380成为了新的master
查看新的master
在这里插入图片描述
查看原Slave的变化
在这里插入图片描述
8)新的redis加入Sentinel系统,自动加入Master
重新启动6380
在这里插入图片描述
查看6382(主)的信息
在这里插入图片描述
发现新启动的6380已经加入的6382主服务器上
测试数据:在Master中写入数据
在这里插入图片描述
在从服务器上读取数据,但是不能写入
在这里插入图片描述
3、监控
1)Sentinel会不断检查master和slave是否正常;
2)如果Sentinel挂了,就无法监控,所以需要多个哨兵,组成Sentinel网络,一个健康的Sentinel至少有三个Sentinel应用,彼此在独立的物理机器或者在虚拟机;
3)监控同一个Master的Sentinel会自动连接,组成一个分布式的Sentinel网络,互相通信并交换彼此关于被监控服务器的信息;
4)当一个sentinel认为被监控的服务器已经下线时,他会向网络中的其他Sentinel进行确认,判断该服务器是否真的下线;
5)如果下线的服务器是主服务器,那么Sentinel网络将对下线主服务器进行自动故障转移,通过将下线主服务器的某个从服务器提升为新的主服务器,并让其从服务器转移到新的主服务器下,以此来让系统重新回到正常状态;
6)下线的旧主服务器重新上线,Sentinel会让它成为从,挂到新的主服务器下;
4、总结
主从复制,解决了读请求的分担,从节点下线,会使的读请求能力有所下降,Mater下线,写请求无法执行;
Sentinel会在Master下线后自动执行故障转移操作,提升一台Slave为Master,并让其他Slave成为新Master的Slave;
另外,以上的操作是针对redis没有设置密码的情况,如果设置了密码的话,那么在Sentinel中的配置文件要加上这么一句话
在这里插入图片描述
注意sentinel auth-pass mymaster 123456,123456指的是你的redis密码这句话一定要在sentinel monitor mymaster 127.0.0.1 6382 2这句话之后,否者运行是会出现No such master with specified name.(没有指定名称主机)这个错误,上面这句话在所有的sentinel中都要进行配置。
以上就是redis高级话题中的高可用Sentinel哨兵的内容,共勉!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值