6.redis-哨兵

Posted wang_peng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6.redis-哨兵相关的知识,希望对你有一定的参考价值。

一.实战

  1./myredis目录下放sentinel.conf文件

    1) sentinel26379.conf

    2) sentinel26380.conf

    3) sentinel26381.conf

  2.重点参数说明

bind 0.0.0.0               #服务监听位置
daemonize yes          #后台运行
protected-mode no    #安全保护模式
port 26379                 #端口
logfile "/myredis/26379.log"        #日志文件路径
pidfile /var/run/redis_26379.pid  #pid文件路径
dir /myredis                                 #工作目录

#设置要监控的master服务器,

#quorum 表示最少有几个哨兵认可客观下线同意故障迁移的法定票数
sentinel monitor mymaster 192.168.3.128 6379 2 
sentinel auth-pass mymaster 111111 #redisd的密码

    其他参数

sentinel auth-user <master-name> <username>

#指定多少毫秒之后,主节点没有答应哨兵,此时哨兵主观上认为主节点下线

sentinel down-after-milliseconds mymaster 30000

#允许并同步的slave个数,当Master挂了后,哨兵会选出新的Master

sentinel parallel-syncs mymaster 1

#故障转移的超时时间,超出设置的毫秒,表示故障转移失败

sentinel failover-timeout mymaster 180000

#配置当莫一事件发生时所需要执行的脚本

sentinel notification-script mymaster /var/redis/notify.sh

#客户端重新配置主节点参数脚本

sentinel client-reconfig-script mymaster /var/redis/reconfig.sh

  3.通用配置

    1) sentinel26379.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 26379
logfile "/myredis/26379.log"
pidfile /var/run/redis_26379.pid
dir /myredis
sentinel monitor mymaster 192.168.3.128 6379 2
sentinel auth-pass mymaster 111111

    2) sentinel26380.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 26380
logfile "/myredis/26380.log"
pidfile /var/run/redis_26380.pid
dir /myredis
sentinel monitor mymaster 192.168.3.128 6379 2
sentinel auth-pass mymaster 111111

    3) sentinel26381.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 26381
logfile "/myredis/26381.log"
pidfile /var/run/redis_26381.pid
dir /myredis
sentinel monitor mymaster 192.168.3.128 6379 2
sentinel auth-pass mymaster 111111

  4.先启动一主二从redis

查看 https://mp.csdn.net/mp_blog/creation/editor/129999647

  5.启动3个哨兵

    1) redis-sentinel /path/to/sentinel.conf或者redis-server /path/to/sentinel.conf --sentinel

    2) 实际,cd 到/myredis

redis-sentinel sentinel26379.conf --sentinel

redis-sentinel sentinel26380.conf --sentinel

redis-sentinel sentinel26381.conf --sentinel

  6.测试主从复制

    1) 在主中set k1 111111

    2) 在从机get k1 查看是否有数据

    3) 在哨兵机中 ps -ef | grep redis

  7.原有的master挂了

    1) redis-cli -a 111111 -p 6379 shutdown

    2) 两台从机数据是否完整

    3) 是否从剩下2台机器上选出新的master

    4) 之前的master机器重启回来谁会是master

二.运行流程和选举原理

    1) 当三个哨兵ping主机,都超过了down-after-milliseconds的值30秒,才能判断主机挂到了

    2) 根据Raft算法(先到先得)选举出领导哨兵

    2) 由领导哨兵进行故障迁移选出master,算法是:

      slave-priority或者replica-priority值越小级别越高,如果priority值相同,就判断offset

      replication offset 值越大级别越高, 如果offset 值相同,就判断run id

      Run ID     ASCII值越小级别越高

    3) slave no one 可以使从节点独立出来,并同过slaveof让其他节点成为器

三.使用建议

Redis-哨兵模式

参考技术A 一、哨兵 Sentinel    

1.作为Master的redis挂了,如何保证可用性,实现继续读写

2.哨兵:用于监控Redis集群中Master状态的工具,是Redis高可用的解决方案,哨兵可以监视一个或多个redis master服务,以及这些master服务的所有从服务;当某个master宕机后,会把这个master下的某个从服务升级为master服务来替代已宕机的master继续工作

3.master挂了以后,由于哨兵的监控,剩余的slave会进行选举,选举后其中一个成为master,当原来的master恢复后,他会成为slave。

4.需要注意:当master宕机后,重启redis需要重新设置宕机redis的masterauth

二、配置哨兵监控master

    1.创建并配置sentinel.conf(redis解压包包含):

        普通配置(哨兵的端口):

        port 26379

        pidfile "/usr/local/redis/sentinel/redis-sentinel.pid"

        dir "/usr/local/redis/sentinel"

        daemonize yes

        protected-mode no

        logfile "/usr/local/redis/sentinel/redis-sentinel.log"

    2.核心配置

        # 配置哨兵

        sentinel monitor mymaster 127.0.0.1 6379 2

        # 密码

        sentinel auth-pass <master-name> <password>

        # master被sentinel认定为失效的间隔时间

        sentinel down-after-milliseconds mymaster 30000

        # 剩余的slaves重新和新的master做同步的并行个数

        sentinel parallel-syncs mymaster 1

        # 主备切换的超时时间,哨兵要去做故障转移,这个时候哨兵也是一个进程,如果他没有去执行,超过这个时间后,会由其他的哨兵来处理

        sentinel failover-timeout mymaster 180000

    3.启动哨兵:redis-sentinel sentinel.conf

    4.部署约定

        哨兵节点要有至少三个或者奇数个节点

        哨兵分布式部署在不同的计算机节点

        一组哨兵只监听一组主从

    5.查看哨兵相关信息(redis-cli下)

        # 查看imooc-master下的master节点信息

        sentinel master imooc-master

        # 查看imooc-master下的slaves节点信息

        sentinel slaves imooc-master

        # 查看imooc-master下的哨兵节点信息

        sentinel sentinels imooc-master

三、springboot集成Redis哨兵配置

spring:

  redis:

    database: 1

    password: imooc

    sentinel:

      master: imooc-master #master节点名称

      nodes: 192.168.1.191:26379,192.168.1.192:26379,192.168.1.193:26379 #所有哨兵节点ip和端口

以上是关于6.redis-哨兵的主要内容,如果未能解决你的问题,请参考以下文章

Redis哨兵功能与集群搭建

Redis哨兵功能与集群搭建

redis主从复制,哨兵机制,缓存穿透缓存击穿缓存雪崩

Redis-分布式缓存

redis缓存

Redis学习缓存持久化哨兵模式