首页 游戏 软件 资讯 排行榜 专题
首页
数据库
Redis Cluster部署实践

Redis Cluster部署实践

热心网友
88
转载
2026-04-29

一、我们要做什么?

今天的目标很明确:在一台服务器(IP地址是192.168.166.9)上,手动搭建一个3主3从的Redis集群。这意味着我们需要启动6个Redis实例

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

  • 3个主节点(Master):端口号分别是6379、6381、6383。
  • 3个从节点(Sla ve):端口号分别是6380、6382、6384。

听起来有点复杂?别担心,跟着步骤走,其实就像搭积木一样清晰。

二、准备工作(傻瓜式操作)

1. 先搞一个模板配置文件

万事开头难,但第一步很简单。我们以系统默认的Redis配置文件为基础,创建一个模板:

  • /etc/redis.conf复制一份,命名为/etc/redis/6379.conf
  • 这个文件已经包含了端口、日志路径、数据目录等基础参数,是我们后续批量操作的基础。

2. 一键生成6个配置文件

有了模板,剩下的就是复制粘贴。一条命令就能搞定:

for i in {6380..6384}; do cp 6379.conf $i.conf; done

看,是不是瞬间就生成了从6380到6384的5个配置文件,加上原来的6379,正好6个。

3. 批量改配置(用循环搞定)

每个实例的配置不能完全一样,尤其是端口和文件路径。我们可以用一个简单的循环,批量修改每个配置文件中的关键项。下面这张表清晰地列出了需要修改的地方:

配置项 改成什么
端口 6379 → 6380、6381…
数据目录 /var/lib/redis/6379 → 各自端口
日志文件 /var/log/redis/6379.log → 各自端口
PID 文件 /var/run/redis/6379.pid → 各自端口
保护模式 yes → no
后台运行 no → yes
监听地址 127.0.0.1 → 192.168.166.9

这里有几个关键点:关闭保护模式绑定真实IP是为了让节点间能够互相通信,这是集群组建的前提。

4. 加上集群配置(每个配置文件末尾追加)

要让Redis实例以集群模式运行,还需要在每个配置文件的末尾加上这三行核心配置:

cluster-enabled yes
cluster-config-file nodes-端口.conf
cluster-node-timeout 15000

这三行的作用分别是:开启集群模式、指定集群节点配置的存储文件、设置节点间心跳超时时间为15秒。超时后,集群会认为该节点可能故障了。

三、启动所有实例

配置妥当,是时候让它们跑起来了。同样,一条命令启动所有6个实例:

for i in {6379..6384}; do redis-server /etc/redis/$i.conf; done

检查一下进程,如果能看到6个`redis-server`在运行,那么恭喜,第一步的“单兵作战”已经完成。

四、组成集群(手动搓)

现在我们有6个独立的Redis服务,但它们彼此还不认识。接下来,我们要把它们组织成一个真正的集群。

1. 让所有节点互相认识

我们需要让其中一个节点作为“介绍人”,去认识其他所有节点。这里选择6379端口这个实例:

for i in {6380..6384}; do redis-cli -h 192.168.166.9 -p 6379 cluster meet 192.168.166.9 $i; done

执行完这条命令,这6个节点就建立起了联系,知道了彼此的存在。但此时,它们还不知道各自在集群里该干什么。

2. 分配槽位(16384个槽,平均分给3个Master)

这是Redis Cluster的核心设计。整个集群有16384个哈希槽(slot),所有数据都通过key的CRC16校验和对16384取模,映射到某个槽上。现在,我们需要把这16384个“货架”平均分配给3个主节点来管理。

节点 槽位范围 槽数量
6379 0 ~ 5461 5462
6381 5462 ~ 10922 5461
6383 10923 ~ 16383 5461

分配命令如下:

redis-cli -h 192.168.166.9 -p 6379 cluster addslots {0..5461}
redis-cli -h 192.168.166.9 -p 6381 cluster addslots {5462..10922}
redis-cli -h 192.168.166.9 -p 6383 cluster addslots {10923..16383}

切记:必须分配完所有16384个槽,集群才能进入可用状态。

3. 建立主从关系(谁是谁的备胎)

光有主节点还不够,我们需要为每个主节点配一个从节点,以实现高可用。首先,需要获取每个主节点的唯一ID:

redis-cli -h 192.168.166.9 -p 6379 cluster nodes

在输出的信息中找到端口为6379、6381、6383的节点,记下它们长长的ID。然后,执行复制命令:

