Redis配置哨兵模式
主从复制模式,它是属于 Redis
多机运行的基础,但这种模式本身存在一个致命的问题,当主节点奔溃之后,需要人工干预才能恢复 Redis
的正常使用。
我们需要一个自动的工具——Redis Sentinel
(哨兵模式)来把手动的过程变成自动的,让 Redis
拥有自动容灾恢复(failover
)的能力。
哨兵就相当于对主从服务器做一个监视的任务。一旦发现主服务器宕机了,就迅速启动相应的规则将某一台从服务器升级为主服务器,无需人工干预,更稳定更快。
Redis Sentinel
的最小分配单位是一主一从。
生产环境我们不会只启动一台 Sentinel
,因为如果启动一台 Sentinel
假如它不幸宕机的话,就不能提供自动容灾的服务了,不符合我们高可用的宗旨,所以我们会在不同的物理机上启动多个 Sentinel
来组成 Sentinel
集群,来保证 Redis
服务的高可用。
1、下载安装
cd /use/local
# 创建存放redsi文件夹
mkdir redis
# 下载
wget https://download.redis.io/releases/redis-6.2.6.tar.gz
# 解压
tar -zxvf redis-6.2.6.tar.gz
mv redis-6.2.6 redis-6
cd redis-6/src
#指定安装到目录
make PREFIX=/usr/local/redis/redis-6 install
2、修改配置
redis.conf
# 后台启动
daemonize yes
# 远程连接
bind 0.0.0.0
3、哨兵配置
1、复制出三份redis.conf和sentinel.conf
# 创建存放文件夹
cd /usr/local/redis
mkdir 7001 7002 7003
cd /usr/local/redis/redis-6
cp redis.conf /usr/local/redis/7001
cp redis.conf /usr/local/redis/7002
cp redis.conf /usr/local/redis/7003
cp sentinel.conf /usr/local/redis/7001
cp sentinel.conf /usr/local/redis/7002
cp sentinel.conf /usr/local/redis/7003
2、修改主节点配置文件
修改主节点配置redis.conf(7001)
cd /usr/local/redis/7001
vim redis.conf
# 修改端口号
port 7001
修改sentinel.conf
vim sentinel.conf
#修改port
port 27001
#开启守护线程
daemonize yes
#sentinel monitor <master-group-name> <ip> <port> <quorum>
#master-group-name是集群名称 quorum是需要同意主节点不可用的Sentinel的数量
sentinel monitor mymaster 192.168.101.123 7001 2
#主节点密码,如果有
#sentinel auth-pass <master-name> <password>
3、修改从节点配置文件
修改从节点配置redis.conf(7002、7003)
cd /usr/local/redis/7002
vim redis.conf
#修改port(7002、7003)
port 7002
#主从复制 replicaof <masterip> <masterport>
replicaof 192.168.101.123 7001
#主节点密码 masterauth <master-password>
#masterauth 主节点密码
修改sentinel.conf(27002、27003)
vim sentinel.conf
#修改port(27002、27003)
port 27002
#开启守护线程
daemonize yes
#sentinel monitor <master-group-name> <ip> <port> <quorum>
#master-group-name是集群名称 quorum是需要同意主节点不可用的Sentinel的数量
sentinel monitor mymaster 192.168.101.123 7001 2
#主节点密码,如果有
#sentinel auth-pass <master-name> <password>
4、启动哨兵模式
/usr/local/redis/redis-6/bin
# 分别启动主从节点
./redis-server ../../7001/redis.conf
./redis-server ../../7002/redis.conf
./redis-server ../../7003/redis.conf
# sentinel启动
./redis-sentinel ../../7001/sentinel.conf
./redis-sentinel ../../7002/sentinel.conf
./redis-sentinel ../../7003/sentinel.conf
5、测试哨兵模式
分别连接查看角色信息
./redis-cli -p 7001
127.0.0.1:7001> info
role:master
./redis-cli -p 7002
127.0.0.1:7002> info
role:slave
./redis-cli -p 7003
127.0.0.1:7003> info
role:slave
6、spring boot配置文件
spring:
redis:
sentinel:
master: mymaster
nodes:
- 192.168.101.123:27001
- 192.168.101.123:27002
- 192.168.101.123:27003
# password: 123321
# 连接超时时间
timeout: 60s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1m