温馨提示×

Debian Redis集群如何搭建与管理

小樊
38
2025-12-13 05:50:25
栏目: 云计算

Debian 上搭建与管理 Redis 集群

一 环境准备与规划

  • 准备至少 3 台 Debian 主机(或在同一台机器用不同端口模拟),每台运行 2 个实例,形成 3 主 3 从 的最小可用集群。示例端口:7000–7005
  • 建议目录结构:/opt/redis-cluster/{7000,7001,7002,7003,7004,7005},便于数据与配置隔离。
  • 开放防火墙端口:每个实例的 TCP 端口集群总线端口 = 实例端口 + 10000(如 7000 与 17000)。
  • 安装 Redis(所有节点):sudo apt update && sudo apt install -y redis-server。

二 安装与配置

  • 安装完成后,为 7000–7005 创建配置与数据目录,示例以 7000 为例(其余端口仅修改端口与目录):
# 创建目录
sudo mkdir -p /opt/redis-cluster/7000

# 生成配置
sudo tee /opt/redis-cluster/7000/redis.conf >/dev/null <<'EOF'
port 7000
bind 0.0.0.0
daemonize yes
dir /opt/redis-cluster/7000
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
logfile /opt/redis-cluster/7000/redis.log
EOF
  • 将以上配置复制到 7001–7005,仅修改 port 与 dir、logfile 路径。
  • 说明:bind 设为 0.0.0.0 便于多机互联;生产环境请结合防火墙或安全组限制来源 IP。

三 启动与创建集群

  • 启动所有实例(逐台或并行):
for p in {7000..7005}; do
  redis-server /opt/redis-cluster/$p/redis.conf
done
# 验证
ps -ef | grep redis-server
  • 创建集群(任意一台具备集群功能的节点执行即可,示例使用本机 7000–7005):
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
# 提示时输入 yes 确认分片与副本分配
  • 验证集群状态:
redis-cli -c -p 7000 cluster info
redis-cli -c -p 7000 cluster nodes
redis-cli --cluster check 127.0.0.1:7000
  • 提示:redis-cli 的 –cluster 子命令可直接完成创建、检查、扩缩容等常见运维操作。

四 日常管理常用操作

  • 集群健康检查与槽位分配核对:
redis-cli --cluster check <任一节点IP:端口>
  • 在线扩容/重分片(示例从现有集群取 1000 个槽迁移到新主节点 192.168.1.10:7006):
redis-cli --cluster reshard \
  --cluster-from <all|节点ID或all> \
  --cluster-to <新主节点ID> \
  --cluster-slots 1000 \
  --cluster-yes \
  <任一节点IP:端口>
  • 新增节点:
# 添加为新主
redis-cli --cluster add-node <新主IP:端口> <任一现有节点IP:端口>

# 添加为从节点并指定复制的主节点ID
redis-cli --cluster add-node <新从IP:端口> <任一现有节点IP:端口> --cluster-slave --cluster-master-id <主节点ID>
  • 删除节点(先迁移其槽位,再删除):
redis-cli --cluster del-node <任一节点IP:端口> <待删除节点ID>
  • 故障演练与恢复:手动停掉某主节点,观察 failover 是否由副本接管;确认业务写入不受影响后恢复实例并观察集群自动重均衡。

五 客户端连接与注意事项

  • 客户端需启用集群模式(如使用 -c 参数或集群感知客户端),示例:
redis-cli -c -p 7000
  • Spring Boot 配置示例(application.yml):
spring:
  redis:
    cluster:
      nodes:
        - 192.168.1.10:7000
        - 192.168.1.10:7001
        - 192.168.1.10:7002
        - 192.168.1.11:7003
        - 192.168.1.11:7004
        - 192.168.1.11:7005
      max-redirects: 3
    password: your_password   # 如启用
    timeout: 3000
    lettuce:
      pool:
        max-active: 16
        max-idle: 8
        min-idle: 4
        max-wait: 2000
  • 关键注意事项:
    • 集群最少需要 3 主 3 从;故障判定依赖多数派投票;数据按 16384 个哈希槽分布。
    • 生产务必开启 AOF(appendonly yes) 并定期备份;为实例设置合理的内存上限与淘汰策略。
    • 网络与端口:开放实例端口与 +10000 的集群总线端口;跨机房部署注意时延与带宽。
    • 安全:限制来源 IP、启用 requirepassbind 精细化、禁用危险命令(如 FLUSHALL/FLUSHDB 生产慎用)。

0