# 让6380成为6379的从节点
redis-cli -h 192.168.166.9 -p 6380 cluster replicate <6379的ID>
# 让6382成为6381的从节点
redis-cli -h 192.168.166.9 -p 6382 cluster replicate <6381的ID>
# 让6384成为6383的从节点
redis-cli -h 192.168.166.9 -p 6384 cluster replicate <6383的ID>

至此,一个3主3从的Redis集群就手动搭建完成了。

五、验证集群

搭建完了,怎么知道成不成功?用这两个命令检查一下:

redis-cli -h 192.168.166.9 -p 6379 cluster nodes
redis-cli -h 192.168.166.9 -p 6379 cluster info

第一条命令会列出所有节点的详细信息,包括角色(master/sla ve)、状态和负责的槽位范围。第二条命令则展示集群的整体状态,确保`cluster_state`是`ok`。如果一切正常,那么你的集群就已经在健康运行了。

六、故障恢复(自动的)

Redis Cluster最大的魅力之一就是自动故障转移。我们来模拟一下:

模拟故障

kill -9 <某个master的进程ID>

自动发生的事

  • 集群会检测到该主节点失联。
  • 经过选举,该主节点对应的从节点会自动晋升为新的主节点。
  • 集群继续对外提供服务,整个过程对客户端几乎透明。

恢复后

  • 当那个宕机的主节点重新启动后,它会发现自己原来的“位置”已经被从节点接替了。
  • 于是,它会自动以从节点(Sla ve)的身份重新加入集群,成为新主节点的副本。
  • 整个过程无需人工干预,非常智能。

七、常用命令速查表(大白话版)

为了方便后续管理和排查,这里整理了一份集群常用命令指南:

命令 大白话解释
cluster meet IP 端口 把某个节点拉进群
cluster nodes 看看群里都有谁,谁是什么角色
cluster addslots 槽位 把一批槽分给当前节点
cluster replicate 节点ID 让当前节点给指定节点当备胎
cluster info 看看集群整体状态好不好
cluster failover 手动让备胎上位(强制切换)
cluster keyslot key 看这个 key 属于哪个槽
cluster forget 节点ID 把某个节点踢出群

八、核心注意点(避坑指南)

手动搭建集群虽然灵活,但细节决定成败。下面这些坑,前人已经踩过了:

解决办法
启动 Redis 不用绝对路径 必须用绝对路径,否则 nodes.conf 会乱
保护模式没关 必须设置 protected-mode no
监听 127.0.0.1 改成真实 IP,否则其他节点连不上
槽位没分完 16384 个槽必须全部分配,集群才能用
主节点没有从节点 每个 Master 最好配一个 Sla ve,否则挂了就丢数据

九、总结一句话

手动搭建Redis Cluster的流程可以高度概括为:准备6份配置 → 启动所有实例 → 节点互相发现 → 分配哈希槽 → 建立主从关系。最终,你得到的是一个具备数据分片自动故障转移能力的高可用3主3从集群。

这个过程虽然比用`redis-cli --cluster create`一键创建要繁琐,但对于理解Redis Cluster的底层机制非常有帮助。希望这份手把手的指南能为你提供清晰的参考。

您可能感兴趣的文章:
  • docker实现redis-cluster模式集群部署的示例代码
  • Docker-compose部署redis-cluster集群的完整步骤
  • 基于Redis6.2.6版本部署Redis Cluster集群的问题
  • k8s部署redis cluster集群的实现
  • 使用Ruby脚本部署Redis Cluster集群步骤讲解
  • 如何用docker部署redis cluster的方法
来源:https://www.jb51.net/database/362229k8p.htm
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

Redis Cluster部署实践
数据库
Redis Cluster部署实践

一、我们要做什么? 今天的目标很明确:在一台服务器(IP地址是192 168 166 9)上,手动搭建一个3主3从的Redis集群。这意味着我们需要启动6个Redis实例: 3个主节点(Master):端口号分别是6379、6381、6383。 3个从节点(Sla ve):端口号分别是6380、63

热心网友
04.29
Redis如何批量删除特定前缀的Key_使用Lua脚本避免阻塞主线程
数据库
Redis如何批量删除特定前缀的Key_使用Lua脚本避免阻塞主线程

生产环境禁用 KEYS+DEL,因其会阻塞 Redis 主线程;应使用带游标和分批的 SCAN+DEL Lua 脚本或 Ja va 中通过 RedisConnection 执行 SCAN 迭代删除,避免连接泄漏。 直接使用 KEYS 配合 DEL 来批量删除特定前缀的 Key,听起来很直接,对吧?但

