上一篇
场景引入:
凌晨3点,你的电商系统突然挂掉!监控显示单节点Redis内存爆满,每秒10万+的请求直接压垮缓存…😱 这时候如果用了Redis集群,流量自动分摊到多个节点,还能无缝故障转移——今天就用一杯咖啡的时间,带你从零搭建一个高可用的Redis集群!
6379
(服务端口)、16379
(集群总线端口) # 所有节点执行(以CentOS为例) yum install -y gcc make # 安装编译工具 wget https://download.redis.io/releases/redis-7.2.3.tar.gz tar -zxvf redis-7.2.3.tar.gz cd redis-7.2.3 && make && make install
编辑每个节点的 redis.conf
:
port 6379 cluster-enabled yes # 开启集群模式 cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes daemonize yes # 后台运行
# 每台服务器执行 redis-server /path/to/redis.conf
检查是否启动成功:
ps -ef | grep redis # 应该看到redis-server进程
任选一台服务器执行(Redis 5.0+推荐用--cluster
命令):
redis-cli --cluster create \ 192.168.1.101:6379 \ 192.168.1.102:6379 \ 192.168.1.103:6379 \ --cluster-replicas 1 # 每个主节点配1个从节点
👉 注意:如果报错[ERR] Not all 16379 ports are open
,检查防火墙规则!
redis-cli -c -h 192.168.1.101 # 使用-c参数进入集群模式 > CLUSTER NODES # 查看节点关系 > SET foo bar # 测试自动重定向到正确分片
# 添加新主节点 redis-cli --cluster add-node 新节点IP:6379 现有节点IP:6379 # 迁移部分槽位到新节点 redis-cli --cluster reshard 现有节点IP:6379
故意kill掉一个主节点:
ps -ef | grep redis | grep 6379 | awk '{print $2}' | xargs kill -9
观察从节点是否自动晋升为主节点(可用CLUSTER NODES
命令查看)
# redis.conf 追加 cluster-require-full-coverage no # 部分槽位失效仍可提供服务 maxmemory-policy volatile-lru # 内存不足时淘汰策略
ntpd
同步时间 MOVED
错误是正常现象!客户端应使用支持集群模式的SDK(如JedisCluster) requirepass yourpassword
和masterauth yourpassword
# 查看集群健康状态 redis-cli --cluster check 192.168.1.101:6379 # 使用Prometheus+Granafa监控关键指标: - 节点内存使用率 - 每秒命令处理量 - 槽位分布均匀性
:Redis集群就像一支篮球队🏀——主节点是前锋负责进攻(写入),从节点是后卫随时补位(故障转移),而16379端口是队员间的暗号(Gossip协议通信),按本文操作后,你的缓存系统将拥有:
✅ 自动数据分片
✅ 秒级故障转移
✅ 线性扩展能力
下次遇到大促流量,终于可以安心睡觉了!😴💤
(注:本文基于Redis 7.2.3版本,2025年8月验证通过)
本文由 阙乐儿 于2025-08-06发表在【云服务器提供商】,文中图片由(阙乐儿)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/554128.html
发表评论