Redis如何进行集群部署
小樊
42
2026-01-01 04:02:54
Redis 集群部署实操指南
一 架构与前置条件
- 采用官方的 Redis Cluster 模式,数据被划分为 16384 个哈希槽,至少部署 3 个主节点 才能对外提供服务,生产环境建议 3 主 3 从 实现故障自动切换。Redis 集群提供高吞吐与一定程度的可用性,但并非强一致,不能保证数据零丢失。部署前准备:各节点互通、放通端口(数据端口如 6379 与集群总线端口 16379)、安装 Redis 5.0+(5.0 起可用 redis-cli --cluster 替代 ruby 工具)。
二 裸机或虚拟机部署步骤
- 安装与目录准备
- 下载并编译 Redis(示例版本 6.0.9),创建节点目录:如 /opt/redis-cluster/{7000,7001,7002,7003,7004,7005}。
- 节点配置文件要点(以 7000 为例,其他端口改对应数字)
- port 7000
- bind 0.0.0.0(生产请限制来源 IP)
- daemonize yes
- dir /opt/redis-cluster/7000
- appendonly yes
- cluster-enabled yes
- cluster-config-file nodes-7000.conf
- cluster-node-timeout 5000
- 如启用密码:requirepass yourpass 且 masterauth yourpass
- 启动所有实例
- redis-server /opt/redis-cluster/7000/redis.conf(依次启动 7001–7005)
- 创建集群(自动分配 3 主 3 从)
- redis-cli --cluster create
127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002
127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
–cluster-replicas 1
- 验证
- redis-cli -c -p 7000 cluster nodes
- redis-cli --cluster check 127.0.0.1:7000
- 常见问题与重置
- 若提示 “ERR Slot xxxx is already busy”,登录各节点执行 flushdb、cluster reset 后重启再创建集群。
- 批量停止可用:pkill redis-server。
三 Kubernetes 部署示例
- 使用 StatefulSet + Headless Service + PVC 管理 6 个 Pod(3 主 3 从),持久化数据到 /data,以 Redis 6.0.8 为例。
- 1)创建集群配置 ConfigMap
- kubectl create -f redis-config.yaml
- 关键配置:bind 0.0.0.0;port 6379;cluster-enabled yes;appendonly yes;cluster-node-timeout 5000;dir /data;cluster-config-file /data/nodes.conf;requirepass pass123;masterauth pass123;cluster-announce-bus-port 16379。
- 2)创建 Headless Service
- kubectl create -f redis-service.yaml(clusterIP: None,selector: app=redis-cluster)
- 3)创建 StatefulSet
- kubectl create -f redis.yaml(replicas 6;command: [“redis-server”,“/config/redis.conf”];挂载 /config 与 /data;建议配置反亲和,提升高可用)
- 说明
- 低于 5.0 的版本创建集群命令有所差异;生产建议选择较新稳定版本。
四 关键配置与运维要点
- 网络与端口
- 放通每个节点的数据端口(如 6379)与集群总线端口(如 16379 = 6379 + 10000),容器/云环境注意 Service 与 安全组 配置。
- 持久化与目录
- 开启 appendonly yes,每个实例使用独立 dir 与 cluster-config-file,确保故障恢复后仍能加入集群。
- 密码与客户端
- 集群启用密码时,需同时设置 requirepass 与 masterauth;部分客户端/工具需要额外配置,且集群操作复杂度上升,生产可优先用网络策略替代密码。
- 常用运维命令
- 查看集群状态:redis-cli -c -p 7000 cluster nodes
- 检查槽位与健康:redis-cli --cluster check 127.0.0.1:7000
- 扩容/缩容与故障演练:使用 redis-cli --cluster add-node/reshard/del-node 等子命令(按官方文档流程执行)。