当前位置: 首页 > article >正文

Redis 三主三从集群部署的完整方案

一、架构设计原理‌

  1. 分布式数据分片
    哈希槽机制‌:Redis Cluster 将数据划分为 16384 个槽位,每个主节点负责部分槽位(如主节点1管理槽0-5460,主节点2管理5461-10922等)。
    自动负载均衡‌:数据按哈希值分配到不同节点,避免单点性能瓶颈。
    高可用基础‌:每个主节点配置至少一个从节点,主节点故障时自动切换从节点接替。
  2. 故障转移流程
    哨兵协同‌:3个哨兵节点通过投票机制(quorum=2)决策主节点状态。
    状态检测‌:哨兵每隔1秒向主节点发送PING,若5秒内无响应标记为主观下线,超过半数哨兵确认则触发客观下线。
    选举新主‌:优先选择数据同步最完整的从节点晋升为新主。
    二、部署实施步骤‌
  3. 节点规划
    角色 IP地址 端口 说明
    主节点1 10.0.1.10 6379 管理槽位0-5460
    主节点2 10.0.1.11 6379 管理槽位5461-10922
    主节点3 10.0.1.12 6379 管理槽位10923-16383
    从节点1 10.0.1.20 6379 复制主节点1数据
    从节点2 10.0.1.21 6379 复制主节点2数据
    从节点3 10.0.1.22 6379 复制主节点3数据
    哨兵节点 10.0.1.30-32 26379 监控所有主节点状态
  4. 配置文件核心参数
    主从节点配置‌:
    plaintext
    Copy Code
    cluster-enabled yes # 启用集群模式
    cluster-node-timeout 5000 # 节点超时时间(毫秒)
    requirepass maple168 # 访问密码
    masterauth maple168 # 主从同步密码

哨兵节点配置‌:
plaintext
Copy Code
sentinel monitor master1 10.0.1.10 6379 2
sentinel auth-pass master1 maple168
sentinel down-after-milliseconds master1 5000

  1. 集群初始化命令
    bash
    Copy Code

在所有节点启动Redis服务

redis-server /etc/redis/redis.conf

使用redis-cli工具创建集群

redis-cli -a maple168 --cluster create
10.0.1.10:6379 10.0.1.11:6379 10.0.1.12:6379
10.0.1.20:6379 10.0.1.21:6379 10.0.1.22:6379
–cluster-replicas 1

注:–cluster-replicas 1表示每个主节点分配1个从节点

三、关键验证操作‌

  1. 集群状态检查
    bash
    Copy Code

查看槽位分配与节点角色

redis-cli -a maple168 --cluster check 10.0.1.10:6379

输出示例:

M: 10.0.1.10:6379 (主节点) slots:[0-5460]

S: 10.0.1.20:6379 (从节点) replicates 10.0.1.10

  1. 数据路由测试
    bash
    Copy Code

写入数据观察自动路由

redis-cli -a maple168 -c -h 10.0.1.10 set user:1001 “data”

返回响应:-> Redirected to slot [9842] located at 10.0.1.11:6379

跨节点读取验证

redis-cli -a maple168 -c -h 10.0.1.12 get user:1001

  1. 故障模拟恢复
    手动关闭主节点1‌:
    bash
    Copy Code
    redis-cli -a maple168 -h 10.0.1.10 shutdown

观察哨兵日志‌:
log
Copy Code
+sdown master master1 10.0.1.10:6379 # 主观下线
+odown master master1 10.0.1.10:6379 # 客观下线
+vote-for-leader 哨兵ID # 选举新主
+failover-end master1 10.0.1.20:6379 # 从节点1晋升

验证新主节点‌:
bash
Copy Code
redis-cli -a maple168 -h 10.0.1.20 info replication | grep role

预期输出:role:master

四、运维优化建议‌

  1. 网络层面
    带宽保障‌:主从节点间建议使用万兆内网,减少同步延迟。
    端口开放‌:
    主从通信:TCP 6379
    集群总线:TCP 16379(端口=6379+10000)
    哨兵通信:TCP 26379
  2. 内存与持久化
    内存限制‌:配置maxmemory 16gb(根据物理内存80%设置),防止OOM。
    持久化策略‌:
    主节点关闭AOF(appendonly no),避免写放大。
    从节点开启AOF(appendonly yes),追加写入保障数据安全。
  3. 监控告警
    指标采集‌:
    内存使用率(used_memory)
    键空间命中率(keyspace_hits/keyspace_misses)
    主从延迟(master_repl_offset与slave_repl_offset差值)
    推荐工具:Prometheus + Redis Exporter + Grafana 可视化仪表盘。
    五、典型故障处理‌
  4. 脑裂问题(Split-Brain)
    现象‌:网络分区导致多个主节点同时写入。
    解决方案‌:
    设置min-replicas-to-write 1,主节点需至少1个从节点在线才允许写入。
    配置cluster-require-full-coverage no,部分槽位不可用时仍提供服务。
  5. 数据同步延迟
    排查步骤‌:
    检查主从节点网络带宽(iftop或nload)。
    查看repl_backlog_size是否过小(建议≥512MB)。
    检查从节点是否执行耗时命令(如KEYS *阻塞进程)。
  6. 节点无法加入集群
    常见原因‌:
    防火墙拦截集群总线端口(16379)。
    密码不一致(requirepass与masterauth需完全相同)。
    节点时间不同步(需配置NTP服务)。

通过以上方案,可实现具备自动分片、故障秒级切换的 Redis 三主三从生产级集群,支撑高并发读写与数据高可用需求。


http://www.kler.cn/a/592646.html

相关文章:

  • ASP3605同步降压调节器——满足汽车电子严苛要求的电源芯片方案
  • 进程间通信(1)——管道
  • 数据结构知识点1
  • excel文件有两列,循环读取文件两列赋值到字典列表。字典的有两个key,分别为question和answer。将最终结果输出到json文件
  • 使用STM32CubeMX+DMA+空闲中断实现串口接收和发送数据(STM32G070CBT6)
  • 【开源宝藏】30天学会CSS - DAY3 第三课 滑动文本+变色
  • mysql 索引的使用
  • mapbox-gl源码中解析style加载地图过程详解
  • 线性规划的标准形式
  • Golang开发
  • 【Dive Into Stable Diffusion v3.5】1:开源项目正式发布——深入探索SDv3.5模型全参/LoRA/RLHF训练
  • 使用 Wireshark 在 Ubuntu 22.04 上抓包分析网络流量
  • 危化品经营单位考试:从基础夯实到能力提升的进阶之路​
  • Docker 存储
  • 麒麟服务器操作系统Node.js环境部署手册
  • 当今前沿技术:改变生活的创新趋势
  • 微信小程序检测滚动到某元素位置的计算方法
  • 黑马跟学.苍穹外卖.Day08
  • Android Launcher3 首屏图标锁定技术方案解析
  • docker登陆问题