百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

redis专题系列17 -- redis 集群模式之Cluster集群

mhr18 2025-03-30 19:03 39 浏览 0 评论

Cluster集群就是一个提供在多个Redis间节点间共享数据的程序集,是Redis 3.0版本以后引入的,是redis官方推荐的性能最高的集群模式。

架构模型


1.采取了去中心化的思想,没有中心节点

2.其对key的算法并非一致性hash算法,而是采用了哈希槽模型,每个集群拥有16384个hash slot,存储时,使用CRC16算法对key校验,然后对16384取模得到对应的哈希槽。

3.节点之间采用轻量通讯协议,占用带宽少,效率高

4.自动负载均衡,自动failover,支持动态扩展。

5.Cluster模式也是基于主从模式+哨兵衍生出来的,只不过数据节点本身也是哨兵节点,如果有半数节点发现某个节点异常,则共同决定故障节点状态,如果主节点故障,则其从节点晋升为主节点,主节点重启后降级为从节点。但是如果集群没有设置salve节点,一旦主节点挂掉,整个集群便进入fail状态,因为集群的slot映射不完整。如果集群超过半数以上的master挂掉,无论是否有slave,集群都会进入fail状态。

6.集群的规模至少有3台以上的master,这样比较合适集群的部署。

架构搭建实战

环境: win10 X64, redis 3.2.100

1.准备6份配置文件,3主3从,下面奉上其中一份配置的详情:


端口号依次从7000~7005,同样的集群配置文件的名称与端口号保持一致。

2.下载并安装ruby运行时环境

最新版本官网地址:
https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.5-1/rubyinstaller-2.6.5-1-x64.exe

按照提示一步步向下走就好了,安装成功后,可以使用 ruby -v 检查是否成功。


孤安装的是2.6.3,国内网站下载的,官网太慢

3.下载ruby环境下Redis的驱动,考虑到兼容性,这里下载的是4.1.3版本

下载地址:
https://rubygems.org/downloads/redis-4.1.3.gem,注意如果ruby的版本低于2.3.0,安装驱动时会报错。

4.安装Redis驱动

gem install --local path_to_gem/redis-4.1.3.gem 

5.下载创建Redis集群的ruby脚本文件redis-trib.rb,路径如下

github地址:
https://github.com/beebol/redis-trib.rb,解压然后放到redis的安装目录下(建议)。


redis-trib.rb脚本

6.cd到redis安装目录,依次启动7000~7005

redis-server redis.7000.conf
redis-server redis.7001.conf
redis-server redis.7002.conf
redis-server redis.7003.conf
redis-server redis.7004.conf
redis-server redis.7005.conf

启动成功:


cluster模式


同时看到安装目录生成了对应节点的节点配置文件:


内容即记录自己节点的信息:


nodes.7000.conf


7.使用redis-trib.rb脚本配置集群,本例配置为3主3从模式


首先看命令:


执行命令后,会为集群配置master及对应的slave,最后你只需要在确认时输入yes即可,接着为3个master分配16384个hash slot:


master 7000对应的slot为:0-5460,master 7001对应的slot: 5461-10922,master 7002的slot范围:10923-16383,此时,16384个slot全部分配完毕。

8.同时将分配的信息更新到了nodes.7000.conf文件中,其他节点也会同步,如下:


其他节点信息也被更新到nodes.7000.conf文件中

9.测试

>redis-cli -c -p 7000
127.0.0.1:7000> set foo bar
-> Redirected to slot [12182] located at 127.0.0.1:7002
OK
127.0.0.1:7002> get foo 
"bar"

可以看到redis将key foo经过CRC16(foo)对16384取模,定位到7002的slot上,并将值bar写入到7002的机器,返回client处理结果后,然后将命令同步到7005的从节点上。取值直接从7002执行命令。

10.故障模拟

此时kill掉7002的服务,观察集群的变化,此时执行命令 get foo

127.0.0.1:7000> get foo
-> Redirected to slot [12182] located at 127.0.0.1:7005
"bar"

看到,集群将自动跳转到7005取值了,那么7005是slave还是master呢?


nodes.7000.conf

从上面的配置信息中看到,7005成功晋升为master节点。


10.重启7002节点,看nodes.7000.conf配置信息的变化


7002重启后成为7005的子节点


此时一个简单的redis cluster 集群就搭建和部署OK了。

扩展:除了nodes.xxx.conf看cluster的集群配置信息,也可以通过cluster nodes查看。


