Redis-Cluster模式基操篇

一、场景
1、搞一套6个主节点的Cluster集群
2、模拟数据正常读写
3、模拟单点故障
4、在不停服务的情况下将集群架构改为3主3从
二、环境规划
6台独立的服务器,端口18001~18006
192.169.14.121
192.169.14.122
192.169.14.123
192.169.14.124
192.169.14.125
192.169.14.126
Redis–6.2.14版本
CentOS Linux release 7.6.1810
三、Redis-Cluster部署(6主模式)
1、Redis安装(6节点分别执行)
# 上传软件到/opt下
tar -zxvf redis-6.2.14.tar.gz
cd redis-6.2.14
make & make install
2、创建目录(6节点分别创建对应目录)
mkdir -p /data/redis-cluster-18001
3、准备配置文件(6节点分别创建对应配置)
vim /data/redis-cluster-18001/redis.conf
######测试环境就写最基础的配置了
port 18001
dir /data/redis-cluster-18001/
cluster-enabled yes
cluster-config-file nodes-18001.conf
cluster-node-timeout 5000
bind 0.0.0.0
protected-mode no
appendonly yes
maxmemory 10G
daemonize yes
4、启动Redis(6节点分别执行)
cd /opt
./redis-6.2.14/src/redis-server /data/redis-cluster-18001/redis.conf
由于配置文件中声明了是集群模式,所以启动后看进程是有集群标识的

5、初始化集群(任意节点执行)
cd /opt
/usr/local/redis-5.0.4/src/redis-cli --cluster create --cluster-replicas 1 192.168.5.100:8001 192.168.5.100:8002 192.168.5.100:8003 192.168.5.100:8004 192.168.5.100:8005 192.168.5.100:8006

非常方便哈,Redis从3.0版本开始支持Cluster模式,但是最开始需要借助ruby来安装。
从5.0版本开始,可以直接通过redis-cli --cluster的方式操作集群。
6、集群验证
cd /opt
./redis-6.2.14/src/redis-cli -c -h 192.168.14.121 -p 18001
192.168.14.121:18001> cluster nodes

可以看到16384个槽位均匀分配在各个节点上。
不过
这种全主架构在Redis-Cluster中是有单点故障问题的,如果其中任意一台服务器挂掉,整个Redis集群将不可读写。
四、模拟单点故障并验证

同时查看cluster nodes

五、转为3主3从模式
因为Redis-Cluster模式下当有槽位不可用(不管槽位内是否有数据)时会导致整个集群不可用。
所以我们现在将6主模式改为3主3从模式
1、先将node4、5、6的槽位转移到node1、2、3上

redis-cli --cluster reshard 集群任意节点IP:端口 --cluster-from 源node-id --cluster-to 目标node-id --cluster-slots 转移的槽位数量 --cluster-yes
cd /opt
./redis-6.2.14/src/redis-cli --cluster reshard 192.168.14.121:18001 --cluster-from 3c01c7397471f52c1df4f05223de1bab80ac2b0f --cluster-to bcdb37c781a80ee7bf1c962917649b5a44ddec2f --cluster-slots 2701 --cluster-yes
最终效果

2、节点下线
redis-cli --cluster del-node 集群任意节点IP:端口 下线节点node-id
redis-cli --cluster del-node 192.168.14.121:18001 b494529c8a6cea6a47d8f058ab43df220b30815c

3、下线节点以从节点身份重新加入集群
redis-cli --cluster add-node 新加节点IP:端口 集群任意节点IP:端口 --cluster-slave --cluster-master-id 主节点node-id
cd /opt
./redis-6.2.14/src/redis-cli --cluster add-node 192.168.14.124:18004 192.168.14.121:18001 --cluster-slave --cluster-master-id 1dbc5115472fd6b64a537b6d862f6ec5b9892340

最终效果

现在任意节点宕机会自动切换主从,也不会影响集群的正常使用。
彩蛋
如果在生产环境是否也可以做槽位迁移呢?,当然是可以的,因为Redis-Cluster提供ask重定向处理功能(应对操作的key正在发生迁移),不过还是需要在业务顶峰期操作。

