Redis集群之哨兵模式

1.主从模式的缺陷

当主节点宕机了,整个集群就没有可写的节点了。

2.哨兵的做用

Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:

  • 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
  • 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
  • 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会进行选举,将其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。

2.1 监控

(1)Sentinel可以监控任意多个Master和该Master下的Slaves。(即多个主从模式)

(2)同一个哨兵下的、不同主从模型,彼此之间相互独立。

(3)Sentinel会不断检查Master和Slaves是否正常。

2.2 自动故障切换

监控同一个Master的Sentinel会自动连接,组成一个分布式的Sentinel网络,互相通信并交换彼此关于被监视服务器的信息。

2.3 故障切换的过程

(1)投票(半数原则)

  当任何一个Sentinel发现被监控的Master下线时,会通知其它的Sentinel开会,投票确定该Master是否下线(半数以上,所以sentinel通常配奇数个)。

(2)选举

  当Sentinel确定Master下线后,会在所有的Slaves中,选举一个新的节点,升级成Master节点。

  其它Slaves节点,转为该节点的从节点。

(3)原Master重新上线

  当原Master节点重新上线后,自动转为当前Master节点的从节点。

3. 哨兵模式部署准备

前提:已经存在一个正在运行的主从模式。

另外,配置三个Sentinel实例,监控同一个Master节点

  • 复制sentinel.conf配置文件到/usr/myredis/目录下,重命名为sentinel-6379.conf、sentinel-6380.conf、sentinel-6381.conf

  • 修改配置文件

a.修改端口号

b.修改pid文件

c.修改日志文件

d.哨兵配置

sentinel monitor mymaster 127.0.0.1 6379 2
  • 启动哨兵
redis-sentinel /usr/local/myredis/sentinel-6379.conf &
redis-sentinel /usr/local/myredis/sentinel-6380.conf &
redis-sentinel /usr/local/myredis/sentinel-6381.conf &

  • 测试

现在6379是主节点,6380和6381是从节点,现在模拟6379宕机,观察6380和6381情况

6379宕机之前:

6379宕机之后:

从下图可以看出6379的服务已经停了

从下面信息可以看出6381已经当选为主节点了,而6380已经作为了6381的从节点

我们再次恢复6379的服务,再查看3个服务状况,可以看出6379已经作为从节点挂在了6381上面

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码搬运工阿新

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值