redis-cluster集群(目的:高可用)

news2024/11/18 2:29:17

1、特点

集群由多个node节点组成,redis数据分布在这些节点中,在集群中分为主节点和从节点,一个主对应一个从,所有组的主从形成一个集群,每组的数据是独立的,并且集群自带哨兵模式

2、工作原理

集群模式中,主从一一对应,数据写入和读取与主从模式一样,主负责写,从只能读;集群模式自带哨兵模式,可以自动实现故障切换,但在故障切换完成之前,整个集群不可用,切换完毕后,集群立刻恢复

3、集群模式按照数据分片

(1)数据分片:集群核心功能。每个主都可以对外提供读、写功能,但数据是一一对应写入主的对应从节点,所以在集群模式中,不能保证数据的完整性

(2)高可用:集群主要目的

4、数据分片的实现过程

redis的集群引入hash槽的概念

redis集群中共有16384个哈希槽位(0-16383)

如何分配hash槽位?

根据集群中的主从节点数分配hash槽位,每个主从节点只负责一部分的hash槽位。每次读写都涉及hash槽位,key通过CRC16的校验机制,对16384取余,余数值决定数据放入哪个hash槽位,通过余数值找到对应槽位找到所在节点,直接跳转到这个节点进行存储操作【每个节点的hash槽位值是连续的。若出现不连续的hash槽位或hash槽位没有被全部分配,集群会报错】

hash槽位的原理结构图:

故障切换过程中为什么会提示集群不可用?hash槽位无人接手

主宕机后,主节点原来负责的hash槽位将会不可用,此时需要从节点代替主节点继续负责原有的hash槽位,保证集群正常工作。故障切换过程中,会提示集群不可用;切换完成后,集群恢复,继续工作

5、redis-cluster集群实验

实验目的:实现集群高可用

实验条件:

IP地址

初始服务器

组件

20.0.0.14

创建集群,自动随机分配一一对应的主从服务器

redis服务

20.0.0.24

redis服务

20.0.0.34

redis服务

20.0.0.44

redis服务

20.0.0.54

redis服务

20.0.0.64

redis服务

实验步骤:

(1)修改配置文件【所有服务器】

vim /etc/redis/6379.conf

(2)、创建集群

redis-cli -h 20.0.0.14 --cluster create 20.0.0.14:6379 20.0.0.24:6379 20.0.0.34:6379 20.0.0.44:6379 20.0.0.54:6379 20.0.0.64:6379 --cluster-replicas 1

 -cluster- replicas 1 规定一个主只有一个从【主从是随机分配的】

集群模式中,集群模式不能切换库,只能选择默认库——0库

(3)、查看hash槽位CLUSTER nodes

此时的主、从服务器

20.0.0.14——redis1

20.0.0.54——redis5

20.0.0.24——redis2

20.0.0.64——redis6

20.0.0.34——redis3

20.0.0.44——redis4

(4)测试

在任意一个主中创建键值对

主20.0.0.14——redis1    从20.0.0.54——redis5

①验证从节点能不能读。不能

此处error不是报错,表明客户端尝试读取键值对test1,但是实际槽位在4768,因此集群要求客户端移动到4768槽位所在的主机节点获取数据

②验证从节点能不能写。不能

③验证分配hash槽位后,不在相应的hash槽位上的主节点能不能写。不能,只能到指定节点上操作

(5)模拟故障

任意一台主服务器故障

主20.0.0.34——redis3故障,从20.0.0.44——redis4成为新主

(6)恢复故障

恢复原主20.0.0.34——redis3

(7)、监控redis实时工作日志,检测主从节点之间的心跳线

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1241990.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Cookie、Session、CBV加装饰器的三种方法

【0】cookie、session和Token的发展史 【1】Cookie的形式 存储形式:k:v键值对存储位置:客户端缺点:不安全,信息可能会泄露 【2】session的形式 标识符,表示我是当前用户加密出来的数据对敏感信息进行加密…

element-plus的el-dropdown去除鼠标悬浮或点击时的黑边框

设置为outline:unset;或者outline:none;即可 :deep(.el-tooltip__trigger:focus-visible) {outline: unset;}

解决traefik/nginx-ingress-controller配置正确的情况访问域名仍然报错: Connection Refused的问题

最近碰到一个很奇怪的问题: traefik/nginx-ingress-controller配置正确,但是访问ingress配置的host域名就是死活报错: Connection Refused 这样怎么也找不到原因,然后一咬牙直接在其中一台节点yum安装nginx, 通过直接反向代理的方…

高通OTA升级非常规分区方法

高通OTA升级非常规分区方法 1. 高通LE OTA背景2. 高通LE OTA升级方案2.1 SDX12 OTA方案2.2 OTA升级TZ/RPM/Aboot OTA是一个通用述语,常见的解释为over the air。通过这一解释,OTA最开始的概念,是空中升级。后来,又衍生出了FOTA&am…

