CentOS7.9:Redis‑Cluster集群部署结构化实战教程

一、项目概述

1.1 业务场景说明

Redis‑Cluster 集群采用分片机制,一共有 16384 个哈希槽,数据按照 key‑CRC16 算法分配至各个主节点;官方集群架构标准配置为 3 主 3 从,3 台主节点分担数据存储,每个主节点搭配一台从节点实现数据备份;主节点故障时,从节点自动升级为主节点,实现故障转移,支撑高并发业务。Redis‑Cluster 无中心模式,客户端可直连任意节点。

1.2 环境参数

|-------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 项目 | 参数 |
| 操作系统 | CentOS Linux release 7.9‑2009 |
| Redis 版本 | redis‑5.0.10 |
| 集群节点(同一服务器) | 192.168.1.10:7001(192.168.1.10:7001)、192.168.1.10:7002(192.168.1.10:7002)、192.168.1.10:7003(192.168.1.10:7003) 192.168.1.10:7004(192.168.1.10:7004)、192.168.1.10:7005(192.168.1.10:7005)、192.168.1.10:7006(192.168.1.10:7006) |
| 哈希槽区间 | 0‑16383,一共 16384 个哈希槽 |
| 安全策略 | 关闭 firewalld、SELinux |
| 安装目录 | /usr/local/redis‑cluster |

二、前期环境准备

2.1 关闭安全策略

|----------------------------------------------------------------------------------------------------------------------------------------------|
| shell systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config |

2.2 编译安装 Redis 基础程序

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| shell yum install -y gcc gcc-c++ make cd /usr/local/src wget https://download.redis.io/releases/redis-5.0.10.tar.gz tar -zxf redis-5.0.10.tar.gz cd redis-5.0.10 make MALLOC=libc make install PREFIX=/usr/local/redis-cluster |

2.3 创建 6 个节点目录,编写配置文件

以 7001 节点配置文件为模板,其余节点只修改端口号。

|---------------------------------------------------------------------------------------------------------------------|
| shell mkdir -p /usr/local/redis-cluster/{7001,7002,7003,7004,7005,7006} vi /usr/local/redis-cluster/7001/redis.conf |

配置文件内容:

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ini port 7001 bind 0.0.0.0 daemonize yes pidfile /var/run/redis-7001.pid logfile "redis.log" dbfilename dump.rdb dir /usr/local/redis-cluster/7001 #开启集群模式 cluster-enabled yes #集群内部配置文件,系统自动生成 cluster-config-file nodes-7001.conf #节点失联超时时间,毫秒 cluster-node-timeout 15000 requirepass Admin@123456 masterauth Admin@123456 |

批量复制配置文件并替换端口:

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| shell cp /usr/local/redis-cluster/7001/redis.conf /usr/local/redis-cluster/7002/ cp /usr/local/redis-cluster/7001/redis.conf /usr/local/redis-cluster/7003/ cp /usr/local/redis-cluster/7001/redis.conf /usr/local/redis-cluster/7004/ cp /usr/local/redis-cluster/7001/redis.conf /usr/local/redis-cluster/7005/ cp /usr/local/redis-cluster/7001/redis.conf /usr/local/redis-cluster/7006/ sed -i 's/7001/7002/' /usr/local/redis-cluster/7002/redis.conf sed -i 's/7001/7003/' /usr/local/redis-cluster/7003/redis.conf sed -i 's/7001/7004/' /usr/local/redis-cluster/7004/redis.conf sed -i 's/7001/7005/' /usr/local/redis-cluster/7005/redis.conf sed -i 's/7001/7006/' /usr/local/redis-cluster/7006/redis.conf |

2.4 启动全部 6 个 Redis 实例

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| shell /usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/7001/redis.conf /usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/7002/redis.conf /usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/7003/redis.conf /usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/7004/redis.conf /usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/7005/redis.conf /usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/7006/redis.conf ps -ef | grep redis |

三、创建 Redis‑Cluster 集群(Redis5.0 + 版本命令方式)

3.1 构建集群命令

--cluster‑replicas 1 参数代表每个主节点分配 1 个从节点,程序自动分配主从关系。

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| shell redis-cli -a Admin@123456 --cluster create \ 192.168.1.10:7001 192.168.1.10:7002 192.168.1.10:7003 \ 192.168.1.10:7004 192.168.1.10:7005 192.168.1.10:7006 \ --cluster-replicas 1 |

控制台提示 Can I set the above configuration?,输入 yes 确认创建集群。

四、集群查看命令

