Redis配置哨兵模式

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
###普通配置

port 27001
# 保护模式关闭,这样其他服务起就可以访问此台redis
protected-mode no
# 哨兵模式是否后台启动,默认no,改为yes
daemonize yes
pidfile /var/run/redis-sentinel.pid
# log日志保存位置
logfile /usr/local/redis/sentinel/redis-sentinel.log
# 工作目录
dir /usr/local/redis/sentinel

###核心配置
# 核心配置。
# 第三个参数:哨兵名字,可自行修改。(若修改了,那后面涉及到的都得同步) 
# 第四个参数:master主机ip地址
# 第五个参数:redis端口号
# 第六个参数:哨兵的数量。比如2表示,当至少有2个哨兵发现master的redis挂了,
#               那么就将此master标记为宕机节点。
#               这个时候就会进行故障的转移,将其中的一个从节点变为master
sentinel monitor mymaster 192.168.101.123 7001 2
# master中redis的密码
sentinel auth-pass mymaster 123456
# 哨兵从master节点宕机后,等待多少时间(毫秒),认定master不可用。
# 默认30s,这里为了测试,改成10s
sentinel down-after-milliseconds mymaster 10000
# 当替换主节点后,剩余从节点重新和新master做同步的并行数量,默认为 1
sentinel parallel-syncs mymaster 1
# 主备切换的时间,若在3分钟内没有切换成功,换另一个从节点切换
sentinel failover-timeout mymaster 180000
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启动(Windows启动命令 redis-server.exe sentinel.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
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值