一、哨兵模式概述
哨兵(Sentinel)模式是一种特殊的模式,类似于springcloud的注册中心,哨兵是一个独立的进程,作为进程,它会独立运行,他可以有多个哨兵。其原理是哨兵通过发送心跳包,等待Redis服务器响应,从而监控运行的多个Redis实例。如图:
提示:本次哨兵模式基于主从架构,主从架构搭建如下:redis主从复制
二、搭建哨兵架构(windows)
1、 在redis-master(redis解压根目录)目录下新建sentinel26379.conf,写入如下:
#指定哨兵进程的端口号
port 26379
# sentinel monitor: 为哨兵模式的固定写法
# mymaster: 为自定义主节点名称
# 127.0.0.1: 主节点ip 6380: 端口
# 1:指定多少个哨兵进程
sentinel monitor mymaster 127.0.0.1 6379 1
sentinel auth-pass mymaster <你的主节点密码>
# 开放访问
bind 0.0.0.0
2、再次新建一个sentinel26380.conf
#指定哨兵进程的端口号
port 26380
# sentinel monitor: 为哨兵模式的固定写法
# mymaster: 为自定义主节点名称
# 127.0.0.1: 主节点ip 6380: 端口
# 1:指定多少个哨兵进程
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel auth-pass mymaster <你的主节点密码>
# 开放访问
bind 0.0.0.0
3、启动sentinel服务:
#分别在redis-master,redis-slave1,redis-slave2下启动
redis-server.exe redis-windows-conf
redis-server.exe redis-windows-conf
redis-server.exe redis-windows-conf
#启动sentinel服务
redis-server.exe sentinel26379.conf --sentinel
redis-server.exe sentinel26380.conf --sentinel
4、测试
当我们把master,sentinel哨兵就会启动,以投票的方式选举出新的master节点
5、springboot连接哨兵模式下的redis
由于redis配置了sentinel哨兵模式,所以不确定哪个节点为主节点,需要在yaml更改如下配置
spring:
redis:
sentinel:
#您配置sentinel.conf时给主节点起的名称,我这里起的是 mymaster
master: <您配置sentinel.conf时给主节点起的名称(mymaster)>
#连接的不是具体的redis注解,书写的是多个哨兵节点
nodes: 127.0.0.1:26379,127.0.0.1:26380
# Redis数据库索引(默认为0)
database: 0
# Redis服务器地址
host: 39.105.28.163 #启动哨兵时去掉该配置
# Redis服务器连接端口
port: 6379 #启动哨兵时去掉该配置
# Redis服务器连接密码(默认为空)
password: xxxx
# 连接超时时间(毫秒)
timeout: 5000
jedis:
pool:
# 连接池最大连接数(使用负值表示没有限制)
max-active: 8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1
# 连接池中的最大空闲连接
max-idle: 8
# 连接池中的最小空闲连接
min-idle: 0