Redis集群架构怎么搭建?高可用和分布式实践怎么实现?

文章导读
Redis 集群架构搭建主要基于分片(Sharding)和主从复制机制,核心是实现高可用与分布式存储。搭建过程通常包括环境准备、安装 Redis、配置集群模式(cluster-enabled yes)、启动节点并使用 redis-cli --cluster create 命令初始化集群。高可用实践依赖于至少 3 个主节点和对应的从节点,通过槽位分配(16384 个槽)实现数据分布,利用 Gossi
📋 目录
  1. A Redis 集群部署指南:高可用与分布式实践
  2. B Redis 详解 (三):高可用架构与分布式实践
  3. C Redis 集群化部署实战:打造高可用、可扩展的缓存系统
  4. D Redis 高可用集群原理和实践
  5. E FAQ
A A

Redis 集群架构搭建主要基于分片(Sharding)和主从复制机制,核心是实现高可用与分布式存储。搭建过程通常包括环境准备、安装 Redis、配置集群模式(cluster-enabled yes)、启动节点并使用 redis-cli --cluster create 命令初始化集群。高可用实践依赖于至少 3 个主节点和对应的从节点,通过槽位分配(16384 个槽)实现数据分布,利用 Gossip 协议交换状态,并在主节点故障时通过从节点自动故障转移(Failover)保障服务连续性。分布式实践则通过水平扩展节点来提升读写并发能力和存储容量,解决单机性能瓶颈。

Redis 集群部署指南:高可用与分布式实践

Redis 集群部署指南:高可用与分布式实践 1. 原理与理论 2. 背景与目的 3. 详细部署步骤 (手动操作) 步骤 1:安装 Redis 5.0.4 步骤 2:配置 Redis 服务 步骤 3:修改关键配置 步骤 4:启动所有节点 步骤 5:构建集群 步骤 6:验证集群状态 4. 常见问题与解决方案 节点无法加入集群 集群槽位未完全分配 主从切换失败 客户端重定向错误 5. 总结与心得 1. 原理与理论 Redis 集群通过分片 (Sharding) 实现数据分布式存储,核心机制包括:槽位分配 (Slot):数据被划分为 16384 个槽位,每个节点负责部分槽位。Gossip 协议:节点间通过 PING/PONG 消息交换集群状态。主从复制:每个主节点 (Master) 至少有一个从节点 (Slave),实现故障自动转移 (Failover)。重定向机制:客户端访问错误节点时,返回 MOVED 指令重定向到正确节点。2. 背景与目的 背景:单机 Redis 存在性能瓶颈 (内存/QPS 限制) 和单点故障风险。目的:实现数据水平拆分,支持海量数据存储。通过主从复制和故障转移保障高可用性。提升读写并发能力 (如三主集群理论 QPS 可达 30 万+)。3. 详细部署步骤 (手动操作) 环境准备:6 台 CentOS 7 服务器 (3 主 3 从),IP:172.16.1.131-136 关闭防火墙和 SELinux: systemctlstopfirewalld&&systemctl disable firewalld sed -i's/SELINUX=.*/SELINUX=disabled/g'/etc/selinux/config&&setenforce0 一键获取完整项目代码 步骤 1:安装 Redis 5.0.4 # 所有节点执行 cd/opt wget http://download.redis.io/releases/redis-5.0.4.tar.gz tar xzvf redis-5.0.4.tar.gz cd redis-5.0.4 make&&make install 一键获取完整项目代码 步骤 2:配置 Redis 服务 # 创建配置文件目录 mkdir -p/etc/redis/var/log/redis/var/lib/redis # 复制配置文件 cp/opt/redis-5.0.4/redis.conf/etc/redis/6379.conf 一键获取完整项目代码 步骤 3:修改关键配置 编辑/etc/redis/6379.conf: bind172.16.1.131127.0.0.1# 当前节点 IP(每台不同) port6379 daemonize yes pidfile/var/run/redis_6379.pid logfile/var/log/redis/redis.log dir/var/lib/redis cluster-enabled yes # 启用集群模式 cluster-node-timeout15000# 节点超时时间 cluster-config-file nodes.conf # 集群状态文件 一键获取完整项目代码 步骤 4:启动所有节点(2025 年 7 月 6 日)

