首页 > 数据库 >Redis哨兵模式

Redis哨兵模式

时间:2023-07-02 23:12:30浏览次数:54  
标签:0.1 Redis redis 模式 哨兵 6379 conf

1. 原理

Redis 哨兵模式是指在 Redis 集群中,有一组专门的进程(即哨兵进程)负责监控主节点和从节点的状态,并在发现故障时自动进行故障转移,以保证 Redis 集群的高可用性。

Redis 提供了哨兵的命令,哨兵命令是一个独立的进程,哨兵进程会周期性地向主节点和从节点发送 PING 命令来检测它们的状态,当哨兵进程发现 master主节点 不可用时,根据投票数自动将某一个 slave 转换 master,然后通过消息订阅模式通知其它 slave,让它们切换到新的 master主节点 上,从而实现故障转移。然而,一个哨兵进程对 Redis 服务器进行监控,可能会出现问题,为此,我们可以使用多哨兵进行监控。哨兵进程还可以监控 Redis 集群的配置变化,并在配置变化时通知客户端进行相应的调整。

哨兵模式三大任务:

  • 监控
  • 提醒
  • 自动故障迁移

2. 搭建示例

通俗来说,Redis 哨兵模式就是从机上位的自动版。以之前的一篇Redis主从复制,Redis从机上位的文章为示例:Redis 的主从复制

2.1. 在同一台服务器上搭建三台 Redis 服务

  1. 由于我是通过解压 Redis 包,然后用 make 编译生成的 Redis 服务,所以是在 Redis 解压后的根目录下创建的相关配置文件
  2. 提供三份 Redis 配置文件:redis6379.confredis6380.confredis6381.conf
  3. 修改三份配置文件,以 redis6379.conf 为例:
    bind 127.0.0.1
    port 6379
    pidfile /var/run/redis_6379.pid
    logfile "6379.log"
    dbfilename dump6379.rdb
  4. 使用上面的三个配置文件,启动三个 Redis 服务:
    redis-server redis6379.conf &
    redis-server redis6380.conf &
    redis-server redis6381.conf &
  5. 通过 redis 客户端分别连接三台 redis 服务
    redis-cli -h 127.0.0.1 -p 6379
    redis-cli -h 127.0.0.1 -p 6380
    redis-cli -h 127.0.0.1 -p 6381
  6. 默认启动都是主服务器
    查看这三台 redis 服务在集群中的主从角色 info replication,默认情况下,所有的 redis 服务都是主机,即都能写和读,但是都还没有从机。
  7. 设置主从关系:设从不设主
    6380 上执行:slaveof 127.0.0.1 6379
    6381 上执行:slaveof 127.0.0.1 6379

image
image

2.2. 提供哨兵配置文件

在 redis 安装目下创建配置文件:redis_sentinel.conf,跟上面的 redis6379.conf 文件放在同一个目录下。

在文件内输入:sentinel monitor dc-redis 127.0.0.1 6379 1

  • 127.0.0.1 是监控主机的 IP 地址
  • 6379 是监控主机的 port 端口
  • 1 为得到哨兵程序的投票数(当哨兵投票数大于或者等于此数时切换主从关系,该从机将自动升级为主机,其他从机将指向这个刚刚升级的从机)

2.3. 启动哨兵服务

使用 redis 提供的 redis-sentinel 命令来启动哨兵服务,并且使用上面配置的 redis_sentinel.conf 配置文件。

执行命令:redis-sentinel redis_sentinel.conf

Redis 提供的可执行程序:
image

前台启动哨兵服务示意图:
image

当前运行的进程:
image

2.4. 主机宕机

关闭 6379 服务:redis-cli -h 127.0.0.1 -p 6379 shutdown
image

哨兵程序自动选择从机上位:
image
image

2.5. 之前主机恢复:自动从属于新的主机

重启 6379 服务:redis-server redis6379.conf &
客户端连接 6379:redis-cli -h 127.0.0.1 -p 6379

image

3. Redis 哨兵模式的优缺点

优点:

  • Redis 哨兵模式的优点是可以提高 Redis 集群的可用性和稳定性。

缺点:

  • 缺点是会增加系统的复杂度和资源消耗。

