返回顶部
首页 > 资讯 > 数据库 >记一次 Redis Cluster 宕机引发的事故
  • 576
分享到

记一次 Redis Cluster 宕机引发的事故

2024-04-02 19:04:59 576人浏览 泡泡鱼
摘要

导读:Redis官方号称支持并发11万读操作,并发8万写操作。由于优异的性能和方便的操作,相信很多人都在项目中都使用了Redis,为了不让应用过分的依赖 Redis服务,Redis的作用只作为提升应用并发和

记一次 Redis Cluster 宕机引发的事故

导读:

Redis官方号称支持并发11万读操作,并发8万写操作。由于优异的性能和方便的操作,相信很多人都在项目中都使用了Redis,为了不让应用过分的依赖 Redis服务,Redis的作用只作为提升应用并发和降低应用响应时间存在,即使Redis出现异常,应用程序也不应该出现提供服务失败问题,对此拍拍信最近安排了一次全环境的Redis Cluster 宕机演练。

许彬:拍拍信架构负责人。

朱荣松:拍拍信架构开发工程师。

一、演练过程

Redis 集群环境:

1. 测试环境:

Redis Cluster 配置 :Redis 3主 3从 一共6个节点。

2. 预发环境:

Redis Cluster 配置 :Redis 3主 3从 一共6个节点。

下面是我们操作的时间线:

  • 第一天

程序运行中关闭任意一台从节点,测试一天均无异常。

  • 第二天

程序运行中关闭任意一台从节点,程序未发现异常,测试一天未发现异常。

  • 第三天

预发环境有应用发版,出现异常程序无法启动。

……

二、问题描述

首先说明几个前提:

1. 测试与预发环境目前关闭的都是任意一台Redis从节点。

2. 测试环境经过反复测试无问题才开始关闭预发环境节点。

3. 预发环境重启被关闭的Redis节点后异常消失。

4. 连接Redis客户端使用的是Java语言中使用范围较广的Jedis。

那么为什么测试环境在经过反复测试没有问题,到预发环境会出现问题?

三、原理

分析问题前先简单解释下Redis Cluster实现原理。简单来说Redis

场景

操作(多节点均同时操作)

Redis写总量

Redis读总量

错误量

总耗时(s)

错误率

程序运行中

关主(关任一主)

100000

100000

3084

100

0.031

关主(关任一主)

100000

100000

1482

102

0.015

关主(关任一主)

100000

100000

3053

97.6

0.031

关从(关任一从)

100000

100000

0

109.2

0

关从(关任一从)

100000

100000

0

90.1

0

关从(关任一从)

100000

100000

0

88.9

0

主从一起关(关任一对)

100000

100000

32613

210.1

0.326

主从一起关(关任一对)

100000

100000

29148

169.8

0.291

主从一起关(关任一对)

100000

100000

32410

173.7

0.324

所有主全关

100000

100000

100000

353.4

1

所有从全关

100000

100000

0

87.7

0

只留一台主

100000

100000

100000

357.1

1

表1

从测试结果看,集群Master的选举过程是由Master参与选举的。

1. 如果半数以上 Master 处于关闭状态那么整个集群处于不可用状态。

2. 关闭任意一对主从节点会导致部分(大约为整个集群的1/3)失败。

3. 关闭任意一主,会导致部分写操作失败,是由于从节点不能执行写操作,在Slave升级为Master期间会有少量的失败。

4. 关闭从节点对于整个集群没有影响

您可能感兴趣的文档:

--结束END--

本文标题: 记一次 Redis Cluster 宕机引发的事故

本文链接: https://lsjlt.com/news/48232.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作