当前位置: 首页 > news >正文

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.lryc.cn/news/359115.html

相关文章:

  • Golang | Leetcode Golang题解之第113题路径总和II
  • 云计算与 openstack
  • golang语言的gofly快速开发框架如何设置多样的主题说明
  • lynis安全漏洞扫描工具
  • C++ 多重继承的内存布局和指针偏移
  • centos时间不对
  • 通过Redis实现防止接口重复提交功能
  • 如何构建最小堆?
  • 基于Netty实现安全认证的WebSocket(wss)客户端
  • 代码随想录算法训练营第四十四天 | 01背包问题 二维、 01背包问题 一维、416. 分割等和子集
  • redis常见使用场景
  • 模糊C均值(FCM)算法更新公式推导
  • 金融创新浪潮下的拆分盘投资探索
  • 一份不知道哪里来的第十五届国赛模拟题
  • 机器人动力学模型与MATLAB仿真
  • SAPUI5基础知识3 - 引导过程(Bootstrap)
  • ABAP 借助公司封装的钉钉URL,封装的RFC给钉钉发送消息
  • 登录校验及全局异常处理器
  • 计算机视觉与模式识别实验1-2 图像的形态学操作
  • 【前端每日基础】day31——uni-app
  • 云动态摘要 2024-05-31
  • Oracle数据块如何存储真实数据
  • 【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第30课-门的移动动画
  • 智能化改造给企业带来的实际效果
  • 深度学习-语言模型
  • 微型导轨在自动化制造中有哪些优势?
  • 探索气象数据的多维度三维可视化:PM2.5、风速与高度分析
  • 【传知代码】双深度学习模型实现结直肠癌检测(论文复现)
  • 平衡二叉树的应用举例
  • 一键安装 HaloDB 之 Ansible for Halo