Redis系列之Cluster集群搭建

在上一篇博客,我们学习Redis哨兵Sentinel集群的搭建,redis的哨兵模式提供了比如监控、自动故障转移等高可用方案,但是这种方案,容量相对固定,要进行持续扩容或者数据分片就不适合,所以有另外一种更复杂的集群方案,Cluster集群模式

实验环境

  • CentOS7
  • Xshell6
  • XFtp6
  • Redis6.2.2

节点准备

Redis Cluster集群模式至少需要三主三从,起码得6个节点,因为没有那么多服务器,所以先用3个节点来做实验,正常大型项目都是需要部署多几个节点,提供系统可用性。

  • 节点1:192.168.65.109 6380
  • 节点2:192.168.65.109 6381
  • 节点3:192.168.66.108 6380
  • 节点4:192.168.66.108 6381
  • 节点5:192.168.66.149 6380
  • 节点6:192.168.66.149 6381

每一个节点部署一个redis,可以配置好一个,然后统一上传即可

# 到对应目录
cd /usr/local
# 创建一个目录
mkdir redis-cluster
# 复制redis-6.2.2安装目录
cp -r /usr/local/redis/redis-6.2.2 /usr/local/redis-cluster/redis-6.2.2-6380 

修改配置

修改redis.conf配置文件

# 修改节点端口
port 6380
# 注释下面这一行
bind 127.0.0.1
# 保护模式改为no,允许外部网络访问
protected-mode no
# 设置后台运行,改为yes
daemonize yes
# 开启集群模式
cluster-enabled yes
# 集群配置文件,根据端口不同修改
cluster-config-file nodes-6380.conf
# pid文件路径配置
pidfile /var/run/redis-6380.pid

启动每个节点的redis

配置好之后,部署每个节点的redis

# 到对应目录
cd /usr/local/redis-cluster/redis-6.2.2-6380/src
# 启动redis
./redis-server ../redis.conf

查看redis是否启动成功

ps -elf | grep redis

在这里插入图片描述

或者查看端口

netstat -lntp | grep 6380

在这里插入图片描述

创建Cluster集群

在任意一个节点创建集群

 ./redis-cli --cluster create 192.168.65.109:6380 192.168.65.109:6381 192.168.66.108:6380 192.168.66.108:6381 192.168.66.149:6380 192.168.66.149:6381 --cluster-replicas 1

在这里插入图片描述
查看集群信息

[root@localhst src]# redis-cli -p 6380
127.0.0.1:6380> cluster nodes

在这里插入图片描述

Cluster自动故障转移

现在模拟一些一个节点出现宕机的情况,192.168.65.109:6380节点关闭,可以看到日志等一会后,原本是slave节点的192.168.66.108:6381节点升级为master节点
在这里插入图片描述
重启一下刚才的192.168.65.109:6380节点,可以看到变成slave节点
在这里插入图片描述

所以,cluster集群是会进行自动故障转移的,还是比较高可用的

集群扩容

连接一个redis客户端,然后add-node第一个参数是要添加的节点,第二个参数是集群里随机的节点

./redis-cli -p 6380 --cluster add-node 192.168.65.109:6382 192.168.65.109:6380

在这里插入图片描述
看看节点是否添加成功

在这里插入图片描述

数据迁移

在上一个步骤,添加好节点后,可以看到节点,但是发现没有分配hash槽
在这里插入图片描述
所以,使用命令

./redis-cli --cluster reshard 192.168.109.6382

在这里插入图片描述

  • 要转移多少槽位的数据
    How many slots do you want to move (from 1 to 16384)? 1-16384之间
  • 输入接收节点id
    What is the receiving node ID? baaf46e193307c6e59e125607c316f7742a8560c,从图可以看出6382的节点id
  • hash槽从哪里拿数据
    假如可以输入192.168.65.109:6380的节点id:219616cbc6bc890cob8b215e4eoa136583f377aa 再后面输入done,回车就会同步对应槽的数据,如果要所有节点,直接输入all即可

集群缩容

要移除节点,也就是集群缩容,可以使用命令移除节点,节点id在cluster nodes查看

./redis-cli --cluster del-node 192.168.65.109:6380 [节点id]

在这里插入图片描述

Cluster其它命令

