Redis三主六从配置实操分享,红色之火点燃高可用集群搭建思路
- 问答
- 2026-01-13 17:37:51
- 4
(引用来源:某技术社区用户“码农老张”的博客文章《记一次生产环境Redis三主六从集群搭建踩坑实录》)
上次我们项目要搞一个能抗高并发、还不能随便宕机的系统,数据库那边压力山大,老大就说把Redis搞成集群,要高可用,我之前就搭过主从,这次直接上三主六从,听着就头大,网上找了好多资料,最后参考了“码农老张”写的一篇实操博客,边看边做,总算搞定了,这里就把整个过程和关键点分享一下,纯手打,都是实战出来的。
(引用来源:Redis官方文档关于Cluster模式的介绍)
首先为啥要三主六从?Redis自己有个Cluster模式,官方推荐的,简单说,就是数据分片,三个主节点,每个主节点扛一部分数据,这样数据量大了也不怕,然后每个主节点再配两个从节点,相当于给每个主节点找了两个备份,这样一个主节点挂了,它的从节点就能顶上去当新的主节点,服务基本不受影响,这就是高可用了,听起来很美,但实际配起来坑不少。

第一步是准备机器,我们用了九台虚拟机,为啥是九台?因为三主六从,正好九个节点,每台机器上装好Redis,这个没啥好说的,版本别太老就行,关键是配置文件,这里踩了第一个坑。
(引用来源:“码农老张”博客中强调的配置文件修改项)
按照“码农老张”说的,不能再用普通的redis.conf了,得为集群专门配置,有几个地方必须改:

port:这个不用说,每台机器端口得不一样,我们是从7001到7009。daemonize yes:让Redis在后台跑。pidfile:指定pid文件路径,不然可能找不到进程。logfile:指定日志文件,出问题了全靠它。dir:指定数据持久化文件的目录,找个空间大的地方。- 最关键的:
cluster-enabled yes,这一行必须打开,不然就是普通Redis实例,根本不参与集群。 cluster-config-file nodes-6379.conf:这个文件是集群自动生成的,记录集群状态,不用我们管,但名字要区分开,我们用nodes-端口号.conf。cluster-node-timeout 15000:节点失联超时时间,超过这个时间认为它挂了,默认15秒,我们没动。appendonly yes:开启AOF持久化,更安全,这个“码农老张”特别强调,生产环境建议开。
配好九个文件,然后一台台启动Redis服务,启动完用ps -ef | grep redis看看进程在不在,这时候它们还是九个独立的节点,谁也不认识谁。
第二步,让这九个节点互相认识,组成集群,这是最核心的一步,官方提供了个工具叫redis-cli --cluster create,一开始我傻乎乎地想手动一个个加节点,看了官方文档和“码农老张”的博客才知道有这个自动化工具。
命令长这样:
redis-cli --cluster create 192.168.1.101:7001 192.168.1.102:7002 192.168.1.103:7003 192.168.1.104:7004 192.168.1.105:7005 192.168.1.106:7006 192.168.1.107:7007 192.168.1.108:7008 192.168.1.109:7009 --cluster-replicas 2

这里解释一下,--cluster-replicas 2的意思就是每个主节点配2个从节点,工具会自动把前三个节点(7001,7002,7003)设为主节点,然后根据规则把后面的节点分配为它们的从节点,执行这个命令后,它会给你展示一个规划图,问你是不是同意,输入yes就行了。
这里有个大坑,也是“码农老张”博客里重点提醒的:防火墙!九台机器之间的端口必须能互通,不仅是Redis的客户端端口(7001-7009),还有一个叫集群总线端口的东西,默认是客户端端口加10000,比如7001的集群总线端口就是17001,必须保证所有机器的客户端端口和集群总线端口都能互相访问,不然集群会创建失败,或者节点之间认为对方失联,我们就是在这里卡了好久,最后把防火墙暂时关了测试才通的。
第三步,验证集群,创建成功后,用redis-cli -c -p 7001(-c表示以集群模式连接)连上任意一个节点,然后跑个命令试试,比如set hello world,你可能会发现它自动跳转到了另一个节点(比如7002)去存这个key,这说明数据分片生效了,再用cluster info看看集群状态,cluster_state应该是ok,cluster_slots_assigned应该是16384(总槽位数)。cluster nodes命令能看到所有九个节点的详细信息,哪个是主,哪个是从,一清二楚。
最后一步,测试高可用,这是最刺激的,我们随便找了一个主节点,比如7001,直接用kill -9把它的进程干掉,然后立刻去观察日志,或者用cluster nodes命令看,过一会儿(大概十几秒),你会发现原来7001的一个从节点(比如7004)的身份变成了master,而其他节点也更新了这个信息,这时候再读写原本属于7001的那个数据分片,会发现请求被自动导到了新的主节点7004上,服务只是短暂抖动了一下,没有长时间不可用,然后把7001重新启动,它会自动以从节点的身份重新加入集群,成为新主节点7004的从节点,这个过程基本是自动的,非常神奇。
搭这个三主六从集群,核心就是:配置文件别配错、防火墙端口要放开、用好官方创建工具、最后一定要做故障演练,虽然过程有点曲折,但看到集群能自动恢复的那一刻,感觉之前折腾的都值了,这把“红色之火”总算是在我们系统里烧起来了,心里踏实不少。
本文由帖慧艳于2026-01-13发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://www.haoid.cn/wenda/80061.html
