美文网首页
Java学习笔记--Redis的哨兵模式

Java学习笔记--Redis的哨兵模式

作者: Allens_Lee | 来源:发表于2020-10-26 10:00 被阅读0次

哨兵模式

哨兵:sentinel

主从架构中,master节点挂掉后,slave节点依旧不能转变为master节点,这样整个redis集群依然不具有写操作,那么该如何解决这个问题呢?

此时就可以配置一个哨兵集群,用户监控redis集群

一、哨兵配置文件: sentinel.conf

<!-- 绑定一个对外(公网)暴露的ip,以保证在一个特定的计算机节点进行访问 -->
bind 127.0.0.1 192.168.1.1

<!-- 保护模式是否开启,为no时保证其他节点都能访问这个哨兵 -->
protected-mode no

<!-- 哨兵的端口,默认26379 -->
port 26379

<!-- 哨兵是否后台运行 -->
daemonize yes

<!-- pid -->
pidfile /var/run/redis-sentinel.pid

<!-- 哨兵的日志文件路径 -->
logfile /usr/local/redis/sentinel/redis-sentinel.log

<!-- 哨兵的工作空间 -->
dir /usr/local/redis/sentinel

<!-- 
核心配置
    allen-master是给哨兵给master节点起的别称,可自定义
    127.0.0.1为redis的master的ip
    6379为redis的master的端口号
    2为quorum,表示至少有2个哨兵ping不通master时,即表示master节点挂掉了
 -->
sentinel monitor allen-master 127.0.0.1 6379 2

<!-- 设置master节点的密码 -->
sentinel auth-pass allen-master allen_password

<!-- 哨兵为master节点设置的一个被认为失效的一个时长 -->
sentinel down-after-milliseconds allen-master 30000

<!-- 设置slave节点变为master节点后,向其他slave节点同步数据的并行同步的数量,1表示一次只向一个slave节点同步,如果为2则表示一次向2个slave节点同步 -->
sentinel parallel-syncs allen-master 1

<!-- 主备切换的超时时间,如果切换超时,则会由集群中的其他哨兵进行主备切换,默认为3分钟 -->
sentinel failover-timeout allen-master 180000

二、启动redis的哨兵
redis-sentinel sentinel.conf
  1. 当master节点挂掉后,所有的slave节点会进行选举,选举出来一个节点作为新的master节点,同时会想其他slave节点同步数据,并行同步的slave节点的数量可以在sentinel.conf配置文件中配置。
  2. 当旧的master节点重启后,会自动转为slave节点,选举出来的master节点不发生变化。

一般master数据无法同步给slave的方案检查为如下:

  1. 网络通信问题,要保证互相ping通,内网互通。
  2. 关闭防火墙,对应的端口开发(虚拟机中建议永久关闭防火墙,云服务器的话需要保证内网互通)。
  3. 统一所有的密码,不要漏了某个节点没有设置。
三、使用哨兵相关的命令查看哨兵的信息
<!-- 打开哨兵控制台 -->
redis-cli -p 26379

<!-- 查看allen-master下的master节点信息 -->
sentinel master allen-master

<!-- 查看allen-master下的slave节点信息 -->
sentinel slaves allen-master

<!-- 查看allen-master下的哨兵节点信息 -->
sentinel sentinels allen-master

四、部署约定
  1. redis的slave节点最好设置为奇数,最少节点数为3个,经典的配置为一主三从。
    quorum数为:节点数 / 2 + 1

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

  3. 一组哨兵只监听一组主从。

五、springboot整合哨兵
redis:
    <!-- Redis 单机单实例 -->
    <!-- database:1 -->
    <!-- host:192.168.1.190 -->
    <!-- port:6379 -->
    <!-- password:allen -->

    <!-- Redis 哨兵模式 -->
    database:1
    password:allen
    sentinel:
        master:allen-master
        nodes:192.168.1.191:26379,192.168.1.192:26379,192.168.1.193:26379

相关文章

网友评论

      本文标题:Java学习笔记--Redis的哨兵模式

      本文链接:https://www.haomeiwen.com/subject/hoxamktx.html