Git使用基础总结(从小白到新手版)

(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍快上🚘,一起学习,让我们成为一个强大的攻城狮&#xff0…

BUUCTF [HBNIS2018]excel破解 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 得到的 flag 请包上 flag{} 提交。来源: https://github.com/hebtuerror404/CTF_competition_warehouse_2018 密文: 下载附件,得到一个attachment.xls文件。 解题思路&#xff…

ABB机 器 人 操 作 培 训

目 录 1 培训手册介绍 ---------------------------------------------2 2 系统安全与环境保护 ---------------------------------------------3 3 机器人综述 ---------------------------------------------5 4 机器人示教 --------------------------------------------12…

.Net6 Api Swagger配置

1、定义个Swagger版本&#xff08;组&#xff09;的枚举 namespace WebApp.Enums {/// <summary>/// api版本枚举/// </summary>public enum ApiVersion{/// <summary>/// v1版本/// </summary>v1 1,/// <summary>/// v2版本/// </summary&…

Axios 拦截器 请求拦截器 响应拦截器

请求拦截器 相当于一个关卡&#xff0c;如果满足条件就放行请求&#xff0c;不满足就拦截 响应拦截器 在处理结果之前&#xff0c;先对结果进行预处理&#xff0c;比如&#xff1a;对数据进行一下格式化的处理 全局请求拦截器 axios.interceptors.request.use(config > { /…

电脑开机显示器没反应?5个方法轻松解决!

“各位朋友们&#xff0c;我想问问&#xff0c;电脑开机显示器没反应是为啥呢&#xff1f;有什么方法可以解决这个问题吗&#xff1f;感谢感谢&#xff01;” 在使用电脑时&#xff0c;用户可能会遇到各种各样的情况。电脑开机显示器没反应也是一个比较常见的电脑问题。遇到这种…

Springboot+vue的新冠病毒密接者跟踪系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的新冠病毒密接者跟踪系统(有报告)。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的新冠病毒密接者跟踪系统&#xff0c;采用M&#xff08;model&#xff09;V&#xff08;v…

JSP EL表达式获取list/Map集合与java Bean对象

上文 JSP EL表达式基本使用 中 我们对EL表达式做了一个基本的了解 也做了基础的字符串数据使用 那么 我们可以来看一下我们的集合 首先 list 这个比较简单 我们直接这样写代码 <% page import"java.util.ArrayList" %> <% page import"java.util.Lis…

两种常见EMC整改流程!|深圳比创达电子EMC

如何定位EMC整改计划可以分为两点&#xff1a; 1、根据以往的整改经验来进行判断&#xff1b; 2、比较测试&#xff0c;测试结束后根据测试仪器提供的数据进行问题分析。 下面介绍两种常见的EMC整改流程。 1、RE超标整改流程 首先要测量超标(临界)点&#xff0c;作为参考值…

注册并实名认证华为开发者账号

首先 我们访问 https://www.harmonyos.com/ 访问鸿蒙官方网站 右上角 我们点击 登录 然后 我们选择注册 然后 注册方式 有邮箱和手机号的注册 这边 看大家需要 如果像我不怎么登邮箱这种 建议还是选择手机号注册 这里 居住地区 应该就是默认中国吧 然后 手机号 验证码 密码…

入选《数据结构与算法领域内容帮榜》第44名

入选《数据结构与算法领域内容帮榜》第44名

Spring-jdbcTemplate-配置数据库连接池

1、jdbc.properties jdbc.drivercom.mysql.cj.jdbc.Driver jdbc.urljdbc:mysql:///studb jdbc.userroot jdbc.pwd123456 2、beans.xml <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans&…

安卓毕业设计基于安卓android微信小程序的家校通系统

运行环境 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序运行软件&#xff1a;微信开发者 项目介绍 基于微信小程序的家校通系统的设计基…

Nginx 413 Request Entity Too Large

当出现上图时候 更改nginx config 文件 在http{}或者server{}或者location{}中增加client_max_body_size 100m; 然后重启nginx 服务就好了

【深度学习】六大聚类算法快速了解

在机器学习中&#xff0c;无监督学习一直是我们追求的方向&#xff0c;而其中的聚类算法更是发现隐藏数据结构与知识的有效手段。目前如谷歌新闻等很多应用都将聚类算法作为主要的实现手段&#xff0c;它们能利用大量的未标注数据构建强大的主题聚类。本文从最基础的 K 均值聚类…

JAVA小游戏“飞翔的小鸟”

第一步是创建项目 项目名自拟 第二步创建个包名 来规范class 再创建一个包 来存储照片 如下&#xff1a; 代码如下&#xff1a; package game; import java.awt.*; import javax.swing.*; import javax.imageio.ImageIO;public class Bird {Image image;int x,y;int width…