深入Redis集群部署:从安装配置到测试验证的完整指南

news2024/9/21 17:56:39

  

🏡作者主页:点击! 

🐧Linux基础知识(初学):点击!

🐧Linux高级管理防护和群集专栏:点击!

🔐Linux中firewalld防火墙:点击!

⏰️创作时间:2024年7月19日14点10分

🀄️文章质量:96分


目录

实验环境

实验开始

1.安装Redis并修改配置文件

2.安装所需组件

3.修改配置文件

4.测试群集

5.测试结果分析

6.总结


在当今数据驱动的时代,Redis作为一款高性能的内存数据结构存储系统,其在处理高速缓存、实时数据分析、消息队列等场景中扮演着不可或缺的角色。而Redis群集的部署,则是解锁其强大功能的关键一步,它不仅能够提供水平扩展能力,确保数据的高可用性和负载均衡,还能在大规模应用中保证服务的稳定性和效率。

实验环境

6台服务器

3台Master

3台Slave

IP地址:

192.168.192.100 /24 这个安装redis-3.2.0.gem

192.168.192.111 /24

192.168.192.112 /24

192.168.192.113 /24

192.168.192.114 /24

192.168.192.116 /24

实验开始

首先第一步上传安装包

我使用的版本:redis-3.2.9.tar.gz

其中一台上传两个包:redis-3.2.9.tar.gz redis-3.2.0.gem

1.安装Redis并修改配置文件

在每一台服务器上都要按照Redis,安装方式一致,其中的每一台配置都一样,只是IP地址不一样。

我这里采用远程登录软件 所有会话执行

Xshell所有会话 你用别的软件也可以 如果不嫌麻烦的话 就一个个配置

2.安装所需组件
 

yum groupinstall -y 'Development Tools' lrzsz
tar zxvf redis-3.2.9.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/redis-3.2.9/
[root@localhost redis-3.2.9]# ls
00-RELEASENOTES  CONTRIBUTING  deps     Makefile   README.md   runtest          runtest-sentinel  src    utils
BUGS             COPYING       INSTALL  MANIFESTO  redis.conf  runtest-cluster  sentinel.conf     tests


make && make install 安装

安装开发工具和解压安装

yum groupinstall -y 'Development Tools' lrzsz:此命令使用包管理器安装“开发工具”组包和包。yumlrzsz

tar zxvf redis-3.2.9.tar.gz -C /usr/src:此命令将 Redis 源码 tarball 解压到目录中。/usr/src

编译并安装Redis:`make && make install`

安装完成之后

3.修改配置文件

找到以下配置参数 把前边的#去掉(不要修改别的 不然到时候连接失败很多问题)

编辑 Redis 配置文件
vim /etc/redis/6379.conf

Redis 配置选项

 bind 0.0.0.0
 daemonize yes
 cluster-enabled yes
 cluster-node-timeout 15000
 cluster-require-full-coverage yes

命令解释:

  1. 绑定 0.0.0.0:
    1. 此选项将 Redis 配置为接受来自所有 IP 地址的连接
  2. 守护进程是
    1. 此选项指示 Redis 作为后台守护程序运行。
    2. yes意味着 Redis 将作为守护进程在后台运行,允许在启动 Redis 后释放终端。
  3. 已启用群集 是
    1. 此选项将启用 Redis 集群模式。
    2. yes 表示Redis将以集群模式运行,允许多个Redis节点组成集群,以提高可扩展性和容错能力。
    3. 在集群模式下,数据会自动跨多个节点进行分片。
  4. cluster-node-timeout 15000
    1. 此选项设置群集节点操作的超时(以毫秒为单位)。
    2. 15000 毫秒(15 秒)是 Redis 在认为节点不可用之前等待节点响应的时间。
    3. 此超时值会影响节点故障的检测以及发生故障转移所需的时间。
  5. cluster-require-full-coverage 是
    1. 此选项指定集群是否要求节点覆盖所有插槽。
    2. yes 表示如果任一哈希槽未被至少一个节点覆盖,Redis 将停止接受写入。
    3. 此设置通过防止部分数据覆盖来确保整个集群的数据一致性和可用性。

这些配置选项将 Redis 设置为接受来自任何 IP 地址的连接、作为后台服务运行、启用具有特定节点超时的集群模式,并确保集群中数据槽的完全覆盖。

这时候可以取消所有会话

回到第一台Redis服务器上 也就是上传两个的服务器

安装 有助于在Ruby应用程序中与Redis进行交互

yum install -y ruby rubygems
gem install redis --version 3.2.0

gem install redis --version 3.2.0:

  • 目的:安装特定版本的Redis gem。

安装 Ruby 和 RubyGems 是安装 Redis gem 的先决条件,Redis gem 是一个用于与 Redis 交互的 Ruby 库。

cd /usr/src/redis-3.2.9/src/


./redis-trib.rb create --replicas 1 192.168.192.112:6379 192.168.192.111:6379 192.168.192.113:6379 192.168.192.114:6379 192.168.192.116:6379 192.168.192.100:6379 
  • 这个命令使用脚本创建一个Redis集群。redis-trib.rb
  • create参数表示执行创建集群的操作。
  • --replicas 1表示每个主节点将有一个从节点作为副本。
  • 后面跟随的是一系列的节点地址(格式为),这些地址是将要加入到集群中的Redis实例。IP:PORT

