redis cluster实验详解

华子目录

  • 实验
    • 环境准备
    • 部署`redis cluster`
    • 添加节点
    • 删除节点
    • redis cluster集群维护

实验

环境准备

  • 再开3台主机

在这里插入图片描述

  • 先把之前3源码编译redis删除
[root@redis-node1 ~]# cd /usr/local/redis/
[root@redis-node1 redis]# make uninstall

[root@redis-node2 ~]# cd /usr/local/redis/
[root@redis-node2 redis]# make uninstall

[root@redis-node3 ~]# cd /usr/local/redis/
[root@redis-node3 redis]# make uninstall
  • 6台主机通过yum方式安装
[root@redis-node1 ~]# yum install redis -y

[root@redis-node2 ~]# yum install redis -y

[root@redis-node3 ~]# yum install redis -y

[root@redis-node110 ~]# yum install redis -y

[root@redis-node120 ~]# yum install redis -y

[root@redis-node130 ~]# yum install redis -y

部署redis cluster

  • 所有redis主机
#现在node1上修改配置文件
[root@redis-node1 ~]# vim /etc/redis/redis.conf
bind * -::*
masterauth "123456"   #集群主从认证
requirepass "123456"   #redis登录密码
cluster-enabled yes   #开启cluster集群功能
cluster-config-file nodes-6379.conf   #指定集群配置文件
cluster-node-timeout 15000   #节点加入集群的超时时间,单位是毫秒
#再将配置文件复制给其他节点
[root@redis-node2 ~]# scp /etc/redis/redis.conf root@172.25.254.20:/etc/redis/

[root@redis-node3 ~]# scp /etc/redis/redis.conf root@172.25.254.30:/etc/redis/

[root@redis-node110 ~]# scp /etc/redis/redis.conf root@172.25.254.110:/etc/redis/

[root@redis-node120 ~]# scp /etc/redis/redis.conf root@172.25.254.120:/etc/redis/

[root@redis-node130 ~]# scp /etc/redis/redis.conf root@172.25.254.130:/etc/redis/
[root@redis-node1 ~]# systemctl restart redis

[root@redis-node2 ~]# systemctl restart redis

[root@redis-node3 ~]# systemctl restart redis

[root@redis-node110 ~]# systemctl restart redis

[root@redis-node120 ~]# systemctl restart redis

[root@redis-node130 ~]# systemctl restart redis
#进入node1的redis中
[root@redis-node1 ~]# redis-cli

在这里插入图片描述
在这里插入图片描述

[root@redis-node1 ~]# redis-cli --cluster create -a 123456 \
> 172.25.254.10:6379 172.25.254.20:6379 172.25.254.30:6379 \
> 172.25.254.110:6379 172.25.254.120:6379 172.25.254.130:6379 \
> --cluster-replicas 1
  • --cluster-replicas 1:指定了每个主节点应该有一个从节点。由于总共6个节点Redis集群自动将这些节点分为3个主节点3个从节点Redis会根据节点IP地址端口号自动进行主从分配,确保每个主节点都有一个对应从节点

在这里插入图片描述
在这里插入图片描述

  • 只有master上有hash槽slave上没有hash槽
  • 只有存在hash槽主机才能进行读写
  • slave作用:只有当对应master挂掉了,才会将master上的hash槽迁移到slave上,在没有迁移之前slave上是没有hash槽的

此时redis cluster已经搭建成功

