01-哨兵模式概述

  • 如果master宕机, 我们该怎么办?
  • ①关闭所有slave
  • ②选举新的master, 建立新的主从结构
  • 存在的问题
  • ①关闭期间, 谁来提供数据服务
  • ②选举新master的标准是什么
  • ③原来的master恢复了怎么办
  • 哨兵模式


redis哨兵自动掉线 redis哨兵宕机怎么办_redis



  • sentinel是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制 选择新的master并将所有slave连接到新的master。
  • 作用
  • 监控:监控master和slave 不断的检查master和slave是否正常运行 master存活检测、master与slave运行情况检测
  • 通知(提醒) 当被监控的服务器出现问题时,向其他(哨兵间,客户端)发送通知
  • 自动故障转移 断开master与slave连接,选取一个slave作为新的master,将其他slave连接新的master,并告 知客户端新的服务器地址

02-哨兵模式配置

  • 配置说明
# 设置哨兵监听的主服务器信息,
# sentinel_number表示参与投票的哨兵数量,哨兵总数量的一半加1
sentinel monitor <master_name> <master_host> <master_port> <sentinel_number>

# 设置判定服务器宕机时长,该设置控制是否进行主从切换,单位:毫秒
sentinel down-after-milliseconds <master_name> <million_seconds>

# 设置故障切换的最大超时时间,单位:毫秒
sentinel failover-timeout <master_name> <million_seconds>

# 设置主从切换后,同时进行数据同步的slave数量,数值越大,要求网络资源越高,同步时间越长
sentinel parallel-syncs <master_name> <sync_slave_number>

03-哨兵模式搭建及演示

  • 需求
  • 1个主机(6379), 2个从机(26379, 26380), 3个哨兵(36379, 36380, 36381).
  • redis-6379.conf
port 6379
daemonize no
# logfile "log-6379.log"
maxclients 100000
timeout 0
loglevel debug


# RDB设置
# 1.设置rdb文件名
dbfilename "dump-6379.rdb"

# 2.设置rdb文件存储路径
dir /usr/local/redis-6379/data

# 3.设置存储rdb时是否压缩数据
rdbcompression no

# 4.设置读写文件过程是否进行RDB格式校验
rdbchecksum no


# 5.后台存储过程中如果出现错误现象,是否停止保存操作
stop-writes-on-bgsave-error yes


# 6.每隔10秒检测一次,有2个数据变化就执行bgsave指令
save 10 2


# AOF设置
# 1.开启aof持久化功能
appendonly yes
# 2.设置aof文件名
appendfilename 'appendonly-6379.aof'
# 4.设置aof策略
appendfsync everysec


# 5.当前aof文件大小达到64mb,自动触发AOF重写
auto-aof-rewrite-min-size 64mb
# 5.当前aof文件大小比之前aof文件大小增加了100%,自动触发AOF重写
auto-aof-rewrite-percentage 100


protected-mode no
  • redis-26379.conf/redis-26380.conf
port 26379
daemonize no
# logfile "log-26379.log"
maxclients 100000
timeout 0
loglevel debug


# RDB设置
# 1.设置rdb文件名
dbfilename "dump-26379.rdb"

# 2.设置rdb文件存储路径
dir /usr/local/redis-26379/data

# 3.设置存储rdb时是否压缩数据
rdbcompression no

# 4.设置读写文件过程是否进行RDB格式校验
rdbchecksum no


# 5.后台存储过程中如果出现错误现象,是否停止保存操作
stop-writes-on-bgsave-error yes


# 6.每隔10秒检测一次,有2个数据变化就执行bgsave指令
save 10 2


# AOF设置
# 1.开启aof持久化功能
appendonly yes
# 2.设置aof文件名
appendfilename 'appendonly-26379.aof'
# 4.设置aof策略
appendfsync everysec


# 5.当前aof文件大小达到64mb,自动触发AOF重写
auto-aof-rewrite-min-size 64mb
# 5.当前aof文件大小比之前aof文件大小增加了100%,自动触发AOF重写
auto-aof-rewrite-percentage 100


protected-mode no


#主机ip和主机port
slaveof 192.168.216.110 6379
  • redis-36379.conf/redis-36380.conf/redis-36381.conf
# 设置哨兵的端口
port 36379
daemonize no
dir /usr/local/redis-36379/data

# 设置哨兵监控的master信息:host、port、参与投票的哨兵数量
sentinel monitor mymaster 192.168.216.110 6379 2
# master宕机5秒后,进行主从切换
sentinel down-after-milliseconds mymaster 5000
# master宕机3分钟后,如果主从切换还没成功,那么就彻底失败
sentinel failover-timeout mymaster 180000
# 主从切换后,数据同步的从机数量为1
sentinel parallel-syncs mymaster 1
# 主从切换过程中,如果有问题发生,那么就终止切换
sentinel deny-scripts-reconfig yes


# 设置master的访问密码
# sentinel auth-pass mymaster root
  • ④启动主机

redis哨兵自动掉线 redis哨兵宕机怎么办_redis_02



  • ⑤启动从机


redis哨兵自动掉线 redis哨兵宕机怎么办_服务器_03


  • ⑥启动哨兵

redis哨兵自动掉线 redis哨兵宕机怎么办_服务器_04


  • ⑦查看主机信息

redis哨兵自动掉线 redis哨兵宕机怎么办_服务器_05



  • ⑧查看从机信息

redis哨兵自动掉线 redis哨兵宕机怎么办_服务器_06


  • ⑨查看哨兵信息

redis哨兵自动掉线 redis哨兵宕机怎么办_数据库_07



  • ⑩主机宕机, 查看主从切换
  • 让redis-6379宕机

04-哨兵模式工作流程

  • ①监控: 哨兵监控获取主从服务器的状态

redis哨兵自动掉线 redis哨兵宕机怎么办_redis_08



  • ②通知: 发现主从机有异常, 通知其他哨兵

redis哨兵自动掉线 redis哨兵宕机怎么办_数据库_09



  • ③故障转移


redis哨兵自动掉线 redis哨兵宕机怎么办_服务器_10


  • 主观下线: 一个哨兵发现有问题
  • 客观下线: 所有哨兵发现有问题


redis哨兵自动掉线 redis哨兵宕机怎么办_服务器_11



  • 选举哨兵代表


redis哨兵自动掉线 redis哨兵宕机怎么办_redis哨兵自动掉线_12



  • 哨兵代表根据算法选举新的主机
  • 自动建立新的主机和从机结构