首页 > 数据库 >Redis安装之集群-哨兵模式(sentinel)模式

Redis安装之集群-哨兵模式(sentinel)模式

时间:2024-03-12 09:24:18浏览次数:27  
标签:mymaster ## Redis failover redis 模式 172.19 sentinel

官网说明:https://redis.io/docs/management/sentinel/

一、背景

Redis 主从复制模型在一定程度上解决了读写分离、容灾恢复、数据备份、水平扩容支撑高并发的问题,但仍存在单点故障问题,即 Mater 宕机后,集群将无法提供写服务。

二、方案原理

  1. 主从复制的问题在于 Mater 宕机后,Slave 不会取而代之。
  2. 引入 哨兵(sentinel) 角色,在后台监控 Mater 主机的健康状态,若 Mater 发生故障,根据哨兵投票数自动将一个 Slave 转换为 Mater,从而保证高可用。

哨兵作用

  • 主从监控:监控主从redis库运行是否正常
  • 消息通知:哨兵可以将故障转移的结果发送给客户端
  • 故障转移:master 宕机,自动根据投票数将 slave 切换为新 master
  • 配置中心:客户端通过连接哨兵来获得当前Redis服务的主节点地址

三、方案部署

3.1. 环境准备

  • 172.19.223.161(主) 端口:6379
  • 172.19.223.162(从1) 端口:6380
  • 172.19.223.163(从2) 端口:6381
  • 172.19.223.164(哨兵1)端口:26379
  • 172.19.223.165(哨兵2)端口:26380
  • 172.19.223.166(哨兵3)端口:26381

3.2. 环境部署

3.2.1. 配置一主二从模式

在 172.19.223.161、172.19.223.161、172.19.223.163上执行。
参考:https://www.cnblogs.com/DeepInThought/p/18059921 中的 《3.3 一主二从(命令版》。

3.2.2. 安装sentinel

在 172.19.223.164、172.19.223.165、172.19.223.166上执行。

## 下载
mkdir -p /opt/package
wget https://github.com/redis/redis/archive/7.2.4.tar.gz 

## 解压
tar -zxvf 7.2.4.tar.gz  -C ../
cd /opt/redis-7.2.4

## 编译
make && make install

## 复制配置文件
cp /opt/redis-7.2.4/sentinel.conf /opt/redis-7.2.4/sentinel.conf.bak
## 配置 172.19.223.164:26379
vi /opt/redis-7.2.4/sentinel.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 23679
logfile "/home/redis/sentinel/23679.log"
pidfile /home/redis/sentinel/23679.pid
dir /home/redis/sentinel/

## redis6.2以上才会解析主机名,且默认不启用
sentinel resolve-hostnames yes
## 配置监听主服务器。mymaster:自定义服务名称;172.19.223.161:监控主服务器;6379:端⼝;2:两个或以上哨兵认为主服务器不可⽤时,才会进⾏failover操作。
sentinel monitor mymaster 172.19.223.161 6379 2
##  配置服务密码。mymaster:服务名称(与上一致),269527:Redis服务器密码
sentinel auth-pass mymaster 269527
## 超过5s未连接上 master,则认为 master 已宕机
sentinel down-after-milliseconds mymaster 5000
## 超过30000ms未完成 failover,则认为本次 failover 失败
sentinel failover-timeout mymaster 30000

:wq
## 配置 172.19.223.165:26380
vi /opt/redis-7.2.4/sentinel.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 23680
logfile "/home/redis/sentinel/23680.log"
pidfile /home/redis/sentinel/23680.pid
dir /home/redis/sentinel/

## redis6.2以上才会解析主机名,且默认不启用
sentinel resolve-hostnames yes
## 配置监听主服务器。mymaster:自定义服务名称;172.19.223.161:监控主服务器;6379:端⼝;2:两个或以上哨兵认为主服务器不可⽤时,才会进⾏failover操作。
sentinel monitor mymaster 172.19.223.161 6379 2
##  配置服务密码。mymaster:服务名称(与上一致),269527:Redis服务器密码
sentinel auth-pass mymaster 269527
## 超过5s未连接上 master,则认为 master 已宕机
sentinel down-after-milliseconds mymaster 5000
## 超过30000ms未完成 failover,则认为本次 failover 失败
sentinel failover-timeout mymaster 30000

:wq
## 配置 172.19.223.166:26381
vi /opt/redis-7.2.4/sentinel.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 23681
logfile "/home/redis/sentinel/23681.log"
pidfile /home/redis/sentinel/23681.pid
dir /home/redis/sentinel/

## redis6.2以上才会解析主机名,且默认不启用
sentinel resolve-hostnames yes
## 配置监听主服务器。mymaster:自定义服务名称;172.19.223.161:监控主服务器;6379:端⼝;2:两个或以上哨兵认为主服务器不可⽤时,才会进⾏failover操作。
sentinel monitor mymaster 172.19.223.161 6379 2
##  配置服务密码。mymaster:服务名称(与上一致),269527:Redis服务器密码
sentinel auth-pass mymaster 269527
## 超过5s未连接上 master,则认为 master 已宕机
sentinel down-after-milliseconds mymaster 5000
## 超过30000ms未完成 failover,则认为本次 failover 失败
sentinel failover-timeout mymaster 30000

