Redis 哨兵机制及配置实现

目录
  • 一、为什么 Redis 集群中要有哨兵机制
  • 二、模拟主机挂掉之后,人工切换
  • 三、哨兵机制的原理
  • 四、哨兵机制的实现

一、为什么 Redis 集群中要有哨兵机制

Redis 主从复制有一个缺点,当 master 宕机以后,整个集群的写就会挂掉。因为 redis 本身是不会自动从 slave 中选举出新的 master 的。

我们理想的情况是:当 master 挂掉之后,可以有 slave 迅速补上,自动切换为 master,不影响整个服务。

基于此,引入了 Redis Sentinel(Redis 哨兵机制)。

它能够在 master 挂掉之后,自动从 多台 slave 中选举出 新的 master,迅速开始工作,省去了人工切换的麻烦,实现了 redis 的高可用。

二、模拟主机挂掉之后,人工切换

1、环境介绍

这里有四台 redis,分别的 ip 是:

master:172.10.0.2

slave1:172.10.0.3
slave2:172.10.0.4
slave3:172.10.0.5

2、将原来的 master 挂掉

通过 netstat -anp|grep 6379 命令找到 master 的 pid,然后 kill 掉。

去几个 slave 中查询 info replication,会发现,master 的状态已经是 down

3、人工将一个 slave 选举成为新的 master

选择 slave2 成为 新的 master:

(1)去 slave2 客户端执行 slave no one命令

该命令会将 slave2 和原来的 master 的主从关系断掉,重新使自己成为 master(当然,这个 master 下没有一个 slave )

(2)到其他两个 slave 执行 slaveof 172.10.0.4 6379 或配置slaveof

注意 requirepass、masterauth、bind 的配置,并重启、重新加载配置文件,否则可能会不生效。

虽然人工方式也可以实现切换,但难免会碰到

‘到底选举哪一个为 master’, 
‘如果再断了又要重新配置’,
‘如果有其他事情耽误了,没来得及配置,会有很长一段时间无法提供服务’等问题,

因此,哨兵机制就变得十分有必要。

三、哨兵机制的原理

Redis Sentinel 是一个分布式架构,其中包含若干个 Sentinel 节点和 Redis 数据节点,每个 Sentinel 节点会对数据节点和其余 Sentinel 节点进行监控,当它发现节点不可达时,会对节点做下线标识。

哨兵集合监控redis主从是否正常运行。

如果挂掉的是从节点,则哨兵集合会将这个从节点做下线标识;

如果挂掉的是主节点,则哨兵集合不仅会对主节点做下线标识,而且还会所有哨兵进行"协商”,选举出新的主节点,来完成自动故障转移工作。原来的主节点恢复正常后,会变成新的主节点的从节点。

整个过程完全是自动的,不需要人工接入。

四、哨兵机制的实现

1、创建三个redis-sentinel,构成一个哨兵集合

docker run -itd --name  redis-sentinel-1 --privileged  --net haveyb-network  -p 6384:6379  --ip 172.10.0.6  docker-test

docker run -itd --name  redis-sentinel-2 --privileged  --net haveyb-network  -p 6385:6379  --ip 172.10.0.7  docker-test

docker run -itd --name  redis-sentinel-3 --privileged  --net haveyb-network  -p 6386:6379  --ip 172.10.0.8  docker-test

注:--net haveyb-network为指定自定义网络

2、使用 docker ps -a 命令查看当前创建的容器

3、分别进入新建的三个 sentinel 的每一个容器

docker exec -it redis-sentinel-3 bash

4、修改 net.core.somaxconn的值

vi /etc/sysctl.conf 

(1)添加下面一行代码:

net.core.somaxconn = 32768

(2)加载

sysctl -p

5、修改 redis.conf

vi /etc/redis.conf

(1)修改参数 bind 127.0.0.1 为 0.0.0.0

bind 0.0.0.0

(2)设置 redis 密码

requirepass YourPasswordSettings

(3)加载配置文件

redis-server /etc/redis.conf &

6、修改新建的三台 redis-sentinel 的 redis-sentinel.conf

vi /etc/redis-sentinel.conf

(1)修改 # bind 127.0.0.1 192.168.1.1 为 bind 0.0.0.0

bind 0.0.0.0

(2)删除这一行代码

sentinel monitor mymaster 127.0.0.1 6379 2

这一行代码是redis默认给的(没有注释掉的),我们后面自己配置,所以直接删除掉,也会避免之后由于顺序造成的问题。

(3)添加下面代码

sentinel monitor mymaster 172.10.0.2 6379 2

