在 CentOS 7 上创建 Redis 三主三从集群,推荐使用 Redis 5.0 及以上版本,直接使用 redis-cli 工具的 `--cluster` create 命令即可完成节点分配。该方案支持单机伪集群或多机真实集群,但生产环境建议至少使用 3 台物理机或虚拟机以保证高可用。
先说结论:CentOS 7 环境搭建 Redis 三主三从集群,核心是使用 redis-cli `--cluster` create 命令配合 6 个实例节点。
- 适合:Redis 5.0+ 版本,CentOS 7 系统,需要高可用缓存场景
- 先准备:6 个 Redis 实例端口,关闭防火墙或放行端口,配置 cluster-enabled yes
- 验收:使用 redis-cli `--cluster` check 命令验证 slots 分配和节点状态
命令速用版
以下是创建集群的核心命令,假设 6 个节点 IP 和端口已就绪,在一台机器上执行即可:
redis-cli `--cluster` create 192.168.1.10:7000 192.168.1.10:7001 192.168.1.10:7002 192.168.1.11:7000 192.168.1.11:7001 192.168.1.11:7002 `--cluster-replicas` 1
命令执行后会显示主从分配方案,输入 yes 确认创建。如果是单机伪集群,IP 全部替换为本机 IP 或 127.0.0.1,端口区分即可。
为什么会这样
Redis Cluster 通过哈希槽(hash slots)机制实现数据分片,16384 个槽位平均分配给主节点。
三主三从架构中,3 个主节点分别负责约 5461 个槽位,3 个从节点分别复制对应主节点的数据。当主节点宕机时,从节点会晋升为主节点,保证服务不中断。redis-cli 工具在 5.0 版本后内置了集群管理功能,替代了旧版本的 redis-trib.rb 脚本,简化了搭建流程。
分步处理
1. 安装依赖与 Redis
在 CentOS 7 上安装 gcc 编译环境和 wget,下载 Redis 源码编译安装。推荐版本 5.0.8 或 6.2.6 等稳定版。
yum install -y gcc gcc-c++ make tcl wget wget http://download.redis.io/releases/redis-6.2.6.tar.gz tar -zxvf redis-6.2.6.tar.gz cd redis-6.2.6 make && make install
2. 准备实例目录与配置文件
为 6 个节点创建独立目录,拷贝 redis.conf 并修改关键配置。每个节点需修改端口、pidfile 和集群配置文件名。
mkdir -p /usr/local/redis-cluster/{7000..7005}
cp redis.conf /usr/local/redis-cluster/7000/
# 修改 7000/redis.conf 关键项:
port 7000
daemonize yes
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly yes
bind 0.0.0.0
protected-mode no3. 启动所有节点
依次启动 6 个 Redis 实例,确保进程正常运行。
redis-server /usr/local/redis-cluster/7000/redis.conf # 重复执行至 7005
4. 创建集群
使用 redis-cli 连接任意一个节点发起集群创建命令,指定 `--cluster-replicas` 1 表示每个主节点配一个从节点。
怎么验证是否生效
集群创建完成后,使用 check 命令检查集群状态,确认所有槽位已分配且节点角色正确。
redis-cli `--cluster` check 192.168.1.10:7000
输出中应显示 cluster_state:ok,且 3 个 master 节点覆盖 0-16383 所有槽位,3 个 slave 节点状态为 connected。也可以登录任意节点执行 cluster info 查看集群状态。
常见坑
1. 防火墙拦截
CentOS 7 默认开启 firewalld,需放行 Redis 端口及集群总线端口(端口号 +10000)。未放行会导致节点间无法通信,集群状态无法变为 ok。
2. 绑定地址错误
配置文件 bind 不能只写 127.0.0.1,否则其他机器无法连接。生产环境建议绑定具体内网 IP,测试环境可绑 0.0.0.0 并配合 protected-mode no。
3. 版本命令差异
Redis 3.x 版本需使用 ruby 脚本 redis-trib.rb 创建集群,5.0+ 版本才支持 redis-cli `--cluster` 命令。使用前请确认 redis-cli 版本。
常见问题
单机可以搭建三主三从吗?
可以,通过不同端口启动 6 个实例实现伪集群,但无法提供机器故障的高可用性。
集群创建失败怎么办?
检查节点间网络是否互通,配置文件 cluster-enabled 是否开启,以及防火墙是否放行端口。
数据持久化需要开启吗?
建议开启 appendonly yes,防止节点重启后数据丢失,集群模式下 RDB 和 AOF 均可配置。
参考来源
- 博客园 - centos7 搭建 Redis 的三主三从集群模式
- 博客园 - CentOS 7 单机安装 Redis Cluster(3 主 3 从)
- 博客园 - centos7 搭建三主三从 redis5.0 集群
- 博客园 - 三主三从 Redis 集群 cluster 搭建