相关文章:
Redis-Cluster模式基操篇
一、场景 1、搞一套6个主节点的Cluster集群 2、模拟数据正常读写 3、模拟单点故障 4、在不停服务的情况下将集群架构改为3主3从 二、环境规划 6台独立的服务器,端口18001~18006 192.169.14.121 192.169.14.122 192.169.14.123 192.169.14.124 192.169.14.125 192…...
Golang | Leetcode Golang题解之第113题路径总和II
题目: 题解: type pair struct {node *TreeNodeleft int }func pathSum(root *TreeNode, targetSum int) (ans [][]int) {if root nil {return}parent : map[*TreeNode]*TreeNode{}getPath : func(node *TreeNode) (path []int) {for ; node ! nil; no…...
云计算与 openstack
文章目录 一、 虚拟化二、云计算2.1 IT系统架构的发展2.2 云计算2.3 云计算的服务类型 三、Openstack3.1 OpenStack核心组件 一、 虚拟化 虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之…...
golang语言的gofly快速开发框架如何设置多样的主题说明
本节教大家如何用gofly快速开发框架后台内置设置参数,配置出合适项目的布局及样式、主题色,让你您的项目在交互上加分,也是能帮你在交付项目时更容易得到客户认可,你的软件使用客户他们一般都是不都技术的,所以当他们拿…...
lynis安全漏洞扫描工具
Lynis是一款Unix系统的安全审计以及加固工具,能够进行深层次的安全扫描,其目的是检测潜在的时间并对未来的系统加固提供建议。这款软件会扫描一般系统信息,脆弱软件包以及潜在的错误配置。 安装 方式1 git下载使用git clone https://github…...
C++ 多重继承的内存布局和指针偏移
在 C 程序里,在有多重继承的类里面。指向派生类对象的基类指针,其实是指向了派生类对象里面,该基类对象的起始位置,该位置相对于派生类对象可能有偏移。偏移的大小,等于派生类的继承顺序表里面,排在该类前面…...
centos时间不对
检查当前时区是否正确 timedatectl status如果时区不正确,使用以下命令设置正确的时区(将Asia/Shanghai替换为您所在的时区): timedatectl set-timezone Asia/Shanghai如果时区正确但时间不准确,使用以下命令同步网络…...
通过Redis实现防止接口重复提交功能
本功能是在切面执行链基础上实现的功能,如果不知道切面执行链的同学,请看一下我之前专门介绍切面执行链的文章。 在SpringBoot项目中实现切面执行链功能-CSDN博客 1.定义防重复提交handler /*** 重复提交handler**/ AspectHandlerOrder public class …...
如何构建最小堆?
方式1:上浮调整 /*** 上浮调整(小的上浮)*/ public static void smallUp1(int[] arr, int child) {int parent (child - 1) / 2;while (0 < child && arr[child] < arr[parent]) { // 0 < child说明这个节点还是叶子arr[child] arr[child] ^ ar…...
基于Netty实现安全认证的WebSocket(wss)客户端
1.Netty服务端 服务端代码参考【基于Netty实现安全认证的WebSocket(wss)服务端-CSDN博客】 2.Netty客户端 客户端代码参考【基于Netty实现WebSocket客户端-CSDN博客】中两种都可以;这里用的是第一种。 新增SslHandler的代码: …...
代码随想录算法训练营第四十四天 | 01背包问题 二维、 01背包问题 一维、416. 分割等和子集
01背包问题 二维 代码随想录 视频讲解:带你学透0-1背包问题!| 关于背包问题,你不清楚的地方,这里都讲了!| 动态规划经典问题 | 数据结构与算法_哔哩哔哩_bilibili 1.dp数组定义 dp[i][j] 下标为[0,i]之间的物品&…...
redis常见使用场景
文章目录 redis常见使用场景全局ID位统计购物车用户消息时间线timeline抽奖商品筛选分布式锁限流redis实现计数器排行榜消息队列redis 如何实现延时队列 redis生产常用的场景 redis常见使用场景 Redis 是一种高性能的内存数据库,广泛应用于各种场景中。以下是 Redi…...
模糊C均值(FCM)算法更新公式推导
模糊C均值(FCM)算法更新公式推导 目标函数 FCM的目标函数为: J m ∑ i 1 n ∑ j 1 k u i j m ∥ x i − c j ∥ 2 J_m \sum_{i1}^n \sum_{j1}^k u_{ij}^m \|x_i - c_j\|^2 Jmi1∑nj1∑kuijm∥xi−cj∥2 其中: …...
金融创新浪潮下的拆分盘投资探索
随着数字化时代的步伐加速,金融领域正经历着前所未有的变革。在众多金融创新中,拆分盘作为一种新兴的投资模式,以其独特的增长机制,吸引了投资者的广泛关注。本文将对拆分盘的投资逻辑进行深入剖析,并结合具体案例&…...
一份不知道哪里来的第十五届国赛模拟题
这是一个不知道来源的模拟题目,没有完全完成,只作代码记录,不作分析和展示,极其冗长,但里面有长按短按双击的复合,可以看看。 目录 题目代码底层驱动主程序核心代码关键:双击单击长按复合代码 …...
机器人动力学模型与MATLAB仿真
机器人刚体动力学由以下方程控制!!! startup_rvc mdl_puma560 p560.dyn 提前计算出来这些“disturbance”,然后在控制环路中将它“抵消”(有时候也叫前馈控制) 求出所需要的力矩,其中M项代表克服…...
SAPUI5基础知识3 - 引导过程(Bootstrap)
1. 背景 在上一篇博客中,我们已经建立出了第一个SAPUI5项目,接下来,我们将为这个项目添加引导过程。 在动手练习之前,让我们先解释一下什么引导过程。 1.1 什么是引导过程? 在计算机科学中,引导过程也称…...
ABAP 借助公司封装的钉钉URL,封装的RFC给钉钉发送消息
FUNCTION ZRFC_BC_SMSSEND_DINGTALK. *"---------------------------------------------------------------------- *"*"本地接口: *" IMPORTING *" VALUE(DESTUSRID) TYPE CHAR255 *" VALUE(CONTENT) TYPE CHAR255 *&quo…...
登录校验及全局异常处理器
登录校验 会话技术 会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束.在一次会话中可以包含多次请求和响应会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话请求间共享数据会话跟踪方案 客户端…...
计算机视觉与模式识别实验1-2 图像的形态学操作
文章目录 🧡🧡实验流程🧡🧡1.图像膨胀2.图像腐蚀3.膨胀与腐蚀的综合使用4.对下面二值图像的目标提取骨架,并分析骨架结构。 🧡🧡全部代码🧡🧡 🧡🧡…...
创业团队如何利用Taotoken以更低成本快速验证AI产品创意
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 创业团队如何利用Taotoken以更低成本快速验证AI产品创意 对于资源有限的创业团队而言,在产品原型阶段验证AI创意的可行…...
边缘计算赋能工业智能化:重大危险源监测+产线控制+视觉分析一体化解决方案
在工业 4.0 与智能制造深度融合的今天,工业现场产生的数据量呈指数级增长。传统的 "云端集中式" 数据处理架构在面对毫秒级实时控制、海量视觉数据传输、高危场景 724 小时不间断监测等需求时,逐渐暴露出延迟高、带宽成本大、网络依赖强、数据…...
基于Blazor与LLamaSharp构建本地大模型ChatGPT式Web应用
1. 项目概述与核心价值最近在折腾一个内部工具,想把本地大模型的能力和类似ChatGPT的对话体验结合起来,部署成一个Web应用。找了一圈,发现一个挺有意思的项目叫“BLlamaSharp.ChatGpt.Blazor”。光看这个名字,信息量就很大了&…...
大疆M4系列+YOLOV8识别算法 如何训练无人机罂粟识别检测数据集 让非法种植无处可藏:无人机+AI罂粟识别数据集发布,覆盖花期_果期多阶段检测 无人机俯拍+AI识别罂粟
无人机俯拍AI识别罂粟,准确率超95%!,助力禁毒攻坚》 《科技禁毒再升级!YOLO实测mAP 83.9%》 《让非法种植无处可藏:无人机AI罂粟识别数据集发布,覆盖花期/果期多阶段检测 智慧巡检 {专业级AI巡查无人机…...
赛车电气系统设计的现代化转型与实践
1. 赛车电气系统设计的现状与挑战当人们谈论赛车技术时,脑海中浮现的往往是碳纤维车身、空气动力学套件或是大马力发动机。但在这光鲜亮丽的表象背后,电气系统才是现代赛车的"神经系统"。有趣的是,这个关键领域的设计方法却呈现出两…...
影刀RPA跨境店群运营架构:基于Python的高并发环境隔离与自动化调度系统设计实战
关于我一个曾经死磕底层算法、痴迷于压榨软硬件性能的资深架构师,最后跑去给跨境工作室写店群底层自动化调度系统这件事。 很多以前在技术圈里混的同行,或者是看着我一路从后端重构做到 ImageTransPro 图像处理软件 5.0.3 这种复杂版本迭代的极客朋友们…...
新手必看!CTFShow文件上传靶场通关保姆级教程(Web151-170全解析)
CTFShow文件上传靶场全解析:从入门到精通的实战指南 初识文件上传漏洞 文件上传功能几乎是每个Web应用都具备的基础模块,但恰恰是这个看似简单的功能,成为了无数安全漏洞的温床。在CTF竞赛中,文件上传类题目因其直观性和实战性&am…...
【Midjourney Ash印相终极指南】:20年影像算法专家首度公开胶片质感生成的7大隐性参数配置
更多请点击: https://intelliparadigm.com 第一章:Midjourney Ash印相的技术起源与影像哲学本质 Ash印相的算法基因溯源 Ash印相并非凭空诞生的视觉滤镜,而是Midjourney v6模型在latent空间中对“胶片衰变—银盐氧化—时间蚀刻”三重物理过…...
Cadence Allegro铺铜实战:从动态避让到静态优化,我的多层板效率提升心得
Cadence Allegro铺铜实战:从动态避让到静态优化,我的多层板效率提升心得 在高速PCB设计领域,Cadence Allegro作为行业标准工具,其铺铜功能直接影响设计效率与产品质量。当板层超过8层、元件密度突破500pin/inch时,动态…...
信捷PLC XD/XL系列C语言功能块实战:从指针定义到数据调用,我的高效编程习惯分享
信捷PLC XD/XL系列C语言功能块实战:从指针定义到数据调用,我的高效编程习惯分享 在工业自动化领域,PLC编程的效率直接影响到设备调试周期和产线维护成本。作为一名长期使用信捷PLC XD/XL系列的工程师,我发现其C语言功能块的灵活运…...