sentinel auth-pass mymaster yourPasswordSettings

sentinel down-after-milliseconds mymaster 3000

解释:

第一行代码:

监控的主节点的名字(可以任意起,这里就起为 master)、IP 和端口,最后一个 2 的意思是有几台 Sentinel 发现有问题,就执行故障转移。一般这个数字设置为 Sentinel 节点数的一半加1。

不过这里建议把名字就起为 mymaster(默认的就是这个),因为如果起成别的名字,还需要对应改好几处地方。

第二行代码:

是填写连接的master的名字和密码,这里名字就用的默认的mymaster,密码要填写master的密码,我这里都设置成一样的了。

第三行代码

是设置每隔多长时间进行心跳检测,这里设置成3秒

7、分别在三台新建的redis-sentinel加载哨兵配置文件

redis-sentinel /etc/redis-sentinel.conf &

8、验证是否配置成功

如果出现下图类似内容,则说明配置哨兵成功

注:移除某个哨兵对master的监控,在哨兵中执行命令

sentinel remove mastername

到此这篇关于Redis 哨兵机制及配置实现的文章就介绍到这了,更多相关Redis 哨兵机制内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Redis 哨兵高模式搭建及Java代码配置

    Redis 的下载和安装及遇到问题的解决 准备配置文件 # 配置文件进行了精简,完整配置可自行和官方提供的完整conf文件进行对照.端口号自行对应修改 # 后台启动的意思 daemonize yes # 端口号 port 6380 # IP绑定,redis不建议对公网开放,直接绑定0.0.0.0没毛病 bind 0.0.0.0 # redis数据文件存放的目录 dir /usr/local/redis/data # 开启AOF appendonly yes # 开启集群 cluster-enab

  • Redis 哨兵集群的实现

    目录 1.Sentinel 哨兵 2.Redis 主从分离 一.配置Master 二.配置Slave 1.在配置文件中配置从服务 2.在服务启动后设置 3.总结 3.Sentinel 哨兵 1.配置端口 2.配置主服务器的ip 和端口 3.启动Sentinel 4.关闭Master 5.重连Master 4.Sentinel 总结 一.Sentinel的作用: 二.Sentinel的工作方式: 1.Sentinel 哨兵 Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Se

  • 浅谈Redis哨兵模式高可用解决方案

    目录 一.序言 1.目标与收获 2.端口规划 二.单机模拟 (一)服务规划 1.Redis实例 2.哨兵服务 (二)服务配置 1.Redis实例 2.哨兵服务 (三)服务管理 1.Redis实例 2.哨兵服务 三.客户端整合 (一)基础整合 1.全局配置文件 2.集成配置 (二)读写分离 一.序言 Redis高可用有两种模式:哨兵模式和集群模式,本文基于哨兵模式搭建一主两从三哨兵Redis高可用服务. 1.目标与收获 一主两从三哨兵Redis服务,基本能够满足中小型项目的高可用要求,使用Supe

  • Redis Sentinel实现哨兵模式搭建小结

    Redis哨兵模式,用现在流行的话可以说就是一个"哨兵机器人",给"哨兵机器人"进行相应的配置之后,这个"机器人"可以7*24小时工作,它能能够自动帮助你做一些事情,如监控,提醒,自动处理故障等. Redis-sentinel简介 Redis-sentinel是Redis的作者antirez,因为Redis集群的被各大公司使用,每个公司要写自己的集群管理工具,于是antirez花了几个星期写出了Redis-sentinel. Redis 的 Se

  • Redis哨兵模式介绍

    哨兵简介 主机"宕机" 将宕机的 master 下线 找一个 slave 作为 master 通知所有的 slave 连接新的 master 启动新的 master 和 slave 全量复制 *N+ 部分复制*N 存在的问题: 谁来确认 master 宕机了 重新找一个新的 master ,怎么找法? 修改配置后,原来的 master 恢复了怎么办? 哨兵 哨兵(sentinal)是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的 master 并

  • 浅谈Redis哨兵模式的使用

    概述 主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工 干预,费事费力,还会造成一段时间内服务不可用.这不是一种推荐的方式,更多时候,我们优先考虑 哨兵模式.Redis从2.8开始正式提供了Sentinel(哨兵) 架构来解决这个问题. 谋朝篡位的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库. 哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独 立运行.其原理是哨兵通过发送命令,

  • redis哨兵常用命令和监控示例详解

    sentinel monitor advertise 192.168.0.5 28001 2 sentinel set advertise client-reconfig-script /etc/redis/reconfig.sh sentinel flushconfig sentinel启动后需要手动将配置文件对应的调整为sentinel deny-scripts-reconfig no,否则不支持命令行runtime修改client-reconfig-script # SECURITY #

  • Redis 哨兵机制及配置实现

    目录 一.为什么 Redis 集群中要有哨兵机制 二.模拟主机挂掉之后,人工切换 三.哨兵机制的原理 四.哨兵机制的实现 一.为什么 Redis 集群中要有哨兵机制 Redis 主从复制有一个缺点,当 master 宕机以后,整个集群的写就会挂掉.因为 redis 本身是不会自动从 slave 中选举出新的 master 的. 我们理想的情况是:当 master 挂掉之后,可以有 slave 迅速补上,自动切换为 master,不影响整个服务. 基于此,引入了 Redis Sentinel(Re

  • Redis6 主从复制及哨兵机制的实现

    目录 Redis 主从复制 什么是主从复制 主从配置 主Redis配置 从Redis配置 实现原理 Redis 哨兵机制 简介 哨兵进程的作用 故障判定原理分析 自动故障迁移 案例演示 Redis 主从复制 什么是主从复制 如果单机情况下,机器重启,内存数据丢失,如何保证数据的高可用呢?持久化方案如果机器硬盘坏掉,如何保证数据的高可用呢?主从复制Redis的主从机制:主负责读写,从一般只读不能写(客户端). 持久化保证了即使 Redis 服务重启也不会丢失数据,因为 Redis 服务重启后会将硬

  • Docker配置redis哨兵模式的方法(多服务器上)

    前言 之前学习的redis一直是在单一服务器上运行的,而且是直接部署在服务器上.听说用docker会让配置过程更轻松 (并没有)这次就在用Docker的基础上配置Redis一主一从三哨兵.本篇为配置数据节点,即一主一从两个节点. 条件 三台服务器(因为需要至少三个哨兵保证安全性)[可以在阿里云上租几个小时] 服务器1:8.131.78.18 服务器2:8.131.69.106 服务器3:8.131.71.196 端口号7000.17000已在安全组上放行(阿里云) 环境:centos8.0 安装

  • Nginx代理Redis哨兵主从配置的实现

    目录 一.环境 二.配置 2.1.方案一(推荐) 2.2.方案二 2.3.方案三 一.环境 Nginx版本:1.21.6Center7.5及以上或Mas OS搭建Redis哨兵主从模式Springboot集成Redis哨兵主从模式 提示:Nginx必须安装upstream模块 二.配置 Nginx配置有三个方案(详见后续内容),其中:方案一将哨兵所有节点使用一个端口对外映射:方案二是每个哨兵端口配置一个对应的映射端口,总体和正常哨兵配置方式无差别:方案三其实就是方案一和方案二的结合体.个人认为其

  • k8s部署redis哨兵的实现

    目录 一.准备redis镜像 二.准备k8s yml—redis-sentinel.yml 三.查看redis哨兵信息 四.连接redis哨兵 一.准备redis镜像 Dockerfile FROM redis:6.0 MAINTAINER 运维@小兵 COPY *.conf /opt/conf/ COPY run.sh /opt/run.sh RUN apt update -y;apt-get install vim net-tools -y;apt-get clean && \ chm

  • Redis哨兵模式实现一主二从三哨兵

    目录 一.redis环境: 二.哨兵介绍: 三.安装redis: 四.使用Redis主从复制的作用: 五.配置redis一主二从: 六.配置redis三哨兵: 一.redis环境: 环境:redis6.2.6linux虚拟机一台,contos7: 二.哨兵介绍: 1.一主二从三哨兵理论图: 一主两从三哨兵集群,当master节点宕机时,通过哨兵(sentinel)重新推选出新的master节点,保证集群的可用性. 2.哨兵的主要功能:1.集群监控:负责监控 Redis master 和 slav

  • Linux学习教程之redis哨兵集群详解

    前言 Sentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在redis2.4+的版本中,下面话不多说了,来一起看看详细的介绍吧 1.Sentinel 哨兵 Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器. 例如: 在Server1 掉线后

  • SpringBoot结合Redis哨兵模式的实现示例

    Redis哨兵模式 Redis Sentinel介绍 Redis Sentinel是Redis高可用的实现方案.Sentinel是一个管理多个Redis实例的工具,它可以实现对Redis的监控.通知.自动故障转移. Redis Sentinel主要功能 Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring):Sentinel 会不断地检查你的主服务器和从服务器是否运作正常. 提醒(Notificatio

随机推荐