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

📅 2026/7/24 10:49:48 👁️ 阅读次数 📝 编程学习
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。