Redis 详解 (三):高可用架构与分布式实践

Redis 详解 (三):高可用架构与分布式实践 一、Redis 高可用部署方案 Redis 提供多种部署方式,从简单的单实例到复杂的分布式集群,可根据业务需求选择。1. 单副本部署 架构:单个 Redis 节点,无备用节点。优点:部署简单,资源占用少。适用于开发环境或低流量、非核心业务。缺点:无高可用性,节点故障直接导致服务不可用。无数据持久化时,进程重启后数据丢失。2. 主从复制 (多副本) 架构:1 个主节点 (master)+ 多个从节点 (slave),主节点负责写操作,从节点复制主节点数据并提供读服务。核心原理:从节点启动时发送 PSYNC 命令给主节点。首次同步 (全量复制):主节点生成 RDB 快照,发送给从节点,同时缓存期间的写命令;从节点加载 RDB 后,主节点发送缓存的写命令。增量复制:主节点后续的写命令通过复制缓冲区同步给从节点。断点续传:Redis 2.8 + 支持通过 replica offset 和 backlog 实现断点续传,避免全量复制开销。优点:实现读写分离,提升读吞吐量。主节点故障时,可手动将从节点晋升为主节点 (需人工干预)。数据持久化结合从节点,降低主节点 IO 压力。缺点:故障转移需手动操作,可用性低。主节点写性能受单机限制,存储容量依赖单节点内存。3. 哨兵模式 (Sentinel) 架构:由哨兵集群 (至少 3 个节点)+ Redis 主从集群组成,哨兵负责监控节点状态、自动故障转移。核心功能:集群监控:定期检测主从节点健康状态。故障转移:主节点故障时,自动选举新主节点并调整从节点指向。配置中心:客户端通过哨兵获取主节点地址,无需硬编码。通知告警:节点故障时发送通知 (如邮件、短信)。故障转移流程:哨兵通过 PING 命令检测节点,超过 down-after-milliseconds 未响应则标记为主观下线。多个哨兵确认主节点下线 (达到 quorum 阈值),标记为客观下线。哨兵集群投票选举一个哨兵执行故障转移:筛选健康的从节点 (排除网络断开过久的节点)。按优先级 (slave-priority)、复制进度 (replica offset)、运行 ID(runid) 选举新主节点。新主节点晋升后,其他从节点指向新主节点,原主节点恢复后作为从节点加入。优点:自动故障转移,高可用性强。支持线性扩展从节点,提升读性能。部署简单,无需复杂配置。缺点:从节点仅作为备份,资源利用率低。(截至 2025 年 8 月 13 日)

Redis 集群化部署实战:打造高可用、可扩展的缓存系统