因此,在选择 Redis 哨兵模式时需要根据实际情况进行权衡。

标签:0.1,Redis,redis,模式,哨兵,6379,conf
From: https://www.cnblogs.com/wanghuizhao/p/17521636.html

相关文章

  • Redis分布式锁
    一、简介单机器环境下,可以通过锁来解决共享资源的竞争问题;而在分布式集群环境下,机器与机器之间的资源竞争则需要依赖Redis、ZooKeeper等中间件去协调。简单总结一下自己对Redis分布式锁的一些理解二、代码实现第一步先是获取锁,通过setnx操作,设置指定key及其过期时间。较新的版......
  • Redis详解——性能
    一、rehash会导致操作阻塞吗?如下图,Redis的字典结构中包含了两个哈希表:默认是往ht[0]写数据的,随着数据主键增多,Redis就会触发执行rehash操作了,主要步骤如下:给ht[1]分配更大的空间;将ht[0]的数据拷贝到ht[1];释放ht[0]的空间。如果直接拷贝数据,肯定是会花很长时间的,进一步会导......
  • Jmeter学习之一_连接与测试Redis
    Jmeter学习之一_连接与测试Redis简介下载:https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.6.zip注意事项:Don'tuseGUImodeforloadtesting!,onlyforTestcreationandTestdebugging.Forloadtesting,useCLIMode(wasNONGUI):jmeter-n......
  • 龙蜥7.9 编译安装redis
    1、下载redis安装包2、我一般放在/home下面,redis默认安装在/usr/local/bin/下面,修改目录命令为:makePREFIX=/usr/local/redisinstall#安装编译环境yum-yinstallgcc-c++autoconfautomake#开始安装cd/hometarzxvfredis-7.0.11.tar.gzcdredis-7.0.11/makemakeinsta......
  • Redis详解——内存数据库
    前言在Redis详解——存储中介绍了Redis的基础数据结构,本文我们来看看Redis是如何组织这些数据类型,来构建一个内存数据库的。一、内存数据库以下是Redis数据库的结构:Redis服务器程序所有的数据库都保存在redisService结构体中,其中有个db数组,为redisDb类型,每个元素为一个数据......
  • springboot+token+redis,模拟登录
    登录测试的controller:loginTest.javapackagecom.example.demo.controller;importcom.example.demo.po.ResponseBean;importorg.springframework.data.redis.core.RedisTemplate;importorg.springframework.web.bind.annotation.*;importjavax.annotation.Resource;i......
  • 装饰者模式
    目录1.概述2.结构3.案例4.使用场景5.JDK源码解析6.代理和装饰者的区别1.概述我们先来看一个快餐店的例子。快餐店有炒面、炒饭这些快餐,可以额外附加鸡蛋、火腿、培根这些配菜,当然加配菜需要额外加钱,每个配菜的价钱通常不太一样,那么计算总价就会显得比较麻烦。使用继承......
  • Go 程序里 if else 分支太多?试着用策略模式治理一下吧
     原创 卡尔文_ 网管叨bi叨 2022-11-1608:45 发表于北京收录于合集#用Go学设计模式24个本周发布的设计模式文章,忘记标注原创,这里重新发布一次。本次跟大家分享的是策略模式,是一个可以减少我们在程序流程里不停堆叠ifelse的一个好办法,大家一起学一下吧。大家好,我是......
  • Redis数据结构——链表
    前言Redis链表为双向无环链表!Redis使用了简单动态字符串,链表、字典(散列表)、跳跃表、整数集合、压缩列表这些数据结构来操作内存。本文继续来分析链表。 链表是一种非常常见的数据结构,在Redis中使用非常广泛,列表对象的底层实现之一就是链表。其它如慢查询,发布订阅,监视器等功......
  • Redis数据结构——字典
    前言字典在Redis中的应用非常广泛,数据库与哈希对象的底层实现就是字典。一、复习散列表1.1散列表散列表(哈希表),其思想主要是基于数组支持按照下标随机访问数据时间复杂度为O(1)的特性。可以说是数组的一种扩展。假设,我们为了方便记录某高校数学专业的所有学生的信息。要求可......