Redis哨兵模式

前言

主从结构(Redis主从复制(读写分离)配置)下,Sentinel(哨兵)模式用于监控Redis集群中的Master状态的工具,是Redis高可用解决方法,哨兵可以监视一个或多个redis master服务,以及这些master服务的所有从服务;当某个master服务宕机后,会把这个master下的某个从服务升级为master来替代一宕机的master继续工作。

配置

1. 配置文件

在 redis 解压后的文件夹中找到 sentinel.conf ,我这里的位置在 /home/software/redis-5.0.5/sentinel.conf,然后将其复制到 /usr/local/redis/ 下,之后修改该文件,修改后的内容如下:

## 基础配置信息
port 26379 # 端口
pidfile "/usr/local/redis/sentinel/redis-sentinel.pid" #哨兵进程信息
dir "/usr/local/redis/sentinel" # 哨兵工作空间
daemonize yes # 后台运行
## bind 127.0.0.1 192.168.1.1 # 允许访问该节点的ip 
protected-mode no  # 设置为 no 表示任何ip都可以访问它
logfile "/usr/local/redis/sentinel/redis-sentinel.log" # 哨兵模式的相关日志存放位置

## 核心配置(mymaster 为主节点的别名,下面的配置中该名称需要统一)
# 监控的master  mymaster:master别名  192.168.1.191 6379:master的IP和端口  2:监控主节点的哨兵数量,当有两个哨兵认为主节点挂了,那主节点就会被认为真挂了
sentinel monitor mymaster 127.0.0.1 6379 2
# 配置master的密码  
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

主从模式下,主节点和所有的从节点,都应该按照上面的方式配置 sentinel.conf 文件(内容一模一样)。

2. 启动哨兵

使用如下命令启动哨兵,主从节点都需要执行该命令:

redis-sentinel sentinel.conf

3. 主节点如果宕机了

主节点master挂了之后,由于哨兵监控,剩余slave会进行选举,选举后其中一个成为master,当原来宕机的主节点master恢复运行之后,它会成为一个从节点slave。

4. 当原master宕机之后再恢复

当原master宕机之后再恢复,如果原master节点出现如下状态down:

 则可能是原master节点的 redis.conf 中的 masterauth 没有设置,按照如下方式设置一下

masterauth <master-password> # 配置 masterauth 主节点密码

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

  • 网络通信问题,要保证互相ping通,即内网互通。
  • 关闭防火墙,对外的端口开放(虚拟机中建议永久关闭防火墙云服务器需要保证内网互通)
  • 统一所有密码,通过逐台检查机器以防某个节点被遗漏。

5. 哨兵信息检查相关指令

redis-cli -p 26379 # 连接哨兵

连接哨兵之后,可以输入如下命令查看相关信息: 

# 查看mymaster下的master节点信息
sentinel master mymaster

# 查看mymaster下的slaves节点信息
sentinel slaves mymaster

# 查看mymaster下的哨兵节点信息
sentinel sentinels mymaster

6. 哨兵部署的一些约定

  • 哨兵节点要至少有三个节点或者奇数个数节点
  • 哨兵节点要分布式部署在不同的计算机节点
  • 一组哨兵节点只负责监听一组主从节点

7. 哨兵模式整合到 SpringBoot 中

在application.yml文件中配置如下:

spring:
  redis:
    database: 0 # redis的哪一个数据库
    password: didiok # redis密码
    sentinel:
      master: mymaster  # 主节点的别名
      nodes: 192.168.1.191:26379,192.168.1.192:26379,192.168.1.193:26379 # 所有哨兵所在的ip和端口号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值