SpringCloud 集成 Redis 高可用集群方案Redis 集群适用场景
对于中小型项目(如几百人访问、日访问量几万),单机 Redis 实例通常足够使用。但当单实例无法满足需求时,可考虑以下方案提升性能和稳定性:
- 主从复制(Master-Slave)
- 哨兵模式(Sentinel)
- Redis Cluster 集群(推荐生产环境使用)
Redis Cluster 核心特性
- 无中心架构:所有节点通过 PING-PONG 机制互联,使用二进制协议优化传输效率
- 故障检测:超过半数节点检测失效时才生效
- 直连客户端:客户端只需连接任意可用节点,无需代理层
- 哈希槽分配:16384 个哈希槽均匀分配到各主节点
生产环境部署建议
- 节点配置:至少 6 个节点(3 主 3 从)
- 部署方式:建议使用独立服务器部署,示例中使用单服务器模拟
- 关键参数:
cluster-enabled yes:启用集群模式
cluster-node-timeout 15000:节点超时时间(毫秒)
cluster-replicas 1:每个主节点配备 1 个从节点
详细部署步骤
1. 环境准备# 下载 Redis 6.0.5wget http://download.redis.io/releases/redis-6.0.5.tar.gz#
升级 GCC 编译器(CentOS 示例)yum -y install centos-release-sclyum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutilsscl enable devtoolset-9 bashecho "source /opt/rh/devtoolset-9/enable" >> /etc/profile2. 编译安装make && make install3. 创建集群配置mkdir redis-clustercd redis-cluster# 创建 6 个配置文件(7001-7006.conf)for port in {7001..7006}; do cat > ${port}.conf <<EOFport ${port}bind 172.17.1.218 # 替换为实际内网IPdaemonize yespidfile /var/run/redis_${port}.pidcluster-enabled yescluster-config-file nodes_${port}.confcluster-node-timeout 15000appendonly yesEOFdone4. 启动服务redis-server 7001.confredis-server 7002.confredis-server 7003.confredis-server 7004.confredis-server 7005.confredis-server 7006.conf5. 创建集群redis-cli --cluster create 172.17.1.218:7001 172.17.1.218:7002 172.17.1.218:7003 172.17.1.218:7004 172.17.1.218:7005 172.17.1.218:7006 --cluster-replicas 16. 验证集群redis-cli --cluster check 172.17.1.218:7001SpringCloud 集成配置
1. 添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>2. 配置文件示例(bootstrap.yml)spring: redis: timeout: 30000 password: 123456 # 集群密码 cluster: nodes: - 172.17.1.218:7001 - 172.17.1.218:7002 - 172.17.1.218:7003 - 172.17.1.218:7004 - 172.17.1.218:7005 - 172.17.1.218:7006 max-redirects: 3 # 最大重定向次数 lettuce: pool: max-active: 1000 # 最大连接数 max-idle: 10 # 最大空闲连接 min-idle: 5 # 最小空闲连接 max-wait: -1 # 连接超时时间(毫秒)生产环境注意事项
安全防护:
配置内网访问地址
启用防火墙规则
设置强密码认证
监控预警:
部署监控系统(如 Prometheus + Grafana)
设置内存使用率、连接数等关键指标告警
高可用保障:
定期备份数据
模拟故障演练
准备扩容方案
故障处理示例
当主节点(如 7001)故障时:
- 集群自动选举从节点(7004)晋升为主节点
- 客户端重定向到新主节点
- 重启原主节点(7001)后自动变为从节点
通过以上配置,可实现 Redis 集群的高可用性和水平扩展能力,满足微服务架构下的缓存需求。