一、概述

什么是哨兵机制

  • Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务:

    • 监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。
    • 提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。
    • 自动故障迁移(Automatic failover):当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作,它会将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master; 当客户端试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用Master代替失效Master。
  • 哨兵(sentinel) 是一个分布式系统,你可以在一个架构中运行多个哨兵(sentinel) 进程,这些进程使用流言协议(gossipprotocols)来接收关于Master是否下线的信息,并使用投票协议(agreement protocols)来决定是否执行自动故障迁移,以及选择哪个Slave作为新的Master.
  • 每个哨兵(sentinel) 会向其它哨兵(sentinel)、master、slave定时发送消息,以确认对方是否”活”着,如果发现对方在指定时间(可配置)内未回应,则暂时认为对方已挂(所谓的”主观认为宕机Subjective Down,简称sdown).
  • 若“哨兵群”中的多数sentinel,都报告某一master没响应,系统才认为该master"彻底死亡"(即:客观上的真正down机,Objective Down,简称odown),通过一定的vote算法,从剩下的slave节点中,选一台提升为master,然后自动修改相关配置.
  • 虽然哨兵(sentinel) 释出为一个单独的可执行文件 redis-sentinel ,但实际上它只是一个运行在特殊模式下的 Redis 服务器,你可以在启动一个普通 Redis 服务器时通过给定 --sentinel 选项来启动哨兵(sentinel).
  • 哨兵(sentinel) 的一些设计思路和zookeeper非常类似


155609

二、环境配置

2.1 虚拟机

  • 哨兵机制的作用:管理集群redis、监控选举策略、心跳检测,(独立的一个应用程序)
  • 环境配置 实现三台不同服务器的redis实现集群(克隆)
  • 直接先安装一台,后面两台全部克隆
192.168.212.145 主redis服务器
192.168.212.147 从redis
192.168.212.148 从redis

2.2 安装Redis

##下载Redis安装包
wget http://download.redis.io/releases/redis-3.2.9.tar.gz
##解压Redis安装包
tar -zxvf redis-3.2.9.tar.gz
##安装
cd redis-3.2.9
make
cd src
make install PREFIX=/usr/local/redis
##移动配置文件到安装目录下
cd ../
mkdir /usr/local/redis/etc
mv redis.conf /usr/local/redis/etc ## 修改配置文件
vi /usr/local/redis/etc/redis.conf
## 1. 修改为后台启动
daemonize yes
## 2. 修改密码
requirepass 123456
## 3. 开启外网访问 ,注释掉下面的
## bind 127.0.0.1 ## 开始测试
## 1. 开启redis
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf ## 2. 连接Redis客户端
./redis-cli -h 127.0.0.1 -p 6379 -a "123456"
PING #结果表示成功 ## 3. 测试完成 ,停止Redis服务
./redis-cli -h 127.0.0.1 -p 6379 -a "123456" shutdown ## ☆☆☆☆注意事项☆☆☆
## 在做主动复制时要关闭Linux防火墙
##1. 临时关闭
systemctl stop firewalld
##2. 禁止开机启动防火墙
systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

2.3 配置主从复制

配置主从复制:将从服务器的slaveof 指向主服务器,并设置访问密码
连接客户端之后可以,输入info命令可以查看当前redis的信息,可以看出145为主服务器,148服务器为从服务器:

  • 注意的地方:关闭所有防火墙
  • 如果在集群的时候,之前的主redis同步密码一定要指向。集群的所有服务器都要开启密码

2.4 配置哨兵

我们在从服务器上配置哨兵:

##实现步骤:
##1.将redis根目录下的sentinel.conf 拷贝到etc目录
cp sentinel.conf /usr/local/redis/etc
##2.修改sentinel.conf配置文件,如下配置要修改:
##2.1 sentinel monitor <master-name> <ip> <port> <quorum>
## 主节点名称 IP 端口号 选举次数
## 关于<quorum> 如果设置为1 ,
## 代表至少要有 1 个哨兵认为主节点故障了,
## 才算这个主节点是 客观下线 (odown) 了
sentinel monitor mymaster 192.168.110.133 6379 1
##2.2 sentinel auth-pass <master-name> <password>
## 如果主节点设置了密码,则需要这个配置,否则哨兵无法对主节点进行监控。
sentinel auth-pass mymaster 123456 ##2.3 sentinel down-after-milliseconds <master-name> <times>
## 每个哨兵节点会定期发送ping命令来判断Redis节点和其余的哨兵节点是否是可达的
## 如果超过了配置的<times>时间没有收到pong回复
## 就主观判断节点是不可达的,<times>的单位为毫秒
sentinel down-after-milliseconds mymaster 30
##2.4 sentinel parallel-syncs <master-name> <nums>
## 当哨兵节点都认为主节点故障时,哨兵投票选出的leader会进行故障转移,
## 选出新的主节点,原来的从节点们会向新的主节点发起复制,
## 这个配置就是控制在故障转移之后,每次可以向新的主节点发起复制的节点的个数,
## 最多为<nums>个,
sentinel parallel-syncs mymaster 2 # 做多少合格节点
##2.5 sentinel failover-timeout <master-name> <times>
## 这个代表哨兵进行故障转移时如果超过了配置的<times>时间就表示故障转移超时失败。
sentinel failover-timeout mymaster 5000

2.5 测试

  1. 启动哨兵
  2. 启动redis,先启动主redis,后启动从redis(不然哨兵就意味主redis挂掉了)
