redis-sentinel-哨兵集群-简单部署
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
Redis Sentinel的主要功能
Sentinel 的主要功能包括 主节点存活检测、主从运行情况检测、自动故障转移 (failover)、主从切换。Redis 的 Sentinel 最小配置是 一主一从。
Redis 的 Sentinel 系统可以用来管理多个 Redis 服务器,该系统可以执行以下四个任务:
监控
Sentinel 会不断的检查 主服务器 和 从服务器 是否正常运行。
通知
当被监控的某个 Redis 服务器出现问题,Sentinel 通过 API 脚本 向 管理员 或者其他的 应用程序 发送通知。
自动故障转移
当 主节点 不能正常工作时,Sentinel 会开始一次 自动的 故障转移操作,它会将与 失效主节点 是 主从关系 的其中一个 从节点 升级为新的 主节点,并且将其他的 从节点 指向 新的主节点。
配置提供者
在 Redis Sentinel 模式下,客户端应用 在初始化时连接的是 Sentinel 节点集合,从中获取 主节点 的信息。
主观下线和客观下线
默认情况下,每个 Sentinel 节点会以 每秒一次 的频率对 Redis 节点和 其它 的 Sentinel 节点发送 PING 命令,并通过节点的 回复 来判断节点是否在线。
主观下线
主观下线 适用于所有 主节点 和 从节点。如果在 down-after-milliseconds 毫秒内,Sentinel 没有收到 目标节点 的有效回复,则会判定 该节点 为 主观下线。
客观下线
客观下线 只适用于 主节点。如果 主节点 出现故障,Sentinel 节点会通过 sentinel is-master-down-by-addr 命令,向其它 Sentinel 节点询问对该节点的 状态判断。如果超过 <quorum> 个数的节点判定 主节点 不可达,则该 Sentinel 节点会判断 主节点 为 客观下线。
架构图如下
master 、slave配置文件内容
# cat 6380/redis-6380.conf port 6380 logfile "" #调试时可打开日志 #logfile "./redis-6380" #守护进程模式 daemonize yes bind 127.0.0.1 # cat 6381/redis-6381.conf port 6381 logfile "./redis-6381" daemonize yes replicaof 127.0.0.1 6380 bind 127.0.0.1
sentinel 配置文件内容
cat 26379/redis-sentinel.conf port 26379 # 守护进程模式 daemonize yes pidfile /var/run/redis-sentinel.pid logfile "" #调试时可打开日志 #logfile /var/log/redis/sentinel.log dir /tmp # 哨兵监控这个master,在至少quorum个哨兵实例都认为master down后把master标记为odown # (objective down客观down;相对应的存在sdown,subjective down,主观down)状态。 # slaves是自动发现,所以你没必要明确指定slaves。 sentinel monitor mymaster 127.0.0.1 6380 2 # master或slave多长时间(默认30秒)不能使用后标记为s_down状态。 sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 # 若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。 sentinel failover-timeout mymaster 180000 sentinel deny-scripts-reconfig yes cat 26380/redis-sentinel.conf port 26380 daemonize yes pidfile /var/run/redis-sentinel.pid logfile /var/log/redis/sentinel.log dir /tmp sentinel monitor mymaster 127.0.0.1 6380 2 sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 180000 sentinel deny-scripts-reconfig yes bind 127.0.0.1 cat 26381/redis-sentinel.conf port 26381 daemonize yes pidfile /var/run/redis-sentinel.pid logfile /var/log/redis/sentinel.log dir /tmp sentinel monitor mymaster 127.0.0.1 6380 2 sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 180000 sentinel deny-scripts-reconfig yes bind 127.0.0.1
启动各服务
redis-server 6380/redis-6380.conf redis-server 6381/redis-6381.conf redis-server 26379/redis-sentinel.conf --sentinel redis-server 26380/redis-sentinel.conf --sentinel redis-server 26381/redis-sentinel.conf --sentinel #启动后配置文件会被修改
验证集群状态
#连接到sentinel节点 redis-cli -h 127.0.0.1 -p 26381 #查询主节点状态 127.0.0.1:26381> SENTINEL get-master-addr-by-name mymaster 1) "127.0.0.1" 2) "6380" 127.0.0.1:26381> SENTINEL slaves mymaster 127.0.0.1:26381> SENTINEL sentinels mymaster #第一个将提供有关连接到主服务器的从服务器的类似信息, #第二个将提供有关其他Sentinel的信息。 #查询哨兵状态 127.0.0.1:26381> info sentinel # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:name=mymaster,status=ok,address=127.0.0.1:6380,slaves=1,sentinels=3 #模拟故障 关闭主节点进程 #再次查询 127.0.0.1:26381> SENTINEL get-master-addr-by-name mymaster 1) "127.0.0.1" 2) "6381" #成功切换 #验证成功
参考资料
https://www.cnblogs.com/bingshu/p/9776610.html 博客
https://redis.io/topics/sentinel 官网资料
- redis主从集群搭建及容灾部署(哨兵sentinel)
- redis主从集群搭建及容灾部署(哨兵sentinel)
- [置顶] 搭建一个简单的redis-sentinel(哨兵机制)集群
- redis主从集群搭建及容灾部署(哨兵sentinel)
- redis主从集群搭建及容灾部署(哨兵sentinel)
- redis主从集群搭建及容灾部署(哨兵sentinel)
- Redis主从集群搭建及容灾部署(哨兵sentinel)
- redis主从集群搭建及容灾部署(哨兵sentinel)
- redis主从集群搭建及容灾部署(哨兵sentinel)
- 使用Docker Compose部署基于Sentinel的高可用Redis集群
- 搭建redis-sentinel(哨兵机制)集群
- 基于Sentinel(哨兵)搭建实现Redis高可用集群
- 搭建redis-sentinel(哨兵机制)集群
- 架构分布式____Redis集群架构(sentinel哨兵模式集群方案)
- 基于sentinel(哨兵)实现redis集群的管理
- CentOS 7.3 Sentinel实现Redis集群高可用部署
- Springboot整合Redis-sentinel哨兵模式集群
- Redis-sentinel哨兵模式集群方案配置
- redis集群部署sentinel--两台实现
- Redis 3.2.8 集群模式+Sentinel多Master部署