4.1 客户端连接集群,‑c 参数开启集群重定向跳转

|--------------------------------------------|
| shell redis-cli -c -p 7001 -a Admin@123456 |

4.2 集群内部查看指令(登录集群后执行)

|--------------------------------------------------------------------|
| redis #查看集群整体状态 cluster info #查看全部节点、主从角色、哈希槽分配、节点ID cluster nodes |

4.3 外部集群检查命令(服务器终端执行)

|------------------------------------------------------------------------------------------------------------------------------|
| shell redis-cli -a Admin@123456 --cluster check 192.168.1.10:7001 redis-cli -a Admin@123456 --cluster info 192.168.1.10:7001 |

五、集群日常运维(扩容、缩容)

5.1 扩容:添加新主节点 7007

  1. 部署 7007 实例;
  1. 加入集群;
  1. 手动迁移哈希槽,分配数据存储空间。

|------------------------------------------------------------------------------------------------------------------------------------------------------|
| shell redis-cli -a Admin@123456 --cluster add-node 192.168.1.10:7007 192.168.1.10:7001 redis-cli -a Admin@123456 --cluster reshard 192.168.1.10:7001 |

5.2 给已有主节点新增从节点 7008

|-------------------------------------------------------------------------------------------------------------------------------------|
| shell redis-cli -a Admin@123456 --cluster add-node 192.168.1.10:7008 192.168.1.10:7001 \ --cluster-slave --cluster-master-id 主节点ID |

5.3 缩容:删除集群节点

  1. 将待删除节点的哈希槽全部迁移至其他主节点;
  1. 执行节点删除命令。

|---------------------------------------------------------------------------|
| shell redis-cli -a Admin@123456 --cluster del-node 192.168.1.10:7001 节点ID |

六、故障转移测试流程

  1. 关闭一个主节点进程:kill -9 主进程PID;
  1. 集群等待超时后,该主节点对应的从节点自动升级为主节点;
  1. 原故障节点重新启动,自动变为新主节点的从节点;
  1. 使用cluster nodes核对角色切换状态。

七、ks.cfg 批量部署脚本(PXE 自动化装机)

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| shell %post yum install -y gcc gcc-c++ make cd /usr/local/src wget https://download.redis.io/releases/redis-5.0.10.tar.gz tar -zxf redis-5.0.10.tar.gz cd redis-5.0.10 make MALLOC=libc make install PREFIX=/usr/local/redis-cluster mkdir -p /usr/local/redis-cluster/{7001,7002,7003,7004,7005,7006} #省略配置文件生成与服务启动代码,部署节点环境 %end |

八、高频故障总结

故障 1:创建集群失败,节点之间无法通信

  • 原因:防火墙拦截端口,bind 绑定 127.0.0.1(127.0.0.1);
  • 解决:关闭防火墙,bind 参数改为 0.0.0.0(0.0.0.0)。

故障 2:执行指令提示 MOVED 报错

  • 原因:连接 Redis 没有添加‑c 集群参数;
  • 解决:redis-cli -c -p 端口登录集群。

故障 3:主节点宕机后,集群没有自动切换

  • 原因:cluster‑node‑timeout 超时时间设置过长;
  • 解决:缩短超时参数,重启 Redis 实例。

故障 4:reshard 哈希槽迁移失败

  • 原因:节点网络不通或者节点 ID 填写错误;
  • 解决:检查网络通信,核对节点 ID。
相关推荐
attitude.x2 小时前
Cursor+GitOps:自动化运维新姿势
运维·自动化
旺仔学长 哈哈2 小时前
Spring Boot 智能停车场管理系统---附源码+数据库文档
数据库·spring boot·后端·智能停车场
ClickHouseDB2 小时前
ClickHouse托管Postgres:OLTP+OLAP,新能力解锁最佳数据平台
java·前端·数据库
数智化管理手记3 小时前
主数据重复、错漏频发?一站式主数据管理平台如何落地?
大数据·运维·数据库·人工智能·数据挖掘
吴声子夜歌3 小时前
MongoDB 4.2——选择片键
数据库·mongodb
technology_x3 小时前
2026年财务报表分析软件测评:兼容与安全解析
java·服务器·前端
大鱼>3 小时前
eBPF内核编程:从TC到XDP的全栈可观测性
linux·服务器·php
sxstj3 小时前
老旧电脑 Linux 系统完整推荐(按内存分档,新手友好)
linux
Shell运维手记3 小时前
ARP 协议超详细讲解(适合网工考试 / 运维理解)
运维·网络·网络协议·智能路由器