##1. 进入到bin目录中,启动哨兵模式
./redis-server /usr/local/redis/etc/sentinel.conf --sentinel &
  • 这个时候启动了三个redis服务器,如果145主服务器挂掉了,主服务器会转移到从服务器上,如果之前的主服务器恢复了,它会变为从服务器。(如果在集群的时候,之前的主redis同步密码一定要指向。集群的所有服务器都要开启密码)

2.6 疑惑(待解决)

  现在我并不知道,配置哨兵的时候是随便配置在那一台服务器上都可以,还是配置在从服务器上,而且如果有哨兵配置的服务器挂掉了,那又会发生什么呢?

【Redis】哨兵机制的更多相关文章

  1. redis 哨兵机制环境搭建

    Redis哨兵机制,一主二从 注:Redis哨兵切换,建议一主多从 一.一主二从 教程步骤:https://www.cnblogs.com/zwcry/p/9046207.html 二.哨兵配置(se ...

  2. 关于Redis哨兵机制,7张图详解!

    写在前面 之前有位朋友去面试被问到Redis哨兵机制,这道题其实很多小伙伴都应该有被问到过!本文将跟大家一起来探讨如何回答这个问题!同时用XMind画了一张导图记录Redis的学习笔记和一些面试解析( ...

  3. Redis哨兵机制的实现及与SpringBoot的整合

    1. 概述 前面我们聊过Redis的读写分离机制,这个机制有个致命的弱点,就是主节点(Master)是个单点,如果主节点宕掉,整个Redis的写操作就无法进行服务了. 为了解决这个问题,就需要依靠&q ...

  4. redis哨兵机制讲解

    原文链接:https://blog.csdn.net/yswKnight/article/details/78158540 一.什么是哨兵机制? 答:Redis的哨兵(sentinel) 系统用于管理 ...

  5. Redis哨兵机制原理

    1.概述 Redis Sentinel是一个分布式系统,为Redis提供高可用性解决方案.可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip p ...

  6. redis哨兵机制--配置文件sentinel.conf详解

    转载自 https://blog.csdn.net/u012441222/article/details/80751390 Redis的哨兵机制是官方推荐的一种高可用(HA)方案,我们在使用Redis ...

  7. Redis 哨兵机制

    概述 由一个或多个 Sentinel(哨兵)实例组成的 Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的 ...

  8. Redis哨兵机制(sentinel)

    1.简介: 1.是什么: Redis-Sentinel是Redis官方推荐的高可用(HA)方案,当用Reids 做master-slave高可用方案时,假如master宕机了,redis本身(包括它的 ...

  9. 07.初步学习redis哨兵机制

    [ ] 一.哨兵(sentinal)的介绍 哨兵是redis集群架构中非常重要的一个组件,主要功能如下: 集群监控,负责监控redis master和slave进程是否正常工作 消息通知,如果某个re ...

  10. redis哨兵机制二(转)

    概述 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如 master宕机了,Redis本身(包括它的很多客户端) ...

随机推荐

  1. oracle 删除用户,提示“无法删除当前已连接的用户”

    1. 首先查询出该用户的登录情况,注意用户名必须是大写 SQL> select username,sid,serial# from v$session where username = 'XST ...

  2. java web 加载Spring --web.xml 篇

    spring是目前最流行的框架.今天谈谈对spring的认识 起步 javaweb中我们首先会遇到的配置文件就是web.xml,这是javaweb为我们封装的逻辑,不在今天的研究中.略过,下面是一个标 ...

  3. Spring 2017 Assignments3

    一.作业要求 原版:http://cs231n.github.io/assignments2017/assignment3/ 翻译:http://www.mooc.ai/course/268/lear ...

  4. 最小生成树模板题-----P3366 【模板】最小生成树

    题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出orz 输入格式 第一行包含两个整数N.M,表示该图共有N个结点和M条无向边.(N<=5000,M<=200000) ...

  5. .Net 连接FTP下载文件报错:System.InvalidOperationException: The requested FTP command is not supported when using HTTP proxy

    系统环境: Windows + .Net Framework 4.0   问题描述: C#连接FTP下载文件时,在部分电脑上有异常报错,在一部分电脑上是正常的:异常报错的信息:System.Inval ...

  6. VS引用文件出现黄色感叹号丢失文件,应该如何解决?

    VS是微软开发的一款超级强大的IDE,深受广大.net开发者喜爱. 但是再强大,也会有它的bug和缺点. 多人协同开发时,不知道你有没有遇到一个这样的情况:第二天上班,早早来到公司,打开电脑,拉取一下 ...

  7. MySQL基础(用的贼鸡儿多)

    整理有点乱,业余也玩玩系统,经常碰见这些玩意,有点烦,老是记不住 MySQL 基础语法 一.连接 MYSQL格式: mysql -h 主机地址 -u 用户名 -p 用户密码. 1.连接到本机上的 MY ...

  8. pak文件的打包和解包

    pak格式的文件 一般游戏有资源 游戏素材会打包放进去 比如游戏语音 游戏多加点语音  多加一些贴图资源 外部文件实现的 素材--->pak文件--->用的时候从文件中取出来 文件的打包 ...

  9. React 现代化测试

    测试的动机 测试用例的书写是一个风险驱动的行为, 每当收到 Bug 报告时, 先写一个单元测试来暴露这个 Bug, 在日后的代码提交中, 若该测试用例是通过的, 开发者就能更为自信地确保程序不会再次出 ...

  10. python 16 模块

    目录 模块 1. 自定义模块 1.1 模块分类 1.2 模块的导入 1.3 import 和 from 1.4 from 模块名 import * 1.5 模块的用法: 1.6 导入路径 2. tim ...