# Redis的哨兵Sentinel怎么部署 ## 一、Sentinel概述 Redis Sentinel(哨兵)是Redis官方提供的高可用性解决方案,主要功能包括: 1. **监控**:持续检查主从节点是否正常运行 2. **通知**:当被监控的Redis实例出现问题时,能通过API通知管理员 3. **自动故障转移**:当主节点故障时,能自动将从节点提升为主节点 4. **配置提供者**:为客户端提供服务发现功能,返回当前的主节点地址 ### 核心概念 - **主观下线(SDOWN)**:单个Sentinel实例认为某个节点不可用 - **客观下线(ODOWN)**:多个Sentinel实例达成共识认为主节点不可用 - **故障转移**:从从节点中选举新的主节点的过程 ## 二、部署前准备 ### 环境要求 1. Redis 2.8+版本(推荐使用最新稳定版) 2. 至少3个Sentinel节点(生产环境推荐) 3. 服务器时钟同步(NTP服务) 4. 网络互通,防火墙开放相关端口 ### 基础架构示例
主节点: 192.168.1.10:6379 从节点1: 192.168.1.11:6379 从节点2: 192.168.1.12:6379
Sentinel1: 192.168.1.10:26379 Sentinel2: 192.168.1.11:26379 Sentinel3: 192.168.1.12:26379
## 三、详细部署步骤 ### 1. 安装Redis 所有节点执行: ```bash wget http://download.redis.io/releases/redis-6.2.6.tar.gz tar xzf redis-6.2.6.tar.gz cd redis-6.2.6 make && make install
主节点配置(redis.conf):
bind 0.0.0.0 port 6379 daemonize yes pidfile /var/run/redis_6379.pid logfile "/var/log/redis_6379.log" requirepass your_strong_password masterauth your_strong_password # 主从认证密码
从节点配置:
replicaof 192.168.1.10 6379 masterauth your_strong_password
启动所有Redis实例:
redis-server /path/to/redis.conf
验证主从状态:
redis-cli -h 192.168.1.10 info replication
sentinel.conf基础配置(所有Sentinel节点):
port 26379 daemonize yes logfile "/var/log/redis/sentinel.log" pidfile "/var/run/redis-sentinel.pid" # 监控配置格式:sentinel monitor <master-name> <ip> <port> <quorum> sentinel monitor mymaster 192.168.1.10 6379 2 # 认证密码 sentinel auth-pass mymaster your_strong_password # 故障判定时间(毫秒) sentinel down-after-milliseconds mymaster 30000 # 故障转移超时时间 sentinel failover-timeout mymaster 180000 # 并行同步的从节点数量 sentinel parallel-syncs mymaster 1
重要参数说明: - quorum
:判定客观下线所需的Sentinel同意数量 - down-after-milliseconds
:节点响应超时阈值 - parallel-syncs
:故障转移后同时从新主节点同步数据的从节点数
redis-sentinel /path/to/sentinel.conf
或使用Redis-server启动:
redis-server /path/to/sentinel.conf --sentinel
查看Sentinel信息:
redis-cli -p 26379 info sentinel
检查监控的主节点:
redis-cli -p 26379 sentinel master mymaster
# 禁止外部执行危险命令 rename-command CONFIG "" rename-command SENTINEL "" # 设置Sentinel密码 requirepass "sentinel_password" sentinel auth-pass mymaster your_strong_password
# 绑定特定网络接口 bind 192.168.1.10 # 保护模式 protected-mode yes # 通知脚本 sentinel notification-script mymaster /path/to/notify.sh
sentinel monitor othermaster 192.168.1.20 6379 2 sentinel auth-pass othermaster other_password
# 连接到主节点 redis-cli -h 192.168.1.10 DEBUG sleep 30
# 查看Sentinel日志 tail -f /var/log/redis/sentinel.log # 查看新主节点 redis-cli -p 26379 sentinel get-master-addr-by-name mymaster
原主节点恢复后会自动成为新主节点的从节点
节点数量:
配置一致性:
监控建议:
# 监控指标示例 redis-cli -p 26379 info | grep -E "uptime|connected_slaves|master_link_status"
客户端实现:
[ERR] Not enough good replicas to failover
解决方案:增加从节点数量或调整parallel-syncs
参数
配置优化:
# 最少从节点数量 min-replicas-to-write 1 min-replicas-max-lag 10
手动触发故障转移:
redis-cli -p 26379 sentinel failover mymaster
添加新的监控:
redis-cli -p 26379 sentinel monitor newmaster 192.168.2.10 6379 2
移除监控:
redis-cli -p 26379 sentinel remove oldmaster
Redis Sentinel部署关键点: 1. 奇数个Sentinel节点分布在不同的物理机 2. 合理设置quorum和超时参数 3. 主从节点配置正确的认证信息 4. 完善的监控和告警机制
通过以上步骤,可以构建一个高可用的Redis集群,能够自动处理节点故障,确保服务持续可用。实际生产环境中,建议结合Kubernetes等容器编排系统实现更弹性的部署方案。
注意:本文基于Redis 6.2版本编写,不同版本配置可能略有差异。部署前请务必测试验证。 “`
这篇文章共计约2400字,涵盖了Redis Sentinel部署的完整流程,包括基础配置、高级优化、故障处理和生产建议等内容,采用Markdown格式编写,可直接用于技术文档发布。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。