Redis 7.x 系列【26】集群模式动态扩容、动态缩容

有道无术,术尚可求,有术无道,止于术。

本系列Redis 版本 7.2.5

源码地址:https://gitee.com/pearl-organization/study-redis-demo

文章目录

    • 1. 动态扩容
      • 1.1 安装、启动
      • 1.2 加入新节点
      • 1.3 分配哈希槽
      • 1.4 加入从节点
    • 2. 缩容
      • 2.1 删除从节点
      • 2.2 迁移哈希槽
      • 3.3 删除主节点

1. 动态扩容

Redis 集群支持动态增加节点实现扩容,提高集群容量和数据处理能力,接下来演示将之前三主三从扩容为四主四从。

1.1 安装、启动

新加节点网络访问地址如下 (一台服务器):

  • 主节点四:192.168.56.101:7000
  • 从节点四:192.168.56.101:7001

安装、修改配置、启动,这几个步骤和集群部署一样,这里就不赘述了。

1.2 加入新节点

查看节点信息(一台服务器):

[root@localhost bin]# redis-cli -a cluster123456 cluster nodes
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
b5bde236f14f21f530a7095aaef3a98109009324 192.168.56.101:6383@16383 slave e909dc338f4c2fc7687cf4426d3b95956a90a8a8 0 1721384436435 2 connected
724c7b874dc0c37a462cd5ab59325203344f8008 192.168.56.101:6379@16379 myself,slave ce27fa445e987f75bddeeb68fc6fe440678ad1bb 0 1721384432000 7 connected
ce27fa445e987f75bddeeb68fc6fe440678ad1bb 192.168.56.101:6382@16382 master - 0 1721384434000 7 connected 0-5460
e909dc338f4c2fc7687cf4426d3b95956a90a8a8 192.168.56.101:6380@16380 master - 0 1721384435431 2 connected 5461-10922
0f1d8d6459ac4252636cb4b8e1764de9e277411c 192.168.56.101:6390@16390 slave 9f9c30c3f73106e256fdec27264fc8129e1287fd 0 1721384435000 3 connected
9f9c30c3f73106e256fdec27264fc8129e1287fd 192.168.56.101:6381@16381 master - 0 1721384435000 3 connected 10923-16383

此时,集群节点并不包含新节点信息,需要使用 add-node 将新的主节点加入:

[root@localhost bin]# redis-cli -a cluster123456 --cluster add-node 192.168.56.101:7000 192.168.56.101:6380

命令说明:

  • cluster123456 :集群节点认证密码
  • 192.168.56.101:7000:新加入的主节点
  • 192.168.56.101:6380:负责扩容处理的节点(原先集群中的任意主节点)

打印日志日下:

在这里插入图片描述
重新查看集群信息,可以看到新节点:
在这里插入图片描述

1.3 分配哈希槽

新节点此时没有分配哈希槽,需要使用 reshard 命令重新分配集群中的哈希槽:

[root@localhost bin]# redis-cli -a cluster123456  --cluster reshard 192.168.56.101:6380

首先会提示分配多少哈希槽,这里有四个主节点 16384/4=4096 ,所有输入 4096