[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.20:6379

在这里插入图片描述

[root@redis-node1 ~]# redis-cli -a 123456 --cluster info 172.25.254.110:6379

在这里插入图片描述

  • 当在10插入数据
[root@redis-node1 ~]# redis-cli -a 123456
127.0.0.1:6379> set name huazi
(error) MOVED 5798 172.25.254.20:6379

在这里插入图片描述

  • 20插入成功
[root@redis-node2 ~]# redis-cli -a 123456
127.0.0.1:6379> set name huazi
OK

在这里插入图片描述

  • 当在10上查看数据
[root@redis-node1 ~]# redis-cli -a 123456
127.0.0.1:6379> get name
(error) MOVED 5798 172.25.254.20:6379

在这里插入图片描述

  • 20查看
[root@redis-node2 ~]# redis-cli -a 123456
127.0.0.1:6379> get name
"huazi"

在这里插入图片描述

添加节点

  • 2个节点

在这里插入图片描述

[root@redis-node50 ~]# yum install redis -y

[root@redis-node150 ~]# yum install redis -y
#将配置文件传递给50和150
[root@redis-node1 ~]# scp /etc/redis/redis.conf root@172.25.254.50:/etc/redis/

[root@redis-node1 ~]# scp /etc/redis/redis.conf root@172.25.254.150:/etc/redis/
[root@redis-node50 ~]# systemctl restart redis

[root@redis-node150 ~]# systemctl restart redis

在这里插入图片描述

  • 50加入到cluster集群中
[root@redis-node1 ~]# redis-cli -a 123456 --cluster add-node 172.25.254.50:6379 172.25.254.20:6379
  • 查看
[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379

在这里插入图片描述

  • cluster中重新划分槽位
[root@redis-node1 ~]# bc
16384/4
4096

[root@redis-node1 ~]# redis-cli -a 123456 --cluster reshard 172.25.254.10:6379

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 槽位重新划分同时不会影响原来槽位中数据
[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379

在这里插入图片描述

  • 查看数据
[root@redis-node1 ~]# redis-cli -a 123456
127.0.0.1:6379> get name
(error) MOVED 5798 172.25.254.50:6379
#让到50上查看
[root@redis-node50 ~]# redis-cli -a 123456
127.0.0.1:6379> get name
"huazi"
  • 加入slave集群
[root@redis-node1 ~]# redis-cli -a 123456 --cluster add-node 172.25.254.150:6379 172.25.254.10:6379 --cluster-slave --cluster-master-id 779b42266fc4f08b0be1d65cba5a77ccbb46b8d4

在这里插入图片描述

  • 查看
[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379

在这里插入图片描述

删除节点

  • 先删除slave
[root@redis-node1 ~]# redis-cli -a 123456 --cluster del-node 172.25.254.150:6379 c4311c2a6eee3330015c9b3458060ace57b906be

在这里插入图片描述

[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379

在这里插入图片描述

  • 50槽位分享给其他节点
[root@redis-node1 ~]# redis-cli -a 123456 --cluster reshard 172.25.254.10:6379

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379

在这里插入图片描述

[root@redis-node1 ~]# redis-cli -a 123456 --cluster del-node 172.25.254.50:6379 779b42266fc4f08b0be1d65cba5a77ccbb46b8d4

在这里插入图片描述

  • 发现50已经从集群移除了
[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379

在这里插入图片描述

  • 查看数据
[root@redis-node1 ~]# redis-cli -a 123456
127.0.0.1:6379> get name
(error) MOVED 5798 172.25.254.20:6379
[root@redis-node2 ~]# redis-cli -a 123456
127.0.0.1:6379> get name
"huazi"

redis cluster集群维护

  • 添加节点的时候是先添加node节点集群,然后分配槽位删除节点的操作与添加节点的操作正好相反,是先将被删除Redis node上的槽位迁移到集群中其他Redis node节点上,然后再将其删除,如果一个Redis node节点上的槽位没有被完全迁移删除node时候提示有数据无法删除

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【详细讲解】hive优化

1、开启本地模式 大多数的Hadoop Job是需要Hadoop提供的完整的可扩展性来处理大数据集的。不过,有时Hive的输入数据量是非常小的。在这种情况下,为查询触发执行任务消耗的时间可能会比实际job的执行时间要多的多。对于大多数这种情况,Hive可…

Unity3d UGUI如何优雅的实现Web框架(Vue/Rect)类似数据绑定功能(含源码)

前言 Unity3d的UGUI系统与Web前端开发中常见的数据绑定和属性绑定机制有所不同。UGUI是一个相对简单和基础的UI系统,并不内置像Web前端(例如 Vue.js或React中)那样的双向数据绑定或自动更新UI的机制。UGUI是一种比较传统的 UI 系统&#xff…

828华为云征文|使用sysbench对Flexus X实例对mysql进行性能测评

目录 一、Flexus X实例概述 1.1?Flexus X实例 1.2?在mysql方面的优势 二、在服务器上安装MySQL 2.1 在宝塔上安装docker 2.2 使用宝塔安装mysql 2.3 准备测试数据库和数据库表 三、安装sysbench并进行性能测试 3.1 使用yum命令sysbench 3.2?运行?sysbench 并进行…

影刀进阶指令 | Kimi (对标ChatGPT)

文章目录 影刀进阶指令 | Kimi (对标ChatGPT)一. 需求二. 流程三. 实现3.1 流程概览3.2 流程步骤讲解1\. 确定问题2\. 填写问题并发送3\. 检测答案是否出完 四. 运维 影刀进阶指令 | Kimi (对标ChatGPT) 简单讲讲RPA调用kimi实现…

【教程】通过Docker运行AnythingLLM

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 官方教程:Local Docker Installation ~ AnythingLLM 1、先创建一个目录用于保存anythingllm的持久化文件: sudo mkdir /app su…

游戏引擎学习第65天

回顾我们在模拟区域更改方面的进展 目前我们正在进行游戏的架构调整,目标是建立一个引擎架构。我们正在实施的一个关键变化是引入模拟区域的概念,这样我们可以创建非常大的游戏世界,而这些世界的跨度不必受限于单个浮点变量。 通过这种方式…

【从零开始入门unity游戏开发之——C#篇35】C#自定义类实现Sort自定义排序

文章目录 一、List<T>自带的排序方法1、List<T>调用Sort()排序2、 能够使用 Sort() 方法进行排序的本质 二、自定义类的排序1、通过实现泛型IComparable<T> 接口&#xff08;1&#xff09;示例&#xff08;2&#xff09;直接调用 int 类型的 CompareTo 方法进…

YOLO系列正传(五)YOLOv4论文精解(上):从CSPNet、SPP、PANet到CSPDarknet-53

系列文章 YOLO系列基础 YOLO系列基础合集——小白也看得懂的论文精解-CSDN博客 YOLO系列正传 YOLO系列正传&#xff08;一&#xff09;类别损失与MSE损失函数、交叉熵损失函数-CSDN博客 YOLO系列正传&#xff08;二&#xff09;YOLOv3论文精解(上)——从FPN到darknet-53-C…

Redis 实战篇 ——《黑马点评》(上)

《引言》 在进行了前面关于 Redis 基础篇及其客户端的学习之后&#xff0c;开始着手进行实战篇的学习。因内容很多&#xff0c;所以将会分为【 上 中 下 】三篇记录学习的内容与在学习的过程中解决问题的方法。Redis 实战篇的内容我写的很详细&#xff0c;为了能写的更好也付出…

DevOps实战:用Kubernetes和Argo打造自动化CI/CD流程(2)

DevOps实战&#xff1a;用Kubernetes和Argo打造自动化CI/CD流程&#xff08;2&#xff09; 背景 Tips 翻遍国内外的文档&#xff0c;关于 Argo 作为 CI/CD 当前所有开源的文档&#xff0c;博客&#xff0c;argo官方文档。得出的结论是&#xff1a; argo官方给出的例子都相对…

探索Flink动态CEP:杭州银行的实战案例

摘要&#xff1a;本文撰写自杭州银行大数据工程师唐占峰、欧阳武林老师。将介绍 Flink 动态 CEP的定义与核心概念、应用场景、并深入探讨其技术实现并介绍使用方式。主要分为以下几个内容&#xff1a; Flink动态CEP简介 Flink动态CEP的应用场景 Flink动态CEP的技术实现 Flin…

STM32F103RCT6学习之三:串口

1.串口基础 2.串口发送 1&#xff09;基本配置 注意&#xff1a;实现串口通信功能需在keil中设置打开Use Micro LIB&#xff0c;才能通过串口助手观察到串口信息 2)编辑代码 int main(void) {/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration-------------…

Python中构建终端应用界面利器——Blessed模块

在现代开发中&#xff0c;命令行应用已经不再仅仅是一个简单的文本输入输出工具。随着需求的复杂化和用户体验的重视&#xff0c;终端界面也逐渐成为一个不可忽视的设计环节。 如果你曾经尝试过开发终端UI&#xff0c;可能对传统的 print() 或者 input() 函数感到不满足&#…

OpenHarmony-5.PM 子系统(2)

电池服务组件OpenHarmony-4.1-Release 1.电池服务组件 Battery Manager 提供了电池信息查询的接口&#xff0c;同时开发者也可以通过公共事件监听电池状态和充放电状态的变化。电池服务组件提供如下功能&#xff1a; 电池信息查询。充放电状态查询。关机充电。 电池服务组件架…

Java 网络原理 ①-IO多路复用 || 自定义协议 || XML || JSON

这里是Themberfue 在学习完简单的网络编程后&#xff0c;我们将更加深入网络的学习——HTTP协议、TCP协议、UDP协议、IP协议........... IO多路复用 ✨在上一节基于 TCP 协议 编写应用层代码时&#xff0c;我们通过一个线程处理连接的申请&#xff0c;随后通过多线程或者线程…

基于规则的系统架构:理论与实践

在当今信息化快速发展的时代&#xff0c;企业面临着日益复杂和多变的市场环境&#xff0c;传统的静态系统架构已难以满足快速响应业务变化的需求。基于规则的系统架构&#xff08;Rule-Based System Architecture, RBSA&#xff09;作为一种灵活、可扩展的架构模式&#xff0c;…

记一个itertools排列组合和列表随机排序的例子

朋友不知道哪里弄来了一长串单词列表&#xff0c;一定要搞个单词不重复的组合。那么这个时候我们就可以想到读书时所学的排列组合知识了&#xff0c;而这个在Python中可以怎么实现呢&#xff1f;我记录如下&#xff1a; 使用itertools模块实现排列组合 在 Python 中&#xff…

从0入门自主空中机器人-4-【PX4与Gazebo入门】

前言: 从上一篇的文章 从0入门自主空中机器人-3-【环境与常用软件安装】 | MGodmonkeyの世界 中我们的机载电脑已经安装了系统和常用的软件&#xff0c;这一篇文章中我们入门一下无人机常用的开源飞控PX4&#xff0c;以及ROS中无人机的仿真 1. PX4的安装 1.1 PX4固件代码的下载…

搭建vue项目

一、环境准备 1、安装node node官网&#xff1a;https://nodejs.org/zh-cn 1.1、打开官网&#xff0c;选择“下载”。 1.2、选择版本号&#xff0c;选择系统&#xff0c;根据需要自行选择&#xff0c;上面是命令安装方式&#xff0c;下载是下载安装包。 1.3、检查node安装…

深度学习笔记(5)——目标检测和图像分割

目标检测与图像分割 语义分割:如果没有语义信息,很难正确分类每个像素 解决方案:感知像素周围的语义,帮助正确分类像素 滑窗计算:计算非常低效,图像块的重叠部分会被重复计算很多次 解决方案:转向全卷积 全卷积问题:分类模型会大幅降低特征的分辨率,难以满足分割所需的高分辨…