查看群集状态

 ./redis-trib.rb check 192.168.192.100:6379

redis-trib.rb 是 Redis 提供的一个 Ruby 脚本工具,用于管理和维护 Redis 集群。 命令会对指定的 Redis 节点(在这里是 )进行以下检查:check192.168.192.100:6379

  • 节点健康状况检查:确保节点在线并可以正常响应请求。
  • 节点配置检查:验证节点的配置是否正确,确保节点之间的一致性。
  • 集群状态检查:检查集群的状态,看是否存在分片失效、数据不一致等问题。
  • 副本同步检查:确保主从节点之间的数据同步正常。
  • 槽分配检查:检查每个节点分配的槽,确保槽的分配符合预期。

4.测试群集

登录Redis群集 设置键值测试 跟上 '-c'选项激活群集模式

[root@localhost src]# redis-cli -h 192.168.192.111 -p 6379 -c
192.168.192.111:6379> set a 1
-> Redirected to slot [15495] located at 192.168.192.113:6379
OK
192.168.192.113:6379> set a 2
OK
192.168.192.113:6379> set b 2
-> Redirected to slot [3300] located at 192.168.192.112:6379
OK
192.168.192.112:6379> set c 2
-> Redirected to slot [7365] located at 192.168.192.111:6379
OK
192.168.192.111:6379> set d 2
-> Redirected to slot [11298] located at 192.168.192.113:6379
OK
192.168.192.113:6379> get a
"2"
192.168.192.113:6379> get b
-> Redirected to slot [3300] located at 192.168.192.112:6379
"2"
192.168.192.112:6379> get c
-> Redirected to slot [7365] located at 192.168.192.111:6379
"2"
192.168.192.111:6379> get d
-> Redirected to slot [11298] located at 192.168.192.113:6379
"2"
上述过程中库
看到到登录的是群集中的任意一台服务器,当创建键值的时候,重定向到其他服务器上,按照slot分配的

5.测试结果分析

  • 1.数据的一致性:从结果中可以看到,每次重定向后,执行 操作时,数据都成功写入对应的节点。通过 操作也可以验证数据在正确的槽和节点上。setget
  • 2.槽分配
    • 键 映射到槽 15495,所在节点是 。a192.168.192.113:6379
    • 键 映射到槽 3300,所在节点是 。b192.168.192.112:6379
    • 键 映射到槽 7365,所在节点是 。c192.168.192.111:6379
    • 键 映射到槽 11298,所在节点是 。d192.168.192.113:6379

6.总结

  • 3.一致性验证:通过多次 操作,可以验证每个键的值和预期一致,并且重定向到正确的节点,说明集群的槽分配和数据存储正常。get

通过上述测试可以看出,Redis 集群能够正确地重定向请求,确保数据存储和读取的正确性。 命令可以帮助验证这些节点和配置是否一切正常,是保障 Redis 集群稳定运行的重要工具。./redis-trib.rb check

"成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"

"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"

神秘泣男子

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

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

相关文章

FastAPI 学习之路(六十)打造系统的日志输出

我们要搭建日志系统,可以使用loguru,很不错的一个开源日志系统 pip install loguru 我们在common创建log.py,使用方式也很简单 import os import timefrom loguru import logger# 日志的路径 log_path os.path.join(os.getcwd(), "log…

信息安全工程师题

物理隔离技术要求两台物理机物理上并不直连,只能进行间接的信息交换。所以防火墙不能实现网络的物理隔离Web应用防火墙可以防止SQL注入、xss攻击、恶意文件上传、远程命令执行、文件包含、恶意扫描拦截等;可以发现并拦截恶意的Web代码;可防止…

树形背包问题

一些题目给定了树形结构,在这个树形结构中选取一定数量的点或边(也可能是其他属性),使得某种与点权或者边权相关的花费最大或者最小。解决这类问题,一般要考虑使用树上背包。 树上背包,顾名思义&#xff0c…

JDK垃圾回收机制和垃圾回收算法

查看java相关信息 java -XX:PrintCommandLineFlags -version UseParallelGC 即 Parallel Scavenge Parallel Old,再查看详细信息 内存分配策略 1. 对象优先在 Eden 分配 大多数情况下,对象在新生代 Eden 区分配,当 Eden 区空间不够时,发…

STM32被拔网线 LWIP的TCP无法重连解决方案

目录 一、问题描述 二、项目构成 三、问题解决 1.问题代码 2.解决思路 3.核心代码: 四、完整代码 1.监测网口插入拔出任务 2.TCP任务 3.创建tcp任务 4.删除tcp任务 五、总结 一、问题描述 最近遇到一个问题,就是我的stm32设备作为tcp客户端…

c# listview控件调整标题显示顺序

右键点击listview,选择编辑列 修改DisplayIndex listview在成员位置点击上下箭头移动后,实际显示不会改变,因为DisplayIndex没有改变