详细的可以参考官方文档:https://redis.io/commands/?group=cluster

  • 集群相关命令(需要进入客户端)
    • cluster info :打印集群的信息
    • cluster nodes :列出集群当前已知的所有节点,以及这些节点的
      相关信息。
    • cluster meet :将 ip 和 port 所指定的节点添加到集群当中。
    • cluster forget <node_id> :从集群中移除 node_id 指定的节点
    • cluster replicate <node_id> :将当前节点设置为 node_id 指定的节点的
      从节点。
    • cluster saveconfig :将节点的配置文件保存到硬盘里面。
  • 槽slot命令
    • cluster addslots [slot …] :将一个或多个槽(slot)指派(assign)给当前
      节点。
    • cluster delslots [slot …] :移除一个或多个槽对当前节点的指派。
    • cluster flushslots :移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
    • cluster setslot node <node_id> :将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
    • cluster setslot migrating <node_id> :将本节点的槽 slot 迁移到 node_id指定的节点中。
    • cluster setslot importing <node_id> :从 node_id 指定的节点中导入槽slot 到本节点。
    • cluster setslot stable :取消对槽 slot 的导入(import)或者迁移(migrate)。
  • 键命令
    • cluster keyslot :计算键 key 应该被放置在哪个槽上。
    • cluster countkeysinslot :返回槽 slot 目前包含的键值对数量。
    • cluster getkeysinslot :返回 count 个 slot 槽中的键

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

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

相关文章

CentOS常见命令

以下是一些常见的CentOS命令&#xff1a; 管理文件和目录&#xff1a; ls&#xff1a;列出目录中的文件和子目录。cd&#xff1a;切换目录。mkdir&#xff1a;创建一个新的目录。rm&#xff1a;删除文件或目录。cp&#xff1a;复制文件或目录。mv&#xff1a;移动或重命名文件…

探索Java设计模式:桥接模式

探索Java设计模式&#xff1a;深入理解与实践桥接模式 桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#xff0c;它将抽象部分与其实现部分分离&#xff0c;使它们可以独立变化。在Java编程中&#xff0c;桥接模式常用于实现多维度变化、降低类的层次…

图像处理的魔法师:Pillow 库探秘

文章目录 图像处理的魔法师&#xff1a;Pillow 库探秘第一部分&#xff1a;背景介绍第二部分&#xff1a;库是什么&#xff1f;第三部分&#xff1a;如何安装这个库&#xff1f;第四部分&#xff1a;库函数使用方法第五部分&#xff1a;场景应用第六部分&#xff1a;常见Bug及解…

YOLOv9改进策略 | 添加注意力篇 | 利用ILSVRC冠军得主SENetV1改善网络模型特征提取能力

一、本文介绍 本文给大家带来的改进机制是SENet&#xff08;Squeeze-and-Excitation Networks&#xff09;其是一种通过调整卷积网络中的通道关系来提升性能的网络结构。SENet并不是一个独立的网络模型&#xff0c;而是一个可以和现有的任何一个模型相结合的模块(可以看作是一…

最新Java面试题3【2024中级】

互联网大厂面试题 1&#xff1a;阿里巴巴Java面试题 2&#xff1a;阿里云Java面试题-实习生岗 3&#xff1a;腾讯Java面试题-高级 4&#xff1a;字节跳动Java面试题 5&#xff1a;字节跳动Java面试题-大数据方向 6&#xff1a;百度Java面试题 7&#xff1a;蚂蚁金服Java…

消息转化器(解决由于后端给前端响应的格式中不能处理Long类型,因为js只会处理前16位,这样会导致后面的精度丢失)

问题描述&#xff1a;由于后端给前端响应的格式中不能处理Long类型&#xff0c;因为js只会处理前16位&#xff0c;这样会导致后面的精度丢失。 解决方法&#xff0c;将后端响应给前端的数据转化位JSON格式&#xff0c;将long类型的序列化一下 下面为具体方法(JAVA对象转化为J…

PyCharm,终端conda环境无法切换的问题(二个解决方案)

问题 PyCharm终端&#xff0c;环境切换无效&#xff0c;默认始终为base 解决一 Settings->Tools->Terminal->ShellPath&#xff0c;将powershell修改为cmd.exe 解决二 conda config --show在输出中找到 auto_activate_base 的行&#xff0c;发现被设置为 true&#x…

HTML作业

作业1: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>.down…

腾讯云开通幻兽帕鲁服务器需要多少钱?30元

腾讯云开通一个幻兽帕鲁服务器需要多少钱&#xff1f;32元1个月&#xff0c;腾讯云专用幻兽帕鲁服务器最低只要32元1个月&#xff0c;配置为4核16G12M&#xff0c;96元3个月、156元6个月。幻兽帕鲁专用服务器8核32G22M配置115元1个月、345元3个月。幻兽帕鲁服务器活动页面 txyb…

