Redis(三)之搭建集群

redis哨兵模式搭建【一主两从三哨兵】,redis集群化搭建部署 环境准备 centos7三台,关闭防火墙和selinux 一主:192.168.1.101 俩从:slave1-192.168.1.111 1 slave-292.168.1.115 master端操作 1、安装依赖环境 yum -y install gcc gcc-c++ 2、拖包解压 tar zxf redis-5.0.3.tar.gz 3、进入目录安装 cd redis-5.0.3 make && make install 4、复制配置文件到/etc下 cp redis.conf 阅读详情

Redis集群简介

Redis 是一个开源的 key-value 存储系统,由于出众的性能,大部分互联网企业都用来做服务器端缓存。Redis 在3.0版本前只支持单实例模式,虽然支持主从模式、哨兵模式部署来解决单点故障,但是现在互联网企业动辄大几百G的数据,可完全是没法满足业务的需求,所以,Redis 在 3.0 版本以后就推出了集群模式。

Redis 集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 个 slot,每个 Redis 实例负责其中一部分 slot 。集群中的所有信息(节点、端口、slot等),都通过节点之间定期的数据交换而更新。
Redis 客户端可以在任意一个 Redis 实例发出请求,如果所需数据不在该实例中,通过重定向命令引导客户端访问所需的实例。

搭建集群

安装部署任何一个应用其实都很简单,只要安装步骤一步一步来就行了。下面说一下 Redis 集群搭建规划,由于集群至少需要6个节点(3主3从模式),所以,没有这么多机器给我玩,我本地也起不了那么多虚拟机(电脑太烂),现在计划是在一台机器上模拟一个集群,当然,这和生产环境的集群搭建没本质区别。

我现在就要在已经有安装了 Redis 的一个 CentOS 下开始进行集群搭建,如果你还不是很清楚 Linux 下如何安装 Redis ,可以去看这一篇文章《Redis(一)之概述及安装》。请注意,下面所有集群搭建环境都基于已安装好的 Redis 做的。

1.创建文件夹

我们计划集群中 Redis 节点的端口号为9001-9006,端口号即集群下各实例文件夹。数据存放在 端口号/data文件夹中。
这里写图片描述

mkdir /usr/local/redis-cluster
cd redis-cluster
mkdir -p 9001/data 9002/data 9003/data 9004/data 9005/data 9006/data

2.复制执行脚本

在/usr/local/redis-cluster下创建bin文件夹,用来存放集群运行脚本,并把安装好的 Redis 的src路径下的运行脚本拷贝过来。看命令:

mkdir redis-cluster/bin
cd /usr/local/redis/src
cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server redis-trib.rb /usr/local/redis-cluster/bin

3.复制一个新 Redis 实例

我们现在从已安装好的 Redis 中复制一个新的实例到 9001 文件夹,并修改redis.conf配置。
这里写图片描述

