redis超详细篇7 redis哨兵模式

上一篇我们讲了redis的主从复制以及三个特点, 我们有提到反客为主,不过那时候是用命令手动实现的,那么有没有办法自动实现呢?带着问题,我们来到这篇,那么当然有了。

开篇

哨兵模式:反客为主的自动版,能够后台检测主机是否故障,如果故障了,根据投票数,自动将从库变成主库

哨兵模式的实现

步骤:
1.先创建一个sentinel.conf文件(哨兵配置文件,名字绝对不能打错)
2.进行哨兵配置,填写内容
3.启动配置

sentinel.conf配置
我们还是在myredis目录下进行创建,输入以下命令

sentinel monitor mymaster 127.0.0.1 6379 1

这段代码含义:
sentinel:哨兵
monitor:监视器
mymaster :自己随便取名,我这就叫mymaster
127.0.0.1 6379:是我这里的主服务器,你可以根据自己的情况自动修改
1:址少有多少个哨兵统一迁移的数量,这里可以根据你的实际情况填写

sentinel.conf启动

启动命令:

redis-sentinel sentinel.conf

在这里插入图片描述
测试前提:
我们老规矩,默认主机是6379,从机6380、6381
在这里插入图片描述
如何实现看哨兵的功能呢?
我们先把主服务器关闭,然后看看哨兵的变化,以及哪一台服务器自动从 从服务器变成了主服务器

实现步骤:
1.关闭主服务器6379
在这里插入图片描述

2.静静等待结果

在这里插入图片描述
3.可能遇到的问题
如果你用info replication 一直查看不到状态改变,或者有提示【206:X 14 Mar 2022 11:19:12.883 # +failover-state-select-slave master mymaster 127.0.0.1 6379
3206:X 14 Mar 2022 11:19:12.967 # -failover-abort-no-good-slave master mymaster 127.0.0.1 6379
3206:X 14 Mar 2022 11:19:13.040 # Next failover delay: I will not start a failover before Mon Mar 14 11:25:13 2022

可能需要有以下原因:
1.未打开26379的端口防护墙
解决如下:

firewall-cmd --zone=public --add-port=6379/tcp --permanent
service firewalld restart

2.哨兵监视器未设置主机的访问密码
在sentinel monitor下面加上这一句

sentinel auth-pass mymaster 123456

再次重新启动下配置文件,或者原来的步骤重新开始

到这我们算成功了一小步。此刻我们来看原来设置sentinel.conf文件,发现它变了样子

sentinel monitor mymaster 127.0.0.1 6380 1
sentinel auth-pass mymaster 123456
# Generated by CONFIG REWRITE
protected-mode no
port 26379
user default on nopass sanitize-payload ~* &* +@all
dir "/root/microservice/myredis"
sentinel myid 15a8a11a6c571369834a5cb9aebabda405ea4d42
sentinel config-epoch mymaster 9
sentinel leader-epoch mymaster 9
sentinel current-epoch 9
sentinel known-replica mymaster 127.0.0.1 6379
sentinel known-replica mymaster 127.0.0.1 6381

它新增了很多东西

有没有思考过一个问题:6379主机挂了之后,哨兵会自动选择一个从机来作为主机,那么如果6379重新恢复后,它是否能重新成为主机?还是?

带着疑问我们来测试下,恢复6379
恢复步骤

redis-server redis6379.conf

启动链接

redis-cli -p 6379 -a 123456

查看状态

info replication

发现它已经变成了6380的从机了。也就是说主机挂了之后,再次恢复,不再是主机了,只能变成新主机的从机
如果你不好理解上面的话语,举个简单例子:宋代老皇帝被俘虏,新皇帝即位,即使老皇帝回来了,它也不再是皇帝了,得向新皇帝称臣。明白否?
在这里插入图片描述
故障恢复机制:
多个从服务器将其转成主服务器,选择条件依次为:
1.选择优先级靠前的
优先级在redis.conf中默认:replica-priority 100 值越小优先级越高
2.选择偏移量最大的
偏移量是指获得原主机数据最全的
3.选择runid最小的服务器
每个redis实例启动后都会随机生成一个40位的runid

挑选出来的新服务器之后sentinel向源服务器的从服务器发送slave of 新主服务器命令,复制新的master

当已下线的服务重新上显示,sentinel会向其发送slaveof命令,让其成为新主的从
在这里插入图片描述

我写的明白吗?动手试试吧,下篇我们继续,记得点击关注

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值