GateWay基本配置

在现代的微服务架构中&#xff0c;网关是一个非常重要的组件&#xff0c;它充当了所有外部请求的入口&#xff0c;负责路由、过滤、监控等功能。Spring Cloud Gateway是一个基于Spring Framework 5、Project Reactor和Spring Boot 2的网关服务&#xff0c;它提供了一种简单而有…

Android Studio Iguana | 2023.2.1配置优化

一. 前言 本篇文章记录最新版本的Android Studio的配置优化&#xff0c;写这篇文章的是由于电脑中的AS工具更新版本覆盖安装后&#xff0c;AS会经常卡死&#xff0c;Debug的时候也经常莫名其妙的断掉&#xff0c;非常影响工作效率&#xff0c;所以重新把配置环境整理一下&#…

Beautiful Soup 库介绍

Beautiful Soup 是一个用于解析和处理 HTML 或 XML 文档的 Python 库。它提供了一套简单易用的工具&#xff0c;可以帮助您从网页中提取数据、导航文档结构、修改文档内容等。 主要功能: 解析 HTML 或 XML 文档: Beautiful Soup 可以将 HTML 或 XML 文档解析为树状结构&#…

11.事件处理

事件处理 我们可以使用 v-on 指令 (简写为 ) 来监听 DOM 事件&#xff0c;并在事件触发时执行对应的 JavaScript。用法&#xff1a;v-on:click"methodName" 或 click"handler" 事件处理器的值可以是 内联事件处理器&#xff1a;事件被触发时执行的内联 J…

[阅读笔记21][RA-CM3]Retrieval-Augmented Multimodal Language Modeling

这篇论文是meta联合斯坦福在23年4月发表的论文&#xff0c;提出了一个使用外部知识检索增强的多模态模型。 这篇模型提出的RA-CM3模型是第一个能够检索并生成图像文本的多模态模型&#xff0c;在图像文本生成任务上优于现有的多模态模型&#xff0c;同时使用更少的训练量。 RA-…

.NET StackExchange.Redis 操作redis

下面是一个简单的示例&#xff0c;展示了如何使用 C# 中的 StackExchange.Redis 库与 Redis 进行交互&#xff0c;包括字符串&#xff08;String&#xff09;、哈希&#xff08;Hash&#xff09;、列表&#xff08;List&#xff09;、集合&#xff08;Set&#xff09;和有序集合…

区间图着色问题:贪心算法设计及实现

区间图着色问题&#xff1a;贪心算法设计及实现 1. 问题定义2. 贪心算法设计2.1 活动排序2.2 分配教室2.3 算法终止 3. 伪代码4. C语言实现5. 算法分析6. 结论7. 参考文献 在本文中&#xff0c;我们将探讨如何使用贪心算法解决一个特定的资源分配问题&#xff0c;即区间图着色问…

物联网实战--驱动篇之(九)NB-IOT(BC260)

目录 一、NB-IOT简介 二、NB-IOT要素 三、代码详解 四、平台端 一、NB-IOT简介 实际上&#xff0c;就是NB-Iot彻底引爆了物联网的&#xff0c;大概2018年左右&#xff0c;NB推广如火如荼&#xff0c;同时广域网、低功耗的LPWAN网络也逐渐传开&#xff0c;现在回头来看&…

Python爬虫爬取中药材价格数据

&#x1f388; 博主&#xff1a;一只程序猿子 &#x1f388; 博客主页&#xff1a;一只程序猿子 博客主页 &#x1f388; 个人介绍&#xff1a;爱好(bushi)编程&#xff01; &#x1f388; 创作不易&#xff1a;喜欢的话麻烦您点个&#x1f44d;和⭐&#xff01; &#x1f388;…

【Leetcode每日一题】 穷举vs暴搜vs深搜vs回溯vs剪枝_全排列 - 全排列(难度⭐⭐)(62)

1. 题目解析 题目链接&#xff1a;46. 全排列 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 回溯算法是一种通过探索所有可能的候选解来找出所有解的算法。当候选解被确认不是一个解&#xff08;或者至少不是最后一…

欢迎 Llama 3:Meta 的新一代开源大语言模型

介绍 Meta 公司的 Llama 3 是开放获取的 Llama 系列的最新版本&#xff0c;现已在 Hugging Face 平台发布。看到 Meta 持续致力于开放 AI 领域的发展令人振奋&#xff0c;我们也非常高兴地全力支持此次发布&#xff0c;并实现了与 Hugging Face 生态系统的深度集成。 Llama 3 提…