Python 工程师对 3D 高斯溅射的介绍(第 1 部分)

从 Python 工程师的角度理解和编写 Gaussian Splatting 欢迎来到雲闪世界。2023 年初,来自法国蔚蓝海岸大学和马克斯普朗克信息研究所的作者发表了一篇题为“用于实时场渲染的 3D 高斯溅射”的论文。 该论文展示了实时神经渲染的重大进步,超越了 NeRF 等…

一文吃透,低代码是什么?盘点国内十大低代码平台,你用过哪个?

什么是低代码(Low Code)?低代码是怎么火的?国内十大低代码平台分别是谁?低代码项目开发流程是怎样的?低代码和无代码区别是啥?以及低代码的核心价值是什么?可以使用低代码开发平台创建哪些应用?…

el-cascader数据回显失败

el-cascader选中数据第一次回显正常,当选中数据改变再次回显时失败,呈现的还是上次的选中数据 如图 常用的方法this. n e x t T i c k ( ( ) > ) 跟 t h i s . nextTick(() > {})跟this. nextTick(()>)跟this.forceUpdate();强制刷新数据都无…

leetcode hot100_part30_二分查找

上次写博客已经一个月了,这段时间在做外卖项目,真的啥也没有就是个小玩具。 上次接触是在最长递增子序列的一个题解里,复习一下已经忘完了。如果我们在一个有序数组中进行查找某个target,一般肯定就是从小到大or从大到小遍历查找&…

js reduce 的别样用法

let mergedItems list.reduce((accumulator, currentItem) > {let existingItem accumulator.find((item) > item.manObject_name currentItem.manObject_name);if (existingItem) {existingItem.laborCostHand currentItem.laborCostHand; //劳务费existingItem.wor…

【网络】Socket编程

文章目录 正确理解端口号理解源IP地址和目的IP地址认识端口号端口号和进程ID 理解Socket网络字节序socket编程接口创建socket套接字bind绑定套接字listen建立监听accept接受连接connect建立连接sendto发送数据接收数据close关闭套接字 sockaddr结构体 正确理解端口号 理解源IP…

Windows 电脑部署 ollama3 并安装模型

Windows 电脑部署 ollama3 并安装模型 部署中为了尽可能减少对本地环境的污染,使用 Docker 安装! github: https://github.com/ollama/ollama 准备部署文件 version: 3.8services:ollama:volumes:- ./models:/root/.ollama # 将本地文件夹挂载到容器中…

独立游戏《星尘异变》UE5 C++程序开发日志7——实现加载界面

目录 一、创建自定义AssetManager类 二、异步加载资产 三、加载界面UI的实现 1.UI布局 2.在打开关卡前和进入关卡后创建UI并统计进度 有时可能会遇到关卡已经进去但依然会卡顿一段时间的情况,所以我们需要在进入关卡后,玩家可以操作关卡之前&#x…

RAG技术进化史:从初级到高级,再到模块化RAG架构的创新发展

大型语言模型(LLMs)通过在自然语言任务及其它领域的成功应用,如 ChatGPT、Bard、Claude 等所示,已经彻底改变了 AI 领域。这些 LLMs 能够生成从创意写作到复杂代码的文本。然而,LLMs 面临着幻觉、过时知识和不透明、无…

Codeforces Round 672 (Div. 2) C1. Pokémon Army (easy version) (DP)

不知道能不能用贪心,反正我是没看出来,所以用DP求解。 首先分析一下题意,我们要在一段序列中取出一段子序列,然后让这段子序列按顺序逐个先加后减最终得到的结果最大。 如果要用DP,那么我们首先就要思考怎么表示状态…

心好累,早点睡!永远不要提前焦虑——早读(逆天打工人爬取热门微信文章解读)

你们遇到心烦的事,会怎么排解呢? 引言Python 代码第一篇 洞见 永远不要提前焦虑第二篇 故事来源于生活结尾 引言 这两天天气都是阴雨 雨时而大 时而小 就是下个不停 老天还算给面子 上班路上总是细雨或者无雨 昨天晚上回来 山地车的前轮有些送动 马上发…

C++从入门到起飞之——this指针 全方位剖析!

个人主页:秋风起,再归来~ C从入门到起飞 个人格言:悟已往之不谏,知来者犹可追 克心守己,律己则安! 目录 1、this指针 2、C和C语⾔实现Stack对⽐ C实现Stack代码 C实现Stack代…

深度挖掘行情接口:股票市场中的关键金融数据API接口解析

在股票市场里,存在若干常见的股票行情数据接口,每一种接口皆具备独特的功能与用途。以下为一些常见的金融数据 API 接口,其涵盖了广泛的金融数据内容,其中就包含股票行情数据: 实时行情接口 实时行情接口&#xff1a…

光耦合器技术的实际应用

光耦合器也称为光隔离器,是现代电子产品中的关键组件,可确保电路不同部分之间的信号完整性和隔离。它们使用光来传输电信号,提供电气隔离和抗噪性。 结构和功能 光耦合器通常由以下部分组成: 1.LED(发光二极管&#…