:wq

3.2.3. 启动sentinel

## 在 172.19.223.164 上执行
./redis-server /opt/redis-7.2.4/sentinel.conf --sentinel
## 在 172.19.223.165 上执行
./redis-server /opt/redis-7.2.4/sentinel.conf --sentinel
## 在 172.19.223.166 上执行
./redis-server /opt/redis-7.2.4/sentinel.conf --sentinel

四. SpringBoot集成哨兵模式

## 配置文件示例
spring:
  redis:
    lettuce:
      pool:
        max-idle: 10   # 连接池中的最大空闲连接
        max-wait: 500   # 连接池最大阻塞等待时间(使用负值表示没有限制)
        max-active: 8   # 连接池最大连接数(使用负值表示没有限制)
        min-idle: 0   # 连接池中的最小空闲连接
    sentinel:
      master: mymaster
      nodes:
        - 172.19.223.164:26380
        - 172.19.223.165:26381
        - 172.19.223.166:26382

标签:mymaster,##,Redis,failover,redis,模式,172.19,sentinel
From: https://www.cnblogs.com/DeepInThought/p/18067155

相关文章

  • 保护模式
    一、理解保护模式  大多数现代操作系统(包括Windows9X/NT/XP和Linux等)都是多任务的,CPU的保护模式是操作系统实现多任务的基础。了解保护模式的底层原理对学习操作系统有着事半功倍的作用。  保护模式是为了实现多任务而设计的,其名称中的“保护”就是保护任务环境中各个人物......
  • 观察者模式
     观察者:publicinterfaceObserver{voidupdate(floattemperature,floathumidity,floatpressure);}主体;publicinterfaceSubject{publicvoidregisterObserver(Observerobserver);publicvoidremoveObserver(Observerobserver);......
  • php反序列化和redis未授权
    1、centos系统安装http,php,redis服务更新yum源httpphpredis2、使用redis未授权漏洞写入phpinfo3、配合gopher协议ssrf漏洞向服务器写入任意数据4、演示ssh免密码登录5、画图解释PHP反序列化漏洞的原理6、预习一下java反序列化漏洞,包括继承,重写等概念......
  • Redis安装之Redis7主从复制(replica)安装(Linux版)
    官网说明:https://redis.io/docs/management/replication/一.背景单机部署存在单点故障及数据丢失问题,为了实现读写分离容灾恢复数据备份水平扩容支撑高并发等功能,Redis可基于主从复制的特性搭建集群。二.方案原理2.1.读写分离Master主机负责写操作,Slave从机负......
  • k02_redis命令
    链接redis方式一:redis-cli-h192.168.88.129-p6379-aroot方式二:redis-cli-h192.168.88.129-p6379AUTHrootredis通用命令help@string 查看帮助keys* 查询所有keyMSETkvk1v1 批量插入exists 确定一个键是否存在常见常见命令信息help@s......
  • 11_redis事务
    redis事务数据库事务所有的数据库操作都必须一次性完成,要么成功,要么失败。redis事务可以一次执行多个命令,本质上是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不被其他命令插入,不许加载(不许被不属于该集合的命令插入)。开启:以MULTI开始一个事务入......
  • redis常用命令
    1、启动Redis>redis-server[--port6379]如果命令参数过多,建议通过配置文件来启动Redis。>redis-server[xx/xx/redis.conf]6379是Redis默认端口号。2、连接Redis>./redis-cli[-h127.0.0.1-p6379]3、停止Redis>redis-clishutdown >killredis-pid以上......
  • [springboot] SpringBoot启动成功后因actuator健康检测报:Redis health check failed/
    0序背景:项目中引入了spring-boot-starter-actuator健康检测模块<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>1问题描述确认微服务刚启动后,因K8S集群周期性定时(默认每隔1......
  • 基于redis做分布式锁
    1.setnx其实是setkeynx,做分布式锁的问题是担心获取到锁的那个线程还没执行del得时候挂了,key会永久存在,可以给key加上expire,其实就是setnxkeyexxxxnx但如何确定expire多大呢?没法确定,所以一般在expire之前做一个续期操作,用独立线程做2.另一种做法是还是用setnx,如果获取不......
  • Redis 故障转移、高可用方案,都在这了!
    Redis大家都不陌生,就算是没用过,也都听说过了。作为最广泛使用的KV内存数据库之一,在当今的大流量时代,单机模式略显单薄,免不了要有一些拓展的方案。笔者下文会对各种方案进行介绍,并且给出场景,实现等等概述,还会提到一些新手常见的误区。正文先从基础的拓展方式开始,这样更便于理......