下一篇文章将接着介绍Cluster模式下节点的动态扩展。

相关推荐

Dubai's AI Boom Lures Global Tech as Emirate Reinvents Itself as Middle East's Silicon Gateway

AI-generatedimageAsianFin--Dubaiisrapidlytransformingitselffromadesertoilhubintoaglob...

OpenAI Releases o3-pro, Cuts o3 Prices by 80% as Deal with Google Cloud Reported to Make for Compute Needs

TMTPOST--OpenAIisescalatingthepricewarinlargelanguagemodel(LLM)whileseekingpartnershi...

黄仁勋说AI Agent才是未来!但究竟有些啥影响?

,抓住风口(iOS用户请用电脑端打开小程序)本期要点:详解2025年大热点你好,我是王煜全,这里是王煜全要闻评论。最近,有个词被各个科技大佬反复提及——AIAgent,智能体。黄仁勋在CES展的发布...

商城微服务项目组件搭建(五)——Kafka、Tomcat等安装部署

1、本文属于mini商城系列文档的第0章,由于篇幅原因,这篇文章拆成了6部分,本文属于第5部分2、mini商城项目详细文档及代码见CSDN:https://blog.csdn.net/Eclipse_...

Python+Appium环境搭建与自动化教程

以下是保姆级教程,手把手教你搭建Python+Appium环境并实现简单的APP自动化测试:一、环境搭建(Windows系统)1.安装Python访问Python官网下载最新版(建议...

零配置入门:用VSCode写Java代码的正确姿

一、环境准备:安装JDK,让电脑“听懂”Java目标:安装Java开发工具包(JDK),配置环境变量下载JDKJava程序需要JDK(JavaDevelopmentKit)才能运行和编译。以下是两...

Mycat的搭建以及配置与启动(mycat2)

1、首先开启服务器相关端口firewall-cmd--permanent--add-port=9066/tcpfirewall-cmd--permanent--add-port=80...

kubernetes 部署mysql应用(k8s mysql部署)

这边仅用于测试环境,一般生产环境mysql不建议使用容器部署。这里假设安装mysql版本为mysql8.0.33一、创建MySQL配置(ConfigMap)#mysql-config.yaml...

Spring Data Jpa 介绍和详细入门案例搭建

1.SpringDataJPA的概念在介绍SpringDataJPA的时候,我们首先认识下Hibernate。Hibernate是数据访问解决技术的绝对霸主,使用O/R映射(Object-Re...

量子点格棋上线!“天衍”邀您执子入局

你是否能在策略上战胜量子智能?这不仅是一场博弈更是一次量子智力的较量——量子点格棋正式上线!试试你能否赢下这场量子智局!游戏玩法详解一笔一画间的策略博弈游戏目标:封闭格子、争夺领地点格棋的基本目标是利...

美国将与阿联酋合作建立海外最大的人工智能数据中心

当地时间5月15日,美国白宫宣布与阿联酋合作建立人工智能数据中心园区,据称这是美国以外最大的人工智能园区。阿布扎比政府支持的阿联酋公司G42及多家美国公司将在阿布扎比合作建造容量为5GW的数据中心,占...

盘后股价大涨近8%!甲骨文的业绩及指引超预期?

近期,美股的AI概念股迎来了一波上升行情,微软(MSFT.US)频创新高,英伟达(NVDA.US)、台积电(TSM.US)、博通(AVGO.US)、甲骨文(ORCL.US)等多股亦出现显著上涨。而从基...

甲骨文预计新财年云基础设施营收将涨超70%,盘后一度涨8% | 财报见闻

甲骨文(Oracle)周三盘后公布财报显示,该公司第四财季业绩超预期,虽然云基建略微逊于预期,但管理层预计2026财年云基础设施营收预计将增长超过70%,同时资本支出继上年猛增三倍后,新财年将继续增至...

Springboot数据访问(整合MongoDB)

SpringBoot整合MongoDB基本概念MongoDB与我们之前熟知的关系型数据库(MySQL、Oracle)不同,MongoDB是一个文档数据库,它具有所需的可伸缩性和灵活性,以及所需的查询和...

Linux环境下,Jmeter压力测试的搭建及报错解决方法

概述  Jmeter最早是为了测试Tomcat的前身JServ的执行效率而诞生的。到目前为止,它的最新版本是5.3,其测试能力也不再仅仅只局限于对于Web服务器的测试,而是涵盖了数据库、JM...

取消回复欢迎 发表评论: