服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Redis - Redis哨兵模式,一主二仆反客为主,论故障转移和恢复能力还得是它呀

Redis哨兵模式,一主二仆反客为主,论故障转移和恢复能力还得是它呀

2023-12-01 15:50不码不疯魔 Redis

哨兵模式的优势主要在于当主节点发生故障时,哨兵节点可以自动进行故障转移与自动恢复,选择一个合适的从节点升级为主节点,并通知其他从节点和应用程序进行更新。

实际场景分析:为了解决主从模式的无法自动容错及恢复的问题,Redis引入了一种哨兵模式的集群架构。哨兵模式是在主从复制的基础上加入了哨兵节点。哨兵节点是一种特殊的Redis节点,用于监控主节点和从节点的状态。当主节点发生故障时,哨兵节点可以自动进行故障转移,选择一个合适的从节点升级为主节点,并通知其他从节点和应用程序进行更新。

Redis哨兵模式,一主二仆反客为主,论故障转移和恢复能力还得是它呀图片

 

在原来的主从架构中,引入哨兵节点,其作用是监控Redis主节点和从节点的状态。每个Redis实例都可以作为哨兵节点,通常需要部署多个哨兵节点,以确保故障转移的可靠性。

好啦,话不多说,接下来就让我们一起实操吧!

看重点

看到最后:免费领取详细的Word文档?

Redis哨兵模式,一主二仆反客为主,论故障转移和恢复能力还得是它呀图片

01哨兵模式原理

哨兵节点定期向所有主节点和从节点发送PING命令,如果在指定的时间内未收到PONG响应,哨兵节点会将该节点标记为主观下线。如果一个主节点被多数哨兵节点标记为主观下线,那么它将被标记为客观下线。

当主节点被标记为客观下线时,哨兵节点会触发故障转移过程。”它会从所有健康的从节点中选举一个新的主节点,并将所有从节点切换到新的主节点,实现自动故障转移。同时,哨兵节点会更新所有客户端的配置,指向新的主节点。

哨兵节点通过发布订阅功能来通知客户端有关主节点状态变化的消息。客户端收到消息后,会更新配置,将新的主节点信息应用于连接池,从而使客户端可以继续与新的主节点进行交互。

这个集群模式的优点就是为整个集群系统了一种故障转移和恢复的能力。

02搭建Redis哨兵模式步骤

2.1 安装Redis主从模式(一主二仆)

Redis主从模式具体步骤请参考详文《不要只会玩儿Redis单机版,如果是读多写少的情况,请选择Redis主从模式吧》

PS:如果都是一台服务器测试哨兵模式,请将slave-6380.conf和slave-6381.conf中slaveof 127.0.01 6379

2.2 配置Redis哨兵模式(sentinel)具体步骤如下

2.2.1 启动好一主二仆模式,6379带着6380、6381

查看详细信息:info replication

Redis哨兵模式,一主二仆反客为主,论故障转移和恢复能力还得是它呀图片

Redis哨兵模式,一主二仆反客为主,论故障转移和恢复能力还得是它呀图片

Redis哨兵模式,一主二仆反客为主,论故障转移和恢复能力还得是它呀图片

2.2.2 自定义的config目录下新建sentinel.conf文件

新建sentinel文件命令:touch sentinel.conf

配置哨兵,填写内容:vi sentinel.conf

sentinel monitor mymaster 127.0.0.1 6379 1

#其中mymaster为监控对象起的服务器名称,1为至少有多少个哨兵同意迁移的数量

sentinel down-after-milliseconds mymaster 30000 

#判定服务器down掉的时间周期,默认30000毫秒(30秒)

2.2.3 启动哨兵

退回上级目录:cd ../

执行命令:./redis-sentinel config/sentinel.conf

Redis哨兵模式,一主二仆反客为主,论故障转移和恢复能力还得是它呀图片

2.2.4 当主机挂掉,从机选举中产生新的主机

(大概10秒左右可以看到哨兵窗口日志,切换了新的主机)

哪个从机会被选举为主机呢?根据优先级别:slave-priority 

原主机重启后会变为从机。

Redis哨兵模式,一主二仆反客为主,论故障转移和恢复能力还得是它呀图片

Redis哨兵模式,一主二仆反客为主,论故障转移和恢复能力还得是它呀图片

PS:如果都是一台服务器测试哨兵模式,发现6379宕机后并没有实现选举从机过程,请务必将6380和6381的slaveof后的IP地址修改为127.0.0.1,将sentinel.conf中sentinel monitor mymaster 127.0.0.1 6379 1的IP地址也统一设置为127.0.0.1

03哨兵模式应用总结

哨兵模式的优势主要在于当主节点发生故障时,哨兵节点可以自动进行故障转移与自动恢复,选择一个合适的从节点升级为主节点,并通知其他从节点和应用程序进行更新。

但是哨兵模式最大的缺点,就是不适用于大规模应用的解决方案,它无法提供了更好的横向扩展和容错能力。

原文地址:https://mp.weixin.qq.com/s/LWRkRI-YfYb3NdmAprXhSg

延伸 · 阅读

精彩推荐
  • RedisRedis获取某个大key值的脚本实例

    Redis获取某个大key值的脚本实例

    这篇文章主要给大家分享介绍了关于Redis获取某个大key值的一个脚本实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习...

    linda玲6122019-11-13
  • Redis硬核!15张图解Redis为什么这么快(推荐)

    硬核!15张图解Redis为什么这么快(推荐)

    作为一名服务端工程师,工作中你肯定和 Redis 打过交道。Redis为什么快,这点想必你也知道,至少为了面试也做过准备,今天通过本文给大家介绍下,感兴...

    呃呃呃额6012020-12-26
  • Redisredis分布式锁之可重入锁的实现代码

    redis分布式锁之可重入锁的实现代码

    相信大家都知道可重入锁的作用防止在同一线程中多次获取锁而导致死锁发生,本文通过几个例子给大家分享redis分布式锁之可重入锁的实现代码,对redi...

    _否极泰来8972021-08-05
  • Redis关于Redis未授权访问漏洞利用的介绍与修复建议

    关于Redis未授权访问漏洞利用的介绍与修复建议

    Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API,下面这篇文章主要给大家介绍了...

    burlin5122019-11-06
  • Redispython脚本实现Redis未授权批量提权

    python脚本实现Redis未授权批量提权

    这篇文章主要给大家介绍了关于利用python脚本实现redis未授权批量提权的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的...

    secange5392019-11-08
  • RedisRedis 6.X Sentinel 哨兵集群搭建

    Redis 6.X Sentinel 哨兵集群搭建

    今天码哥带大家完成在 CentOS 7 中安装 Redis 6.x 教程。在学习 Redis 之前,我们需要先搭建一套哨兵环境。机器有限,实现目标是一台机器上搭建 6 个节点,构...

    码哥字节10432021-03-31
  • Redis生产redisson延时队列不消费问题排查解决

    生产redisson延时队列不消费问题排查解决

    这篇文章主要为大家介绍了生产redisson延时队列不消费问题排查解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...

    法力损毁4932022-11-24
  • RedisRedis6.0搭建集群Redis-cluster的方法

    Redis6.0搭建集群Redis-cluster的方法

    这篇文章主要介绍了Redis6.0搭建集群Redis-cluster的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们...

    jhcm12172021-08-02