热心网友
04.29
Redis为什么会出现内存泄漏的假象_排查Lua脚本中未设置过期的临时变量
数据库
Redis为什么会出现内存泄漏的假象_排查Lua脚本中未设置过期的临时变量

Redis为什么会出现内存泄漏的假象?排查Lua脚本中未设置过期的临时变量 Redis内存持续上涨可能源于Lua脚本中未设置过期时间的临时键,如set、hset、zadd写入后遗漏expire,导致“孤儿键”累积;需用redis-cli --scan结合object freq和ttl定位,并按业务语

热心网友
04.29
Redis如何实现基于发布订阅的配置热更新_发布配置变更通知触发服务重载
数据库
Redis如何实现基于发布订阅的配置热更新_发布配置变更通知触发服务重载

Redis如何实现基于发布订阅的配置热更新 Redis Pub Sub 能否可靠用于配置热更新? 直接拿来用?恐怕不行。Redis 的 PUBLISH SUBSCRIBE 本质上是一种“即发即弃”的模型:消息不持久、没有确认机制、订阅者离线期间的消息会彻底丢失。想象一下,你的服务因为重启或者网络短暂

热心网友
04.29
Redis主从复制全量同步导致主库负载高_配置repl-diskless-sync-delay分批同步
数据库
Redis主从复制全量同步导致主库负载高_配置repl-diskless-sync-delay分批同步

理解 repl-diskless-sync-delay:它并非“分批同步”的开关 先明确一个核心概念:repl-diskless-sync-delay 这个参数,其设计初衷并非为了实现“分批同步”。它的真实作用,是在主库开启了无磁盘同步(即配置了 repl-diskless-sync yes)后,控

热心网友
04.29

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

《识质存在》中后期BD构筑攻略-中后期配装与战斗策略解析
游戏攻略
《识质存在》中后期BD构筑攻略-中后期配装与战斗策略解析

《识质存在》中后期配装与打法全解析:从生存到精通 进入《识质存在》的中后期,战场环境陡然严峻。敌人的伤害与生存压力同步攀升,单纯的武器升级已不足以应对挑战。真正的战力构建,是一个系统工程,它涵盖了武器、道具、模块天赋与侵入节点的协同搭配。如果你正为如何配装而困惑,下面的攻略或许能为你指明方向。 一、

热心网友
04.29
《黑袍纠察队》主演谈阿什莉隐藏的勇敢:“她必须管教这群‘孩子’”
游戏攻略
《黑袍纠察队》主演谈阿什莉隐藏的勇敢:“她必须管教这群‘孩子’”

《黑袍纠察队》主演揭秘阿什莉隐藏的勇敢!她如何从傀儡CEO到副总统,注射五号化合物长出第二张脸,在祖国人阴影下求生。第五季剧情解析,点击查看! 在埃里克·克里普克打造的《黑袍纠察队》宇宙里,科尔比·米尼菲饰演的阿什莉·巴雷特,绝对算得上最让人过目不忘的角色之一。尽管她在沃特国际的企业和整治阶梯上步步

热心网友
04.29
一路向西斩妖除魔 《遥遥西土》Steam好评如潮
游戏攻略
一路向西斩妖除魔 《遥遥西土》Steam好评如潮

一路向西斩妖除魔 《遥遥西土》Steam好评如潮 最近Steam上杀出了一匹黑马:由法国独立工作室Evil Raptor开发的4人合作射击游戏《遥遥西土(Far Far West)》,一登陆抢先体验就收获了玩家“好评如潮”的顶级评价。看看数据就知道有多夸张:在超过2700条玩家评价中,好评率稳稳站在

热心网友
04.29
Midnight Season 1 中最快、最简单的地牢挑战
游戏攻略
Midnight Season 1 中最快、最简单的地牢挑战

探索Midnight Season 1最快地城排名:S-Tier Collegiate Calamity等攻略,优化刷本效率,提升装备和进度 开门见山地说,在《Midnight》第一赛季里,并非所有地城(Delves)的“性价比”都一样。有的流程紧凑,一路畅通无阻;有的则弯弯绕绕,耗时费力。为了帮你

热心网友
04.29
SpringBoot2.7.x将logback升级到1.3.x以上版本的全过程解析
编程语言
SpringBoot2.7.x将logback升级到1.3.x以上版本的全过程解析

SpringBoot2 7 x将logback升级到1 3 x以上版本的全过程解析 不少开发者在尝试将SpringBoot 2 7 x项目中的Logback升级到1 3 x或更高版本时,都会遇到一个典型的启动报错。这背后的原因其实很明确:SpringBoot 2 7 x默认依赖的是logback-c

热心网友
04.29