资讯动态

Redis 系列 · 第 04 篇——部署实操:内网高可用集群

发布时间:2026/9/24 17:29:29 来源:尧图企业网站定制
从源码编译到哨兵 / Cluster 集群落地目 录一、导读与节点规划二、源码编译安装2.1 安装编译依赖2.2 下载解压并编译2.3 目录与配置就绪2.4 主从通用配置三、主从复制部署3.1 配置从节点3.2 启动与验证四、哨兵高可用部署4.1 配置哨兵4.2 启动哨兵4.3 故障转移验证4.4 三个易错配置五、Cluster 集群部署5.1 数据分片部署5.2 创建集群5.3 验证与运维六、一键部署脚本骨架七、本篇小结一、导读与节点规划前两讲明确了架构与原理本讲在内网环境从零落地。以 3 台虚机redis01 / 02 / 03为例依次完成源码编译安装、主从复制、哨兵高可用并给出 Cluster 集群的部署命令。所有命令可复制直接执行。节点IP角色服务redis0110.10.10.51主 / 哨兵redis-server redis-sentinelredis0210.10.10.52从 / 哨兵redis-server redis-sentinelredis0310.10.10.53从 / 哨兵redis-server redis-sentinel说明示例内网源与节点 IP 可替换为实际环境。哨兵进程建议与 redis-server 分离部署以形成多数派本示例节点数有限重点演示原理。二、源码编译安装2.1 安装编译依赖Redis 由 C 编写编译依赖 gcc。若节点未装先用内网源安装CentOS 7 建议同时装 gcc-cyum install -y gcc gcc-c make tclgcc -v # 确认版本2.2 下载解压并编译Redis 无需 configure直接 make 编译包可提前放入 /usr/local/src 或从内网镜像获取cd /usr/local/src/tar -zxvf redis-7.4.8.tar.gzcd redis-7.4.8make make install PREFIX/usr/local/redis# 产物/usr/local/redis/bin/{redis-server,redis-cli,redis-sentinel}2.3 目录与配置就绪mkdir -p /usr/local/redis/{conf,data,logs}cp redis.conf /usr/local/redis/conf/redis.conf2.4 主从通用配置编辑 redis.conf统一开启后台运行、AOF 持久化与密码daemonize yesbind 0.0.0.0protected-mode noport 6379requirepass Redis123456 # 主从/哨兵认证密码masterauth Redis123456 # 从节点同步主节点用appendonly yesappendfsync everysecdir /usr/local/redis/datalogfile /usr/local/redis/logs/redis.logmaxmemory 1gbmaxmemory-policy allkeys-lru三、主从复制部署3.1 配置从节点在 redis02 / 03 的 redis.conf 末尾追加 replicaof 指向主节点 redis01replicaof 10.10.10.51 6379replica-read-only yes3.2 启动与验证redis-server /usr/local/redis/conf/redis.confredis-cli -a Redis123456 -p 6379 info replication# 观察 role:master / role:slave 与 slave0:ip... 状态主节点下 INFO replication 可见 slave0、slave1 两个从节点从节点上 role 为 slavemaster_link_status:up 表示同步正常。四、哨兵高可用部署4.1 配置哨兵每个节点单独一份 sentinel.conf三份内容一致master 名与法定票数相同。法定票数设为 2确保多数派才触发切换port 26379daemonize yeslogfile /usr/local/redis/logs/sentinel.logsentinel monitor mymaster 10.10.10.51 6379 2sentinel auth-pass mymaster Redis123456sentinel down-after-milliseconds mymaster 5000sentinel failover-timeout mymaster 60000sentinel parallel-syncs mymaster 14.2 启动哨兵redis-sentinel /usr/local/redis/conf/sentinel.confredis-cli -p 26379 sentinel masters4.3 故障转移验证模拟主节点 redis01 宕机观察哨兵自动选新主redis-cli -p 26379 debug sleep 30 # 或直接 kill 主 redis-server# 等待约 10~30 秒哨兵完成客观下线 选举 切换redis-cli -p 26379 sentinel get-master-addr-by-name mymaster切回原主后原主会作为从节点自动跟随新主实现自动恢复无需人工干预。4.4 三个易错配置参数易错点sentinel monitor 法定票数须为奇数且 ≤ 哨兵总数3 哨兵配 2避免多数派失效down-after-milliseconds高延迟网络设过短会频繁误判主节点下线parallel-syncs设过大新主刚切换就有多个从库并发拉全量打爆带宽五、Cluster 集群部署5.1 数据分片部署Cluster 需要每节点独立端口此处每机 2 实例形成 3 主 3 从。每实例配置开启集群cluster-enabled yescluster-config-file nodes.confcluster-node-timeout 150005.2 创建集群redis-cli --cluster create \10.10.10.51:7000 10.10.10.52:7000 10.10.10.53:7000 \10.10.10.51:7001 10.10.10.52:7001 10.10.10.53:7001 \--cluster-replicas 15.3 验证与运维redis-cli -c -p 7000 cluster info 查看集群状态为 ok。redis-cli -c 自动处理槽路由客户端需支持集群协议与哈希标签。在线扩缩容cluster addslots / reshard 迁移槽位扩容只迁移涉及槽的数据。六、一键部署脚本骨架为便于复用以下脚本按主机名自动识别角色hostname 含 01 为主其余为从并同步注册为哨兵。生产可据此扩展为无交互一键部署。#!/bin/bash# redis-deploy.sh —— 按 hostname 自动识别主从 哨兵MASTER10.10.10.51; PASSRedis123456HOST$(hostname)yum install -y gcc gcc-c make tclcd /usr/local/src/redis-7.4.8 make make install PREFIX/usr/local/redisecho daemonize yes\nbind 0.0.0.0\nprotected-mode no /usr/local/redis/conf/redis.confecho requirepass $PASS\nmasterauth $PASS /usr/local/redis/conf/redis.confecho appendonly yes\nappendfsync everysec /usr/local/redis/conf/redis.confcase $HOST in*01*) : ;;*) echo replicaof $MASTER 6379 /usr/local/redis/conf/redis.conf ;;esacredis-server /usr/local/redis/conf/redis.conf脚本仅演示核心逻辑生产环境还需补充 systemd 托管、数据目录、日志轮转与集群模式分支。七、本篇小结本讲完成了 Redis 从源码编译到主从、哨兵、Cluster 三层高可用的内网落地并提供一键部署骨架。核心收获编译依赖与关键配置项、主从与哨兵的验证命令、哨兵易错参数、Cluster 分片部署。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价