慢慢来,教你怎么一步步搭好那个靠谱的Redis集群环境,别急着跳过细节
- 问答
- 2026-01-07 01:49:46
- 9
整理自知乎用户“木子聊技术”的分享、Redis官方文档的入门指南部分以及《Redis开发与运维》一书中的实操章节,结合了常见的搭建经验)
第一步:先别急着装软件,想清楚你要什么样的集群
很多人一上来就敲安装命令,结果后面一堆麻烦,你先得知道,Redis集群主要有两种主流模式:
- 主从复制(Master-Slave):这个更像“备份”,一个主节点(Master)负责写数据,一个或多个从节点(Slave)复制主节点的数据,主要负责读,如果主节点挂了,需要手动把从节点升级成主节点,中间服务会中断,它简单,但不能自动故障恢复。
- Redis Cluster(官方集群):这是真正的“集群”,数据会被分片(可以理解为把数据切成很多小块)存储在多个主节点上,每个主节点还可以有从节点,它的最大好处是高可用和自动故障转移——意思是任何一个主节点挂了,它的从节点会自动顶上,服务基本不受影响。
如果你的目的是搭建一个高可用的、能抗故障的生产环境,那我们的目标就是搭建Redis Cluster。 别被“Cluster”这个词吓到,我们一步步来。
第二步:准备一台“干净”的服务器
别在你的Windows电脑上折腾,生产环境都是用Linux的,你可以先找一台虚拟机(比如用VirtualBox装的CentOS 7)来练习,确保这台机器能联网,因为需要下载软件。
关键一步:关闭防火墙或者放行端口。 这是最容易卡住新手的坑!Redis集群节点之间需要通信,默认端口是6379,但集群总线端口还需要在6379的基础上加10000(即16379),最简单直接的方法是暂时关闭防火墙练手:
systemctl stop firewalld # 临时关闭防火墙(CentOS 7) systemctl disable firewalld # 永久关闭(练习环境可选)
如果公司服务器不让关防火墙,那你就需要把每个节点服务器的6379和16379端口都打开,命令是 firewall-cmd 开头的,这个你去搜一下具体用法。
第三步:安装Redis,但别用最简单的yum install
用 yum install redis 装虽然快,但版本可能很旧,我们最好自己编译安装新版本的Redis。
-
安装依赖包:Redis是C写的,需要编译环境。
yum install -y gcc-c++ autoconf automake
-
下载并解压源码:去Redis官网(redis.io)找最新的稳定版下载链接,比如当时是6.2.6。
wget https://download.redis.io/releases/redis-6.2.6.tar.gz tar xzf redis-6.2.6.tar.gz cd redis-6.2.6
-
编译和安装:
make # 编译,等一会儿 make install PREFIX=/usr/local/redis # 指定安装目录,方便管理
-
把可执行文件放到系统路径:
ln -s /usr/local/redis/bin/* /usr/local/bin/ # 创建软链接
现在你无论在哪个目录,输入
redis-server和redis-cli命令都能用了。
第四步:为集群准备多个实例,而不是一个
一台服务器也可以模拟集群,我们用不同的端口号来区分不同的Redis实例,假设我们模拟一个最小的集群:3个主节点(Master),每个主节点配1个从节点(Slave),一共6个实例。
-
创建集群专用目录:
mkdir -p /opt/redis_cluster cd /opt/redis_cluster
-
为每个实例创建独立的文件夹和配置文件:我们创建6个文件夹,分别叫7001到7006,代表6个不同的端口。
mkdir 7001 7002 7003 7004 7005 7006
-
编写一个通用的配置文件模板:进入7001目录,创建一个
redis.conf文件,内容核心如下:port 7001 # 端口号,每个实例要改 daemonize yes # 后台运行 pidfile /var/run/redis_7001.pid # PID文件,端口号也要改 logfile "/opt/redis_cluster/7001/redis.log" # 日志文件路径 dir /opt/redis_cluster/7001/ # 数据文件存放路径 cluster-enabled yes # 最关键的一行:开启集群模式 cluster-config-file nodes-7001.conf # 集群生成的配置文件,每个实例不同 cluster-node-timeout 15000 # 节点超时时间 appendonly yes # 开启持久化注意:上面所有带“7001”的地方,在复制到7002文件夹时,都要相应地改成7002,以此类推,这个步骤有点枯燥,但必须仔细,你可以写个简单脚本批量替换,但手动做一遍印象更深。
第五步:逐个启动所有实例,检查是否成功
-
启动:分别进入6个目录,用配置文件启动Redis服务。
cd /opt/redis_cluster/7001 redis-server redis.conf
对7002到7006重复这个操作。
-
检查:用
ps -ef | grep redis命令,你应该能看到6个redis-server进程在运行,分别监听7001到7006端口,再用netstat -tlnp | grep redis看看端口是否都正常监听了。如果哪个节点没起来,第一时间去查看对应目录下的
redis.log日志文件,里面会明确告诉你错在哪里(比如端口被占用、配置文件写错等)。
第六步:让散装的6个实例“握手”组成真正的集群
现在6个实例还是孤立的,你需要用Redis官方提供的工具 redis-cli 把它们串联起来。
执行下面这个命令(一行,很长):
redis-cli --cluster create \ 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 \ 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 \ --cluster-replicas 1
解释一下:
--cluster create:告诉工具我们要创建集群。- 后面跟了6个节点的地址。
--cluster-replicas 1:这个参数是关键,意思是每个主节点配1个从节点,所以工具会自动从前3个节点(7001,7002,7003)中选为主节点,后3个(7004,7005,7006)分别作为它们的从节点。
命令执行后,工具会给你显示一个它规划好的“主从分配方案”,问你“Is this configuration ok?”,你仔细看一下,比如确认是不是7004是7001的从节点,等等,确认无误后,输入 yes 并回车。
第七步:验收成果,试试你的集群牛不牛
-
连接测试:用集群模式连接任意一个节点(参数
-c代表集群模式)。redis-cli -c -p 7001
-
写入数据:在命令行里设置几个键值对,
0.0.1:7001> set name "慢慢来" -> Redirected to slot [5798] located at 127.0.0.1:7002 OK注意看,你虽然连的是7001,但当你设置
name这个key时,Redis根据计算发现这个key应该存放在7002节点管理的“数据片”(slot)上,于是自动给你“重定向”到了7002节点,并成功写入,这就是集群的数据分片在起作用! -
读取数据:你再
get name,无论你连的是7001还是7003,它都能正确找到并返回值。 -
模拟故障(这是最激动人心的):你可以用
ps -ef | grep redis找到7002这个主节点的进程ID(PID),然后用kill -9 [PID]命令强行杀掉它,等待十几秒后,你再执行redis-cli -c -p 7001 cluster nodes命令查看节点状态,你会神奇地发现,原来7002的从节点(比如是7005)已经自动升级为了新的主节点(Master)!整个集群依然可以正常读写数据,这就实现了高可用。
走到这一步,恭喜你,一个真正意义上“靠谱”的Redis集群环境就亲手搭起来了!这比光看理论要踏实得多,后面你再慢慢去研究更深入的配置、监控和优化。

本文由度秀梅于2026-01-07发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://www.haoid.cn/wenda/75917.html
