redis主从切换 java_Redis哨兵实现主从切换,故障转移

本文介绍了Redis哨兵(Sentinel)系统如何实现主从切换和故障转移,确保高可用性。哨兵通过监控、通知和自动故障迁移等功能,当主节点挂掉时,会选择一个从节点升级为主节点,保持服务不间断。文中详细讲述了哨兵的配置和搭建过程,包括配置哨兵监控主节点、设置心跳检测、主从切换条件、故障转移时间和报警脚本等关键参数。
摘要由CSDN通过智能技术生成

前言

上篇文章我们讲了Redis的主从复制搭建,但是大家这里思考一个问题,如果我的主节点挂了,那是不是就只有从节点了。那就没有机器接受Redis的写请求了,那这样肯定是不行的对吧。

这里我们的哨兵机制就是解决这个问题:故障转移,如果主节点挂掉,就进行主从切换,让从节点升级为主节点,继续对外提供服务。

文章结尾可以发表一些问题、或者建议。你们的反馈能让老哥写出更好的文章。

8a6fbff72f70fcd34b5a23689343f062.png

哨兵简介

fd05c52ae660bf1f67f3270329b7cf2c.png

Sentinel(哨兵)是Redis高可用的解决方案,可以运行多个Sentinel组成一个哨兵分布式系统。

使用流言协议(gossip protocols)来接收主机是否下线;并使用投票协议(agreement protocols)来决定是否执行自动故障迁移;以及选择哪个从服务器作为新的主服务器。

Sentinel哨兵职责如下:

监控(Monitoring):Sentinel 会不断地定期检查你的主服务器和从服务器是否运作正常。

提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。

自动故障迁移(Automaticfailover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作,它会将失效主服务器的其中一个从服务器升级为新的主服务器,并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时,集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。

统一的配置管理:连接者询问sentinel取得主从的地址。

哨兵搭建

机器准备

主从复制的搭建,之前的文章讲过了,大家可以去参考

服务器名称

节点类型

IP地址

端口

Node1

Redis服务1(主节点Master)

192.168.14.101

6379

Node2

Redis服务2(从节点slave1)

192.168.14.102

6380

Node3

Redis服务3(从节点slave2)

192.168.14.103

6381

Sentinel1

哨兵服务1

192.168.14.101

26379

Sentinel2

哨兵服务2

192.168.14.102

26380

Sentinel3

肖兵服务3

192.168.14.103

26381

五个主要配置讲解

在每个主从Redis目录下新建一个名为sentinel.conf的文件,在该文件下配置如下命令。

命令总格式:sentinel

一:配置sentinel监控master

示例:sentinel monitor mymaster 127.0.0.1 6380 1

详解:sentinel监控的master的名字叫做mymaster,地址为127.0.0.1:6380;sentinel在集群中,需要多个sentinel互相沟通来确认某个master是否真的死了;数字1代表,当集群中有1个sentinel认为master死了时,才能真正认为该master已经不可用了。

二:配置sentinel心跳

示例:sentinel down-after-milliseconds mymaster 5000

详解:sentinel向master发送心跳PING,确认master是否存活,如果master在down-after-milliseconds时间(单位毫秒)范围内没有给sentinel回应PONG,或者回复一个错误消息,那么sentinel就主观的认为这个master不可用了

三:配置主从切换时,同步新master的salve个数

示例:sentinel parallel-syncs mymaster 1

详解:在发生failover主备切换时,这个选项指定了最多可以有多少个slave同时对新的master进行同步数据。这个数字越小,完成failover所需的时间就越长,但是如果这个数字越大,就意味着越多的slave因为replication而不可用。可以设为 1 来保证每次只有一个slave处于不能处理命令请求的状态

四:配置故障转移最大时间

示例:sentinel failover-timeout mymaster 60000(毫秒)

详解:若Sentinel进程在该配置值内未能完成故障转移的操作,则认为本次故障转移操作失败。

五:配置报警脚本

示例:sentinel notification-script mymaster

bc001a342b98fc59032295ce8f8842c4.png

ca7a62fa748dcc0d5abdb36e91bcc25a.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值