Redis 集群化部署实战:打造高可用、可扩展的缓存系统 简介:本文详细介绍 Redis 集群化部署方案,涵盖架构设计、环境准备、配置优化、Docker 部署、集群管理、监控运维及故障处理,助你构建高可用、可扩展的分布式缓存系统。Redis 集群化部署实战:打造高可用、可扩展的缓存系统 Redis 作为高性能的内存数据库,在现代应用架构中扮演着至关重要的角色。随着业务规模的扩大,单机 Redis 已经无法满足高可用性和可扩展性的需求。Redis 集群通过分片和主从复制机制,提供了水平扩展和故障恢复能力。本文将详细介绍 Redis 集群的部署方案,帮助读者构建一个高可用、可扩展的缓存系统。Redis 集群架构概述 Redis 集群采用无中心节点的分布式架构,通过哈希槽 (hash slot) 实现数据分片。整个集群包含 16384 个哈希槽,每个主节点负责一部分哈希槽。集群中的每个主节点都可以有 0 个或多个从节点,用于实现故障转移。集群节点角色 集群部署前的准备 环境要求 操作系统:Linux(推荐 CentOS 7+ 或 Ubuntu 18.04+) 内存:每个节点至少 2GB 网络:节点间网络连通性良好 端口:Redis 端口 (如 7000-7005) 和集群总线端口 (端口 +10000) 系统配置 系统参数优化 echo"vm.overcommit_memory = 1">>/etc/sysctl.confecho"net.core.somaxconn = 1024">>/etc/sysctl.confecho"tcp_max_syn_backlog = 511">>/etc/sysctl.confsysctl -p 禁用透明大页 echo never >/sys/kernel/mm/transparent_hugepage/enabled echo never >/sys/kernel/mm/transparent_hugepage/defrag Redis 配置文件设置 为每个节点创建独立的配置文件,以节点 7000 为例:# redis-cluster-7000.conf bind0.0.0.0port7000cluster-enabled yes cluster-config-file nodes-7000.conf cluster-node-timeout15000appendonly yes appendfilename"appendonly-7000.aof"dir /var/lib/redis/7000pidfile /var/run/redis_7000.pidlogfile /var/log/redis/7000.log maxmemory 1gb maxmemory-policy allkeys-lru save9001save30010save6010000Redis 集群化部署实战:打造高可用、可扩展的缓存系统(撰于 2025 年 11 月 3 日)

Redis 高可用集群原理和实践

Redis 高可用集群原理和实践 Redis 集群是 Redis 提供的分布式数据库方案,集群通过分片 (sharding) 来进行数据共享,并提供复制和故障转移能力。集群环境搭建 Redis 集群最少需要 3 个 master 节点,这里我们搭建 3 个 master 节点,3 个 slave 及节点 (由于我机器配置受限,直接通过端口的方式模拟集群搭建,本处只是实验方便,生产环境不可采取此方案)。环境搭建步骤如下:简单说明,首先我们先要定义集群节点的端口 7000-7005 然后配置文件复制 redis.conf 到对应的配置文件名。

IP端口配置文件
127.0.0.170007000/redis-7000.conf
127.0.0.170017001/redis-7001.conf
127.0.0.170027002/redis-7002.conf
127.0.0.170037003/redis-7003.conf
127.0.0.170047004/redis-7004.conf
127.0.0.170057005/redis-7005.conf
编辑 redis.conf 文件,主要修改以下的几个配置 (如果需要设置密码需要配置 requirepass 和 masterauth) daemonize yes# 这个端口和上面的配置清单一致即可 port 7000# 启动集群模式 cluster-enabled yes# 集群节点信息文件,这里 700x 最好和 port 对应上 cluster-config-file nodes-7000.confcluster-node-timeout 5000appendonly yes 服务启动,注意我们需要启动所有的节点,命令如下:# 启动所有的服务 7000-7005cd 7000redis-server ./redis-7000.conf 初始化集群,通过 redis-cli --cluster create 命令初始化集群,命令如下 (如果是生产环境,需要节点间 IP 以及端口是否可互相访问): 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(搜索结果收录于 2022 年 5 月 31 日)

FAQ

Redis 集群最少需要多少个主节点?

Redis集群架构怎么搭建?高可用和分布式实践怎么实现?

根据资料,Redis 集群最少需要 3 个 master 节点,通常建议搭配至少 3 个从节点以实现高可用。

集群数据分片是如何实现的?

集群通过分片 (sharding) 来进行数据共享,整个集群包含 16384 个哈希槽,每个主节点负责一部分哈希槽,通过对 Key 进行 CRC16(key)%16384 运算得到对应的槽。

哨兵模式的主要功能是什么?

哨兵负责监控节点状态、自动故障转移。核心功能包括集群监控、故障转移、配置中心和通知告警,主节点故障时自动选举新主节点。