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正在发生迁移),不过还是需要在业务顶峰期操作。

在这里插入图片描述

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

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

相关文章

迁移ISE ChipScope逻辑分析器到Vivado硬件管理器

迁移ISE ChipScope逻辑分析器到Vivado硬件管理器 介绍 本章介绍AMD Vivado™Design Suite硬件管理器,以及这些工具之间的关系 到ISE™设计套件ChipScope™逻辑分析器工具,以及如何迁移IP核 从ISE ChipScope环境到Vivado Design Suite。 Vivado硬件管理器…

使用LLaMA-Factory微调大模型

使用LLaMA-Factory微调大模型 github 地址 https://github.com/hiyouga/LLaMA-Factory 搭建环境 git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory在 LLaMA-Factory 路径下 创建虚拟环境 conda create -p ./venv python3.10激活环境 c…

为参数设置默认值

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 调用函数时,如果没有指定某个参数将抛出异常,为了解决这个问题,我们可以为参数设置默认值,即在定义函…

Oracle Linux上安装ORDS

ORDS就是Oracle REST Data Services。 环境如下: Oracle Linux 8Oracle Database 19cIP地址为A.B.C.D 要安装最新版本的ORDS,当前为24.1.1。 全程参考文档:Installing and Configuring Oracle REST Data Services 安装ORDS 添加reposit…

ReDos攻击浅析

DOS为拒绝服务攻击,re则是由于正则表达式使用不当,陷入正则引擎的回溯陷阱导致服务崩溃,大量消耗后台性能 正则 ​ 探讨redos攻击之前,首先了解下正则的一些知识 执行过程 大体的执行过程分为: 编译 -> 执行编译过程中&…

数据标准的制定落地

目录 什么是数据标准 基本定义 目的 数据标准体系分类 从内容层面分类 从管理视角分类 从面向的对象分类 从数据结构的角度分类 数据标准价值 业务价值 技术价值 管理价值 数据标准和数据治理的关系 数据标准在数据治理各项任务中的作用 数据标准与主数据 数据…

实用软件分享---超级轻量级的强力卸载软件工具UninstallView_1.51

专栏介绍:本专栏主要分享一些实用的软件(Po Jie版); 声明1:软件不保证时效性;只能保证在写本文时,该软件是可用的;不保证后续时间该软件能一直正常运行;不保证没有bug;如果软件不可用了,我知道后会第一时间在题目上注明(已失效)。介意者请勿订阅。 声明2:本专栏的…

django中,出现CSRF verification failed. Request aborted.错误

这是跨站点访问的防范机制&#xff0c;csrf是一个令牌&#xff0c;会验证登录&#xff0c;需要在setting中把 "django.middleware.csrViewMiddleware" 注释掉 并在html文件中的<body>内添加 {% csrf token %} 就可以了

Star CCM+边界层设置

边界层介绍 在流体仿真中&#xff0c;边界层是指靠近实体表面的流体区域&#xff0c;其作用是描述流体在实体表面附近的速度和压力分布。边界层主要影响着物体表面的摩擦阻力、热传导以及质量传输等现象。 一般来说&#xff0c;在流体仿真中会设置一到三层不同厚度的边界层。…

最常用的电平转换电路

最常用的电平转换电路 两颗NMOS搭建的电平转换电路![请添加图片描述](https://img-blog.csdnimg.cn/direct/2b496321257f4bc4a1f23a086337ed27.png)两颗NPN三极管搭建的电平转换电路二极管钳位搭建电平转换电路二极管和MOS管组合的电平转换电路专用转换芯片电平转换 两颗NMOS搭…

YAML快速编写示例

一、案例 1.1 自主式创建service关联上方的pod 资源名称my-nginx-kkk命名空间my-kkk容器镜像nginx:1.21容器端口80标签njzb:my-kkk 1.1.1 创建一个demo文件夹 1.1.2 创建并获取模版文件 1.1.3 查看服务并编写yaml文件 1.1.4 编写yaml文件并部署&#xff0c;查看服务是否运行成…

elementui中的el-checkbox-group添加全选按钮

//多选子组件 <template><div class"multiple-choice"><el-checkbox class"no1" v-if"isShowAllBtn" :indeterminate"isIndeterminate1" v-model"checkAll1" border :style"{borderColor:isIndetermina…

elementUI - 折叠以及多选的组件

//子组件 <template><!-- 左侧第二个 --><div class"left-second-more"><div class"layer-list-wrapper1"><el-collapse v-model"activeNames" change"handleChange"><el-collapse-item v-for"…

期末速成 ——计算机组成原理(2)数值的表示与运算

目录 一、定点数的表示 &#xff08;一&#xff09;无符号数和有符号数的表示 &#xff08;二&#xff09;机器数的定点表示 &#xff08;三&#xff09;原码、补码、反码、移码 (1)原码表示法 二、浮点数的表示 三、溢出判断 (一)采用一位符号位 (二)采用双符号位 四…

LC 旋转 - 模拟对象

原文链接 链接 液晶 (LC) 旋转网格属性允许您以 theta、phi 为单位指定空间变化的 LC 导向。 液晶由杆状分子结构组成&#xff0c;这些分子结构具有相对于长轴的旋转对称性。因此&#xff0c;液晶具有空间变化的单轴光学特性。 相对于分子长轴和分子短轴的折射率称为非寻常 ne …

《广告数据定量分析》第3版读书笔记之统计原理

1.点估计与区间估计:可用于求指标误差区间;(不常用) (1)总体比例的置信区间: 通过样本数据计算的比例,估计总体的对应比例的取值范围。主要适用于用户转化漏斗各环节的转化率估计,比如点击率、点击下载率、下载安装率、安装激活率等。 我们可以得到总体百分比的一个…

SRS介绍及环境搭建

1.SRS简介 SRS&#xff08;Simple Real-Time Media Server&#xff09;是一个开源的流媒体服务器&#xff0c;它支持多种流媒体协议&#xff0c;包括RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH和GB28181等57。SRS主要应用于直播、视频会议等场景&#xff0c;提供实时音视频服…

【刷题(14)】二叉树

一、二叉树基础 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* …

【并发程序设计】12.内存映射

12.内存映射 使一个磁盘文件与内存中的一个缓冲区相映射&#xff0c;进程可以像访问普通内存一样对文件进行访问&#xff0c;不必再调用read,write&#xff0c;更加高效。 用到的函数 mmap函数 原型&#xff1a; #include <sys/mman.h> void* mmap(void* start, size_…

【GD32】05 - PWM 脉冲宽度调制

PWM PWM (Pulse Width Modulation) 是一种模拟信号电平的方法&#xff0c;它通过使用数字信号&#xff08;通常是方波&#xff09;来近似地表示模拟信号。在PWM中&#xff0c;信号的占空比&#xff08;即高电平时间占整个周期的比例&#xff09;被用来控制平均输出电压或电流。…