cp /usr/local/redis/* /usr/local/redis-cluster/9001

注意,修改redis.conf配置和单点唯一区别是下图部分,其余还是常规的这几项:

port 9001(每个节点的端口号)
daemonize yes
bind 192.168.119.131(绑定当前机器 IP)
dir /usr/local/redis-cluster/9001/data/(数据文件存放位置)
pidfile /var/run/redis_9001.pid(pid 9001和port要对应)
cluster-enabled yes(启动集群模式)
cluster-config-file nodes9001.conf(9001和port要对应)
cluster-node-timeout 15000
appendonly yes

集群搭建配置重点就是取消下图中的这三个配置的注释:
这里写图片描述

4.再复制出五个新 Redis 实例

我们已经完成了一个节点了,其实接下来就是机械化的再完成另外五个节点,其实可以这么做:把 9001 实例 复制到另外五个文件夹中,唯一要修改的就是redis.conf中的所有和端口的相关的信息即可,其实就那么四个位置。开始操作,看图:
这里写图片描述

\cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9002
\cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9003
\cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9004
\cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9005
\cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9006

\cp -rf命令是不使用别名来复制,因为 cp 其实是别名 cp -i,操作时会有交互式确认,比较烦人。

5.修改 9002-9006 的 redis.conf 文件

其实非常简单了,你通过搜索会发现其实只有四个点需要修改,我们全局替换下吧,进入相应的节点文件夹,做替换就好了。命令非常简单,看图:
这里写图片描述

vim redis.conf
:%s/9001/9002g

回车后,就会有替换几个地方成功的提示,不放心可以手工检查下:
这里写图片描述

/usr/local/bin/redis-server /usr/local/redis-cluster/9001/redis.conf 
/usr/local/bin/redis-server /usr/local/redis-cluster/9002/redis.conf 
/usr/local/bin/redis-server /usr/local/redis-cluster/9003/redis.conf 
/usr/local/bin/redis-server /usr/local/redis-cluster/9004/redis.conf 
/usr/local/bin/redis-server /usr/local/redis-cluster/9005/redis.conf 
/usr/local/bin/redis-server /usr/local/redis-cluster/9006/redis.conf

可以检查一下是否启动成功:ps -el | grep redis
看的出来,六个节点已经全部启动成功了。

随便找一个节点测试试

/usr/local/redis-cluster/bin/redis-cli -h 192.168.119.131 -p 9001
set name mafly

连接成功了,但好像报错了阿???
(error) CLUSTERDOWN Hash slot not served(不提供集群的散列槽),这是什么鬼?
这是因为虽然我们配置并启动了 Redis 集群服务,但是他们暂时还并不在一个集群中,互相直接发现不了,而且还没有可存储的位置,就是所谓的slot(槽)。

安装集群所需软件

由于 Redis 集群需要使用 ruby 命令,所以我们需要安装 ruby 和相关接口。

yum install ruby
yum install rubygems
gem install redis 

这里写图片描述

这才是真正的创建集群

先不废话,直接敲命令:

/usr/local/redis-cluster/bin/redis-trib.rb create --replicas 1 192.168.119.131:9001 192.168.119.131:9002 192.168.119.131:9003 192.168.119.131:9004 192.168.119.131:9005 192.168.119.131:9006

这里写图片描述
简单解释一下这个命令:调用 ruby 命令来进行创建集群,--replicas 1 表示主从复制比例为 1:1,即一个主节点对应一个从节点;然后,默认给我们分配好了每个主节点和对应从节点服务,以及 solt 的大小,因为在 Redis 集群中有且仅有 16383 个 solt ,默认情况会给我们平均分配,当然你可以指定,后续的增减节点也可以重新分配。

M: 10222dee93f6a1700ede9f5424fccd6be0b2fb73,为主节点Id

S: 9ce697e49f47fec47b3dc290042f3cc141ce5aeb 192.168.119.131:9004 replicates 10222dee93f6a1700ede9f5424fccd6be0b2fb73,从节点下对应主节点Id

目前来看,9001-9003 为主节点,9004-9006 为从节点,并向你确认是否同意这么配置。输入yes后,会开始集群创建。
这里写图片描述
上图则代表集群搭建成功啦!!!

验证一下:
依然是通过客户端命令连接上,通过集群命令看一下状态和节点信息等。

/usr/local/redis-cluster/bin/redis-cli -c -h 192.168.119.131 -p 9001
cluster info
cluster nodes

这里写图片描述
通过命令,可以详细的看出集群信息和各个节点状态,主从信息以及连接数、槽信息等。这么看到,我们已经真的把 Redis 集群搭建部署成功啦!

设置一个mafly:
你会发现,当我们set name mafly时,出现了 Redirected to slot 信息并自动连接到了9002节点。这也是集群的一个数据分配特性,这里不详细说了。
这里写图片描述

Linux 系列(三)——Redis 分布式集群搭建 Java 数据结构在Redis的安装和部署(Linux)一文中详细介绍了在Linux环境中搭建Redis服务,本文将介绍关于Redis分布式 集群搭建细节。 一、Redis集群架构 1、Redis集群架构图 蓝色的为Redis集群中的每个node节点,节点之间通过ping 命令,测试相互是否连接正常,普通集群没有主从区分,连接任何一个节点操作,都可以转发到其他 阅读详情

相关推荐

阿里大厂面试:2亿条数据需要缓存,如何设计这个存储方案?

阿里大厂面试

互联网老辛 7532

Redis集群(cluster)

由于数据量过大,单个Master复制集难以承担,因此需要对多个复制集进行集群,形成水平扩展每个复制集只负责存储整个数据集的一部分,这就是Redis的集群,其作用是提供在多个Redis节点间共享数据的程序集。Redis集群是一个提供在多个Redis节点间共享数据的程序集,Redis集群可以支持多个Master。Redis集群没有使用一致性hash,而是引入了哈希槽的概念。Redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽,集群的每个节点负责一部分hash槽。

Hai_pp的博客 8603

告别‘小爱同学’:用ESP32-S3和esp-sr SDK,从零打造一个离线语音助手(含完整代码)

本文详细介绍了如何利用ESP32-S3芯片和esp-sr SDK从零构建一个离线语音助手,涵盖硬件选型、声学设计、SDK配置及低功耗优化等关键步骤。通过实战案例和完整代码,帮助开发者实现自定义唤醒词和命令词,打造低成本、高隐私的本地语音控制解决方案。

weixin_29041195的博客 370

Redis集群(Cluster)

三种数据分片算法,搭建redis集群,redis集群扩容

weixin_61427900的博客 3852

Trae+Playwright MCP自动化测试全流程指南:从环境搭建到智能体运行

本文提供了一份详细的Trae与Playwright MCP集成指南,涵盖从Node.js、Python环境搭建到智能体创建的全流程。通过结合MCP协议,AI智能体能够理解任务并驱动Playwright执行复杂的浏览器自动化操作,实现从网页数据抓取到端到端测试的智能工作流。

banana的博客 531

YOLOv8改进,YOLOv8添加可变性卷积DCNv2

DCNv2对原始的DCNv1进行了改进,可变形卷积网络的卓越性能源于其适应对象几何变化的能力。通过对其自适应行为的检查,虽然对其神经特征的空间支持比常规的ConvNets更接近于对象结构,但这种支持可能远远超出感兴趣区域,导致特征受到不相关图像内容的影响。为了解决这个问题,我们提出了一种可变形卷积网的重新表述,通过提高建模能力和更强的训练,提高了其专注于相关图像区域的能力。通过更全面地集成网络中的可变形卷积,并引入扩展变形建模范围的调制机制,增强了建模能力。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 3606

Redis集群Hash槽分配异常 CLUSTERDOWN Hash slot not served的解决方式

Redis集群Hash槽分配异常 CLUSTERDOWN Hash slot not served的解决方式

ONEBEYONDFANS的博客 2859

基于YOLOv8深度学习架构的智能农业巡检小车系统—面向农作物与杂草实时精准识别的创新实践

本研究设计并实现了一套基于YOLOv8的智能农业巡检小车系统,解决农田中农作物与杂草的精准识别与追踪问题。系统采用改进YOLOv8-RGCSPELAN-ECA-AFPN模型,融合ECA注意力机制与AFPN多尺度特征融合结构,提升复杂环境下的检测精度。硬件以树莓派4B为核心,集成摄像头、传感器与电机模块,具备避障、循迹与自主导航功能。移动端基于Android部署NCNN推理引擎,实现模型高效移植与实时检测。

Stara-AI的博客 1424

Redis Cluster 集群详解

Redis 分布式扩展之 Redis Cluster 方案 主从切换的过程中会丢失数据,因为只有一个 master,只能单点写,没有解决水平扩容的问题。而且每个节点都保存了所有数据,一个是内存的占用率较高,另外就是如果进行数据恢复时,非常慢。而且数据量过大对数据 IO 操作的性能也会有影响。 所以我们同样也有对 Redis 数据分片的需求,所谓分片就是把一份大数据拆分成多份小数据,在 3.0 之前,我们只能通过构建多个 redis 主从节点集群,把不同业务数据拆分到不冉的集群中,这种方式在业务层需要有大量的

Java是世界上最好的语言 1万+

使用 Simulink Real-Time 搭建一个完整的实时信号采集与滤波系统模型

本文详细介绍了基于Simulink Real-Time构建实时信号采集与滤波系统的完整流程。主要内容包括:系统配置(模型创建与参数设置)、信号采集模块搭建(模拟信号源或真实硬件连接)、实时滤波器设计(浮点/定点)、输出可视化(Scope/ToWorkspace等)、模型编译与下载到目标机、外部模式在线调试及数据保存方法。系统可实现微秒级实时信号处理,适用于工业控制、航空航天等对时间确定性要求高的场景。文章还提供了优化建议(多速率建模、优先级调度等)和应用场景说明,帮助读者快速掌握实时系统开发的核心技能。

amy_mhd的博客 304

操作系统|知识梳理|复习(下)

操作系统复习

知识库搭建ing 1784

redis主从集群搭建,三主六从

redis集群搭建三主六从节点

ChaoandPeng的博客 1800

Android Input——输入事件ANR执行(十六)

上一篇文章我们介绍了输入事件 ANR 的触发流程,这里我们再来看一下输入事件 ANR的执行流程。

小旭的专栏 942

Redis集群、一主二从三哨兵的搭建

Redis集群、一主二从三哨兵的搭建

Keybord_hard的博客 1655

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Docker Compose搭建Redis一主二从三哨兵高可用集群

Docker Compose搭建Redis一主二从三哨兵高可用集群一、Docker Compose搭建Redis主从服务器二、哨兵sentinel模式搭建三、故障转移测试 相关内容原文地址: 博客园:陈大帅哥Ray:[Docker Compose搭建Redis一主二从三哨兵高可用集群](https://www.cnblogs.com/ruiyeclub/p/12355073.html) 一、D...

爱是与世界平行 999

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

redis集群搭建,一主两从三哨兵。

redis集群搭建,一主两从三哨兵的简单搭建过程, 首先准备redis,版本都可以,下载地址:http://redis.io/download 这次所用到的区别在于3.0版本不支持 :protected-mode no。的属性配置,会报错,Invalid argument during startup: unknown conf file parameter : protected-mod 3.2版本以上的可以 下载好windows版本的zip文件后,解压即可,启动redis的默认端口是6379,都

可行的code 1644

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Windows 系统下本地单机搭建 Redis 主从 + 哨兵 + 集群(一主二从三哨兵六-八集群)

一主两从三哨兵集群,当master节点宕机时,通过哨兵(sentinel)重新推选出新的master节点,保证集群的可用性。

wangfei 3372

Redis —— Cluster集群搭建<三>

目录 一、集群扩容 step1:创建节点并启动 step2:集群中添加节点 step3:新节点分配slot step4:新主节点添加从节点 二、添加从节点 三、验证主从切换 step1:主节点6388下线 step2:查看节点信息 step3:启动6388节点 step4:查看节点信息 四、主节点删除 step1:重新分配slot ​step2:删除主节点 step3:slot是否均匀 五、参考资料 本章节主要是cluster集群验证,如集...

爱我所爱0505 457

Redis(三)集群原理、搭建

前言在实际的生产过程中,单服的redis存在单点的问题,redis通常需要集群的环境。相比单服的redis,集群有以下些好处: 1.容错性解决在单服redis的单点问题。在一个或多个节点出现宕机的情况下,集群内部通过投票的机制能够快速的进行选举和不停机的情况下进行服务持续提供。 2.扩展性相比单服在升级性能过程中,集群也能够很好的实现缓存的性能升级【多节点的热部署】。 3.性能提升性能的提升其实在扩

柏修的专栏 1万+

简单搭建redis集群(redis复制、哨兵、集群的实现(三 集群))

1.客户端分片与集群比较 客户端分片: 维护成本高 增加、移除节点较繁琐 集群: 有和单机实例同样的性能 网络分区后能够提供一定的可访问性 主数据库故障分配的支持 2. 配置集群 新建一个myClusters文件夹,集群需要至少3个主数据库,所以要有6个节点,选取8000-8005端口,在myClusters文件夹新建这几个文件夹。 [root@localhost redis-5.0.0]...

qq_35456400的博客 283

Redis中sentinel集群的搭建和Jedis测试 图文教程[三]

在前两篇Redis中sentinel集群的搭建和Jedis测试 图文教程[一] 和Redis中sentinel集群的搭建和Jedis测试 图文教程[二] 中分别简述了Redis中sentinel集群的搭建和Java代码的Jedis测试。      这篇主要来简单分析一下Redis-sentinel集群的原理,根据追踪sentinel信息来完成Redis-sentinel集群测试中的详细的原理分析

小地盘的诺克萨斯 3064

redis集群篇三:手动搭建redis5.x自己的集群分片

手动搭建分片集群一、启动1、启动集群2、手动分片3、测试其他、查看帮助有哪些功能 一、启动 1、启动集群 编辑把端口改为8000开始,保存退出 [root@localhost create-cluster]# vi create-cluster #!/bin/bash # Settings PORT=8000 TIMEOUT=2000 NODES=6 REPLICAS=1 在redis安装目录的utils下 ,按照readme里面的提示执行此脚本 ./create-cluster start

小浪与艳花 475

Redis三:主从、哨兵和集群的搭建

Redis主从、哨兵、集群的搭建,步骤详解+日志分析,以及主从复制、读写分离等场景的测试

青衫忆笙的博客 554

Redis(三)主从架构、Redis哨兵架构、Redis集群方案对比、Redis高可用集群搭建、Redis高可用集群之水平扩展

转自 极客时间。

蓝天it(让亿万孩子在蓝天下共享优质教育) 2032
上一篇: HttpClient
下一篇: Redis(四)之Jedis
章 鱼
博客等级 码龄10年 203粉丝 105原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值