Redis集群怎么进行故障检测?

Redis集群进行故障检测的方法:首先修改Python脚本,每隔1s写入一条数据;然后循环往Redis集群中写入数据,并强制杀掉一个主节点观察应用程序连接情况;最后重启宕机的8001节点即可。

Redis集群怎么进行故障检测?

Redis集群进行故障检测的方法:自动故障转移测试

修改Python脚本,每隔1s写入一条数据,目的是便于观察在主节点宕机,集群自动故障转移这个时间段之之内(1s钟左右),对于应用程序的影响,或者说应用程序在自动故障转移前后的表现。

如下脚本循环往Redis集群中写入数据,执行期间,强制杀掉一个主节点,观察应用程序连接情况。
同时,如果发生异常,暂停应用程序2s,因为上面一开始配置的集群故障转移时间是1s,如果应用程序暂停2s,完全可以跳过故障转移的过程,当故障转移完成之后,应用程序又恢复成正常状态,虽然8001节点宕机,应用程序继续连接8001节点,但是应用程序完全无感知。

相关学习推荐:redis视频教程

import timefrom time import ctime,sleepfrom rediscluster import StrictRedisClusterstartup_nodes = [    {"host":"111.231.253.***", "port":8001},    {"host":"111.231.253.***", "port":8002},    {"host":"111.231.253.***", "port":8003},    {"host":"111.231.253.***", "port":8004},    {"host":"111.231.253.***", "port":8005},    {"host":"111.231.253.***", "port":8006}]redis_conn= StrictRedisCluster(startup_nodes=startup_nodes, decode_responses=True,password="root")for i in range(0, 100000):    try:        redis_conn.set('name' + str(i), str(i))        print('setting name' + str(i) +"--->" + time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))        time.sleep(1)    except:        print("connect to redis cluster error")        time.sleep(2)

登录后复制

发现在杀掉主节点之后,仅发生了一次连接错误,随后因为Redis集群的自动故障转移成功,对应于程序来说是透明的,因此应用程序随后正常工作,不受其中一个主节点宕机的影响。

c3d934697e4b874ea0b9f4ee78f6917.png

集群此时的状态,8001节点宕机,明显,8001对应的从节点8004接管主节点,升级为master,对外提供服务

d4ce17d3c76620c11ba6d6e0ea78e68.png

观察升级为主节点的8004实例日志,会发现在强制杀掉原8001主节点之后,1秒钟之内,成功替代8001升级为master节点
如果在故障转移的过程中,没有应用程序访问Redis,应用程序甚至完全不知道Redis集群发生了故障转移,只要不发生集群中某一个节点的主从节点同时宕机,整个集群就没有问题,且对应用程序完全透明。

6768c6f78c116e5b516161df333c5c4.png

随后重启宕机的8001节点,会发现8001节点自动变为其原从节点(8004)的从节点

e1a14c0f3c8eb2a5136929370e4ffff.png

以上就是Redis集群怎么进行故障检测?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2042849.html

(0)
上一篇 2025年2月24日 00:47:35
下一篇 2025年2月19日 00:09:51

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Redis集群故障转移如何实现

    Redis集群故障转移的方法:1、从所有的从节点里面选举出一个新的主;2、选举出的新主会执行slaveof no one把自己的状态从slave变成master;3、撤销已下线的主节点的槽指派,并把这些槽位重新指派给自己。 Redis集群故…

    2025年2月24日
    200
  • redis限流的实现方式有几种?

    redis限流的实现方式有3种,分别是:1、基于Redis的setnx的操作,给指定的key设置了过期实践;2、基于Redis的数据结构zset,将请求打造成一个zset数组;3、基于Redis的令牌桶算法,输出速率大于输入速率,就要限流。…

    2025年2月24日
    200
  • redis集合的相关命令有哪些

    redis集合的相关命令有:1、“SADD”,调用intsetAdd函数,将所有新元素添加到整数集合里面;2、“SCARD”,调用intsetLen函数,返回整数集合所包含的元素数量;3、“SISMEMBER”命令等等。 集合命令的实现方法…

    2025年2月24日
    200
  • redis有序集合的相关命令有哪些

    redis有序集合的相关命令有:1、“ZADD”,调用ziplistInsert函数,将成员和分值作为两个节点分别插入到压缩列表;2、“ZCARD”,调用ziplistLen函数,获得压缩列表包含节点的数量;3、“ZCOUND”命令等。 有…

    2025年2月24日
    200
  • redis默认端口是什么

    Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API,redis的默认端口号是6379。 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内…

    2025年2月24日
    200
  • laradock 如何添加 redis 配置

    导语 今天想去修改 redis 的配置,才发现默认安装的时候并没有添加 redis 的配置。所以重装配置下。 修改 Dockerfile 编辑 redis/Dockerfile 如下 FROM redis:latestLABEL maint…

    2025年2月24日
    200
  • Redis如何实现延迟队列?方法介绍

    延迟队列,顾名思义它是一种带有延迟功能的消息队列。那么,是在什么场景下我才需要这样的队列呢? 1. 背景 我们先看看以下业务场景: 当订单一直处于未支付状态时,如何及时的关闭订单如何定期检查处于退款状态的订单是否已经退款成功在订单长时间没有…

    2025年2月24日
    100
  • redis如何实现限流?3种实现方式介绍

    第一种:基于Redis的setnx的操作 我们在使用Redis的分布式锁的时候,大家都知道是依靠了setnx的指令,在CAS(Compare and swap)的操作的时候,同时给指定的key设置了过期实践(expire),我们在限流的主要…

    2025年2月24日
    200
  • 使用Redis保存用户会话Session详解

    前言 PHP内置的绘画存储机制是把全部的会话数据保存在服务器上的文本文件里面,这些文件通常都是保存在服务器上的临时目录里。如果并发量大,读写效率非常低。而Redis对高并发的支持非常好,所以,可以使用redis替代文件存储session。 …

    2025年2月24日
    200
  • 学习Spring Session和Redis解决分布式Session跨域共享问题

    使用spring session和redis解决分布式session跨域共享问题  现象阐述:  在项目中前后端代码未做分离,在两台实例的情况下服务正常运行偶尔会弹出类似需要重新登录的提示,后台报错信息 这是处理器异常  原因并不明显 增加…

    2025年2月24日 数据库
    200

发表回复

登录后才能评论