如何在 CentOS 7 上使用 redis-cli 创建三主三从集群

文章导读
在 CentOS 7 上创建 Redis 三主三从集群,推荐使用 Redis 5.0 及以上版本,直接使用 redis-cli 工具的 `--cluster` create 命令即可完成节点分配。该方案支持单机伪集群或多机真实集群,但生产环境建议至少使用 3 台物理机或虚拟机以保证高可用。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

在 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. 准备实例目录与配置文件

如何在 CentOS 7 上使用 redis-cli 创建三主三从集群

为 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 no

3. 启动所有节点

依次启动 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 上使用 redis-cli 创建三主三从集群

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 搭建