温馨提示×

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,每个实例使用独立 dircluster-config-file,确保故障恢复后仍能加入集群。
  • 密码与客户端
    • 集群启用密码时,需同时设置 requirepassmasterauth;部分客户端/工具需要额外配置,且集群操作复杂度上升,生产可优先用网络策略替代密码。
  • 常用运维命令
    • 查看集群状态:redis-cli -c -p 7000 cluster nodes
    • 检查槽位与健康:redis-cli --cluster check 127.0.0.1:7000
    • 扩容/缩容与故障演练:使用 redis-cli --cluster add-node/reshard/del-node 等子命令(按官方文档流程执行)。

0