前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么redis哨兵集群只有2个节点无法正常工作?

为什么redis哨兵集群只有2个节点无法正常工作?

作者头像
JAVA葵花宝典
发布2019-11-08 22:29:02
7.8K1
发布2019-11-08 22:29:02
举报
文章被收录于专栏:JAVA葵花宝典

文章由小编综合整理 文章来源: https://blog.csdn.net/u010883383/article/details/77989145 https://blog.csdn.net/qq_25868207/article/details/79147469

由于redis的响应速度快,每秒支持的并发极高(号称10万),现在redis越来越流行了

redis支持的存储有: string, hash(map),list, set, sortset 同时可以使用redis的setnx 来实现分布式锁

首先谈谈redis的哨兵模式:

哨兵支持对主从的监控,并且当主节点挂机之后,可以启动从节点升级为主节点继续提供服务

同时哨兵也支持对客户端提供发现服务,客户端通过连接哨兵从而获取主节点的信息,如果主节点挂机,在升级从节点为主节点之后,客户端通过哨兵可以连接上新的主节点

主节点和从节点之间通过同步写命令来保持数据一致(在启动的时候会立刻先同步主节点的快照,保存主节点的信息)

判断节点是否宕机并且需要重启需要几个哨兵协同判断,当一定数量的哨兵(可配置) 认为主节点宕机才会去升级从节点

接下来谈谈redis的集群模式

redis集群从多主多从共同支撑,至少需要三个主节点才能启动集群

每个集群包含 16384个槽 ,每一个主(从节点负责同步主节点的数据)负责存储其中的某一个槽,redis 通过对key的hash 确定存储在哪一个槽上面,

当需要加入新的节点或者删除节点的时候 ,redis 会去维护不同主节点上面的槽,从而重新分配槽的所属

为什么redis哨兵集群只有2个节点无法正常工作?

哨兵集群必须部署2个以上节点

如果哨兵集群仅仅部署了个2个哨兵实例,quorum=1

代码语言:javascript
复制
+----+         +----+
| M1 |---------| R1 |
| S1 |         | S2 |
+----+         +----+

Configuration: quorum = 1

master宕机,s1和s2中只要有1个哨兵认为master宕机就可以还行切换,同时s1和s2中会选举出一个哨兵来执行故障转移

同时这个时候,需要majority,也就是大多数哨兵都是运行的,2个哨兵的majority就是2(2的majority=2,3的majority=2,5的majority=3,4的majority=2),2个哨兵都运行着,就可以允许执行故障转移

但是如果整个M1和S1运行的机器宕机了,那么哨兵只有1个了,此时就没有majority来允许执行故障转移,虽然另外一台机器还有一个R1,但是故障转移不会执行

经典的3节点哨兵集群

代码语言:javascript
复制
      +----+
       | M1 |
       | S1 |
       +----+
          |
+----+    |    +----+
| R2 |----+----| R3 |
| S2 |         | S3 |
+----+         +----+

Configuration: quorum = 2,majority

如果M1所在机器宕机了,那么三个哨兵还剩下2个,S2和S3可以一致认为master宕机,然后选举出一个来执行故障转移

同时3个哨兵的majority是2,所以还剩下的2个哨兵运行着,就可以允许执行故障转移

推荐阅读

下载达10万次的IDEA插件,K8s一键部署了解下

SpringBoot 并发登录人数控制

Springboot 整合Mybatis多数据源并动态切换

Spring的BeanUtils有坑?可能是你用错了!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA葵花宝典 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先谈谈redis的哨兵模式:
  • 接下来谈谈redis的集群模式
  • 为什么redis哨兵集群只有2个节点无法正常工作?
  • 经典的3节点哨兵集群
相关产品与服务
云数据库 Redis®
腾讯云数据库 Redis®(TencentDB for Redis®)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档