[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 4096

接着输入新节点的 ID ,将分配的哈希槽给新节点(cluster nodes命令查看):

What is the receiving node ID? a95a0a529f62ff1793bf2c2cfc92ec51c96e1268

接着提示从哪些节点移出这 4096 个哈希槽,这些输入 all 表示从所有节点平摊移出:

Please enter all the source node IDs.
to use all the nodes as source nodes for the hash slots.
Type'done'
entered allthe source nodes IDs.
Source node #1:all

最后会打印一些迁移日志:

在这里插入图片描述
重新查看节点信息,可以看到新节点被分配了哈希槽:
在这里插入图片描述新节点的哈希槽,并不是连续的,分为了三个区间,直接截取了其他节点的部分哈希槽,如果是全部重新分配,需要全部迁移,这样成本高且效率很低。

1.4 加入从节点

接着使用 add-node 命令将新的从节点,加入到集群中:

[root@localhost bin]# redis-cli -a cluster123456 --cluster add-node 192.168.56.101:7001 192.168.56.101:7000 --cluster-slave --cluster-master-id a95a0a529f62ff1793bf2c2cfc92ec51c96e1268

命令说明:

  • cluster123456 :集群节点认证密码
  • 192.168.56.101:7001:新加入的从节点
  • 192.168.56.101:7000:新从节点对应的主节点
  • a95a0a529f62ff1793bf2c2cfc92ec51c96e1268:主节点 ID

打印日志如下:
在这里插入图片描述

重新查询节点信息,可以看到新的主从节点都加入成功:

在这里插入图片描述

2. 缩容

Redis 集群支持动态删除节点实现缩容,从集群中移除节点,将分配给该节点的哈希槽移动到其他现有节点上。接下来演示将上面的四主四从恢复为三主三从。

2.1 删除从节点

查看将被移除节点的信息:

[root@localhost bin]# redis-cli -a cluster123456 cluster nodes
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
a95a0a529f62ff1793bf2c2cfc92ec51c96e1268 192.168.56.101:7000@17000 master - 0 1721394340000 8 connected 0-1364 5461-6826 10923-12287
78d33242164ad02901903b195f54aaa1b0e14420 192.168.56.101:7001@17001 slave a95a0a529f62ff1793bf2c2cfc92ec51c96e1268 0 1721394340538 8 connected

首先需要删除从节点,使用 del-node 命令,输入从节点的地址、ID

[root@localhost bin]# redis-cli -a cluster123456 --cluster del-node 192.168.56.101:7001 78d33242164ad02901903b195f54aaa1b0e14420

打印日志如下:
在这里插入图片描述

查看节点信息,可以看到从节点已经被移除:

在这里插入图片描述

2.2 迁移哈希槽

删除主节点之前,需要将当前节点中的哈希槽迁移出去,这里直接将被删除节点中的 4096 个哈希槽,全部移入到 6380 节点中,使用 reshard 命令重新分配集群中的哈希槽:

[root@localhost bin]# redis-cli -a cluster123456  --cluster reshard 192.168.56.101:6380

输入4096

[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 4096

接着输入 6380 节点的 ID 接收哈希槽 (cluster nodes命令查看):

What is the receiving node ID? e909dc338f4c2fc7687cf4426d3b95956a90a8a8

接着提示,从哪些节点移出这 4096 个哈希槽,这里输入删除节点的 ID,输入 done ,表示该节点将被删除:

Please enter all the source node IDs.
to use all the nodes as source nodes for the hash slots.
Type'done'
entered allthe source nodes IDs.
Source node #1: e909dc338f4c2fc7687cf4426d3b95956a90a8a8
Source node #2: done

在这里插入图片描述

3.3 删除主节点

使用 del-node 命令删除主节点:

redis-cli -a cluster123456 --cluster del-node 192.168.56.101:7000 a95a0a529f62ff1793bf2c2cfc92ec51c96e1268

查看节点信息,可以看到主节点也被移除了:
在这里插入图片描述

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

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

相关文章

护眼灯和普通台灯有什么区别?解密护眼灯行业常见的四大选购套路

护眼灯和普通台灯有什么区别?随着护眼台灯的普及,市场上涌现了许多新兴品牌。然而,并非所有品牌都具备专业的技术研发实力。因此,网络上关于护眼台灯的各种问题也日益增多,如耐磨性差、耐高温性不足,甚至可…

python实现图像缩放算法

图像缩放算法 1.最近邻插值图像缩放算法详解算法步骤Python 实现详细解释 优缺点2.双线性插值图像缩放算法详解算法步骤Python 实现详细解释 优缺点3.双三次插值图像缩放算法详解算法步骤Python 实现详细解释 优缺点 1.最近邻插值图像缩放算法详解 最近邻插值(Near…

go-kratos 学习笔记(4) 服务注册与发现 nacos注册

接口实现​ Registry 接口分为两个,Registrar 为实例注册和反注册,Discovery 为服务实例列表获取 type Registrar interface {// 注册实例Register(ctx context.Context, service *ServiceInstance) error// 反注册实例Deregister(ctx context.Context…

ubuntu系统vscode调试c/c++大中型项目

文章目录 1. 插件2. 项目工程3. vsode的配置setting.jsonc_cpp_properties.json 4. 启动调试 前置阅读 vscode调试第一篇 1. 插件 c/c, cmake, cmake tools 2. 项目工程 对于我的项目需要用到很多的三方库,三方库的版本又会有很多,一般都是用cmake编译…

QT写一个mainWindow

切换风格的写法&#xff1a; 先看看样式效果&#xff1a; mian_window.h文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow>class MainWindow : public QMainWindow {Q_OBJECTpublic:MainWindow(QWidget *parent nullptr);~MainWindow();void Ini…

对比预测编码表示学习

对比预测编码表示学习 引言 文章主要提出如下几点&#xff1a;首先将高维数据压缩到更加紧凑的潜在嵌入&#xff08;latent embdding&#xff09;空间&#xff0c;在这个空间中条件预测更容易被建模。第二&#xff0c;在这个潜在空间中使用自回归模型&#xff0c;以对未来的多…

DC系列靶场---DC 2靶场的渗透测试(一)

信息收集 Nmap扫描 nmap -sV -p- -sC -T4 172.30.1.141 域名解析 echo 172.30.1.141 dc-2 >> /etc/hosts 目录枚举 gobuster dir -u http://172.30.1.141 -w work/lab/CTF/ATT_CK_01/SecLists-master/Discovery/Web-Content/big.txt -x .php,.rar,.html,.zip -t 20 -b…

探索XEX数字资产交易的优势与操作指南

随着数字资产市场的快速发展&#xff0c;越来越多的投资者开始关注并参与其中。XEX交易所作为一个新兴的数字资产交易平台&#xff0c;以其用户友好的界面和高效的交易服务&#xff0c;迅速吸引了大量用户。本文将介绍XEX数字资产交易的主要特点和优势&#xff0c;帮助新手更好…

物联网在电力行业的应用

作者主页: 知孤云出岫 这里写目录标题 作者主页:物联网在电力行业的应用简介主要应用领域代码案例分析1. 智能电表数据采集和分析2. 设备监控和预测性维护3. 能耗管理和优化4. 电力负载预测5. 分布式能源管理6. 电动汽车充电管理7. 电网安全与故障检测 物联网在电力行业的应用…

python+onlyoffice+vue3项目实战20240722笔记,环境搭建和前后端基础代码

开发后端 先创建data目录,然后在data目录下创建一个test.docx测试文档。 后端代码: import json import req import api from api import middleware, PlainTextResponseasync def doc_callback(request):data = await api.req.get_json(request)print("callback ==…

数据结构——堆(C语言版)

树 树的概念&#xff1a; 树&#xff08;Tree&#xff09;是一种抽象数据结构&#xff0c;它由节点&#xff08;node&#xff09;的集合组成&#xff0c;这些节点通过边相连&#xff0c;把 节点集合按照逻辑顺序抽象成图像&#xff0c;看起来就像一个倒挂着的树&#xff0c;也…

使用C#手搓Word插件

WordTools主要功能介绍 编码语言&#xff1a;C#【VSTO】 1、选择 1.1、表格 作用&#xff1a;全选文档中的表格&#xff1b; 1.2、表头 作用&#xff1a;全选文档所有表格的表头【第一行】&#xff1b; 1.3、表正文 全选文档中所有表格的除表头部分【除第一行部分】 1.…

java面向对象进阶篇--《多态》

目录 一、前言 二、认识多态 方法重写&#xff08;Override&#xff09;&#xff1a; 方法重载&#xff08;Overload&#xff09;&#xff1a; 示例&#xff1a; Person类&#xff08;父类&#xff09; Administrator&#xff08;子类&#xff09; Student&#xff08;子…

docker搭建ES 8.14 集群

参考&#xff1a;【docker搭建es8集群kibana】_docker 安装生产级 es 8.14 集群-CSDN博客 1、之前已搭建一台单机版的dockerES集群 参见 Elasticsearch docker 安装_docker 安装es8.14.3-CSDN博客 2、现在需要重新搭建为docker ES集群 准备新搭建3个点 一、准备工作 提前开…

构建网络安全之盾:应对“微软蓝屏”教训的全面策略

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

深度学习模型Transformer结构

Transformer结构是一种基于自注意力&#xff08;Self-Attention&#xff09;机制的深度学习模型&#xff0c;最初由Vaswani等人在2017年的论文《Attention Is All You Need》中提出&#xff0c;用于解决自然语言处理&#xff08;NLP&#xff09;领域的任务&#xff0c;如机器翻…

MySQL --- 库的操作

一、创建数据库 create database [ if not exists ] 数据库名; // []中的为可选项 在创建库时&#xff0c;也可以指定数据库采用的字符集(character set)和数据库字符集的校验规则(collate) (当我们创建数据库没有指定字符集和校验规则时&#xff0c;系统使用默认字符集&#x…

【复习】软件工程

软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 典型表现&#xff1a; 开发成本和进度的估计常常很不准确 用户对已完成的软件系统不满意&#xff0c;闭门造车 软件质量&#xff08;quality&#xff09;不可靠 软件常常是不可维护的 软件产品供不应…

css技巧混合模式

看上面这个神奇的效果&#xff0c;文字在黑色背景里面显示为白色&#xff0c;而在白色的背景里面显示为黑色&#xff0c;这就是文字智能适配背景。 看到这样的需求&#xff0c;大多数人第一时间想到的是&#xff0c;文字元素有两个&#xff0c;是完全重叠的两层&#xff0c;一…

Facebook在内容创作中的新策略与机会

随着社交媒体的不断发展&#xff0c;内容创作已经成为了平台吸引和留住用户的核心竞争力。Facebook作为全球最大的社交平台之一&#xff0c;不断调整和优化其内容创作策略&#xff0c;以适应用户需求的变化和技术的进步。本文将深入探讨Facebook在内容创作中的新策略与机会&…