Redis 集群部署独立服务器教程

本文介绍了Redis集群独立服务器上的部署教程,涵盖环境准备、Redis编译安装配置文件修改(启用cluster模式、绑定IP、设置端口等)、创建集群节点、使用redis-cli --cluster工具完成节点握手与槽分配等关键步骤,并强调了防火墙配置内存优化故障排查要点,适用于生产环境高可用Redis集群搭建

Redis 6.2+ 集群部署实战:三台独立服务器从零搭建高可用分布式缓存

在生产环境中,单机 Redis 易成瓶颈且无容错能力,本文以三台物理/云服务器(IP 分别为 192.168.1.10、192.168.1.11、192.168.1.12)为例,基于 Redis 6.2.6(官方推荐稳定版),手把手完成真正独立部署的 Redis Cluster——所有节点均运行在隔离服务器上,无容器、无虚拟化依赖,强调网络配置防火墙策略与故障自愈逻辑。

✅ 前提准备
每台服务器需:CentOS 7+/Ubuntu 20.04、4GB 内存、开放端口 7000–7005(建议每个节点启用6个端口:3主3从)、禁用 swap(echo 'vm.swappiness=0' >> /etc/sysctl.conf && sysctl -p)。

🔧 步骤一:统一安装与基础配置
在三台机器上执行:

# 下载编译(避免包管理器版本滞后)
wget HTTPS://download.redis.io/releases/redis-6.2.6.tar.gz  
tar xzf redis-6.2.6.tar.gz && cd redis-6.2.6 && make && sudo make install  
# 创建集群目录结构(每台均执行)
sudo mkdir -p /data/redis/{7000,7001}  
sudo chown -R $USER:$USER /data/redis  

创建 /data/redis/7000/redis.conf(以 192.168.1.10 的 7000 节点为例,其余节点仅修改 bindport):

port 7000  
bind 192.168.1.10  
protected-mode no  
daemonize yes  
pidfile /var/run/redis_7000.pid  
logfile "/data/redis/7000/redis.log"  
dir /data/redis/7000  
cluster-enabled yes  
cluster-config-file nodes-7000.conf  
cluster-node-timeout 5000  
appendonly yes  
# 关键:禁止 AOF 重写阻塞集群通信(生产建议关闭 auto-aof-rewrite)  
auto-aof-rewrite-percentage 0  

⚠️ 注意:每台服务器部署 2个节点(如 192.168.1.10 运行 7000 主 + 7001 从),确保 3 主 3 从跨服务器分布,避免单点失效。

🚀 步骤二:启动全部节点
在每台服务器上依次启动:

redis-server /data/redis/7000/redis.conf  
redis-server /data/redis/7001/redis.conf  

验证:redis-cli -h 192.168.1.10 -p 7000 cluster info | grep cluster_state → 应显示 fail(尚未组网)。

🌐 步骤三:跨服务器初始化集群
在任意一台机器(如 192.168.1.10)执行(需提前安装 redis-cli):

redis-cli --cluster create \
  192.168.1.10:7000 192.168.1.11:7000 192.168.1.12:7000 \
  192.168.1.10:7001 192.168.1.11:7001 192.168.1.12:7001 \
  --cluster-replicas 1 --cluster-yes  

该命令自动分配主从、握手、槽位(16384 slots)分片,成功后输出 All 16384 slots covered

🔍 验证与运维要点

  • 查看拓扑:redis-cli -h 192.168.1.10 -p 7000 cluster nodes | grep master
  • 模拟故障kill -9 $(pgrep -f "redis.conf.*7000"),观察日志中 Fail!fail? → 自动触发从节点升主(约10秒内恢复
  • 防火墙必须放行:sudo ufw allow from 192.168.1.0/24 to any port 7000:7005 proto tcp(Ubuntu) firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="7000-7005" protocol="tcp" accept'(CentOS)

💡 关键经验总结

  1. 独立≠孤立:各服务器间需低延迟网络(建议内网互通,RTT < 1ms);
  2. 端口规划:每个节点预留6端口(7000–7005),便于后续扩展及故障诊断;
  3. 配置一致性cluster-node-timeout 建议设为 5000ms,过短易误判,过长影响故障转移速度
  4. 备份策略:对 nodes-*.conf 文件每日 rsync 到中心存储——集群元数据丢失将导致整个集群不可用。

至此,一个真正跨物理服务器、具备自动分片与故障转移能力的 Redis 集群已就绪,无需额外中间件,原生支持读写分离与水平扩展,是中小规模高并发场景的理想选择。(全文共1432字)