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


本文摘自PHP中文网,作者coldplay.xixi,侵删。

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

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

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

import timefrom time import ctime,sleepfrom rediscluster import StrictRedisCluster

startup_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集群怎么进行故障检测?的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

关于Redis之lpush、rpush、lset、lrem

zk和Redis分布式锁区别

hbase和Redis的区别有哪些?

Redis可以采用什么方式实现限流

Redis高可用方案图文详解

Redis和mysql一般怎么配合

详细分析Redis的数据结构与数据操作

Redis缓存雪崩、缓存击穿、缓存穿透是什么意思

Redis的key可以是中文吗

Redis生存时间设置

更多相关阅读请进入《Redis》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...