一、项目概述
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) |
哈希槽区间 | 0‑16383,一共 16384 个哈希槽 |
安全策略 | 关闭 firewalld、SELinux |
安装目录 | /usr/local/redis‑cluster |
二、前期环境准备
2.1 关闭安全策略
shell |
2.2 编译安装 Redis 基础程序
shell |
2.3 创建 6 个节点目录,编写配置文件
以 7001 节点配置文件为模板,其余节点只修改端口号。
shell |
配置文件内容:
ini |
批量复制配置文件并替换端口:
shell |
2.4 启动全部 6 个 Redis 实例
shell |
三、创建 Redis‑Cluster 集群(Redis5.0 + 版本命令方式)
3.1 构建集群命令
--cluster‑replicas 1参数代表每个主节点分配 1 个从节点,程序自动分配主从关系。
shell |
控制台提示Can I set the above configuration?,输入yes确认创建集群。
四、集群查看命令
4.1 客户端连接集群,‑c 参数开启集群重定向跳转
shell |
4.2 集群内部查看指令(登录集群后执行)
redis |
4.3 外部集群检查命令(服务器终端执行)
shell |
五、集群日常运维(扩容、缩容)
5.1 扩容:添加新主节点 7007
- 部署 7007 实例;
- 加入集群;
- 手动迁移哈希槽,分配数据存储空间。
shell |
5.2 给已有主节点新增从节点 7008
shell |
5.3 缩容:删除集群节点
- 将待删除节点的哈希槽全部迁移至其他主节点;
- 执行节点删除命令。
shell |
六、故障转移测试流程
- 关闭一个主节点进程:kill -9 主进程PID;
- 集群等待超时后,该主节点对应的从节点自动升级为主节点;
- 原故障节点重新启动,自动变为新主节点的从节点;
- 使用cluster nodes核对角色切换状态。
七、ks.cfg 批量部署脚本(PXE 自动化装机)
shell |
八、高频故障总结
故障 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。