#### 哨兵都采用这个配置即可
##### 1、修改sentinel.conf配置文件

![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165743993-90469300.png)

##### 2、禁止保护模式 protected-mode no

  protected-mode参数是为了禁止外网访问redis,如果启用了,则只能够通过lookback ip(127.0.0.1)访问Redis,如果外网访问redis,会报出异常

  注意:
如果redis实例配置文件中禁用了bind参数,并将protected-mode设置为no后,外网访问redis依然报上述错误,因为 sentinel 实例的配置文件中需要增加参数 protected-mode no

![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165744318-1684197053.png)

##### 3、配置监控的服务器配置

![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165744671-968596366.png)

######   解释:配置监听的主服务器,这里sentinel monitor代表监控,mymaster代表服务器的名称,可以自定义,172.16.178.2代表监控的主服务器,6379代表端口,2代表只有两个或两个以上的哨兵认为主服务器不可用的时候,才会进行failover操作

quorum的解释如下:

 (1)至少多少个哨兵要一致同意,master进程挂掉了,或者slave进程挂掉了,或者要启动一个故障转移操作

 (2)quorum是用来识别故障的,真正执行故障转移的时候,还是要在哨兵集群执行选举,选举一个哨兵进程出来执行故障转移操作

 (3)假设有5个哨兵,quorum设置了2,那么如果5个哨兵中的2个都认为master挂掉了; 2个哨兵中的一个就会做一个选举,选举一个哨兵出来,执行故障转移; 如果5个哨兵中有3个哨兵都是运行的,那么故障转移就会被允许执行

```
# 语法:sentinel monitor
# Tells Sentinel to monitor this master, and to consider it in O_DOWN
# (Objectively Down) state only if at least sentinels agree.
# 告诉Sentinel监视这个master,并且考虑它O_DOWN
# (仅在客观上O_DOWN) 状态 只有在至少 quorum 这个数量的哨兵同意才可以。
# Note that whatever is the O_DOWN quorum, a Sentinel will require to
# be elected by the majority of the known Sentinels in order to
# start a failover, so no failover can be performed in minority.
# 请注意,无论quorum数是多少,哨兵都需要这样做由大多数已知的哨兵
# 选出来启动故障转移,因此不能在少数情况下执行故障转移。
# Replicas are auto-discovered, so you don't need to specify replicas in
# any way. Sentinel itself will rewrite this configuration file adding
# the replicas using additional configuration options.
# 从机是自动发现的,因此不需要在任何方式指定。哨兵自己将重写配置文件添加
# 到从机使用的配置文件的配置选项上。
# Also note that the configuration file is rewritten when a
# replica is promoted to master.
# 注意当从机被指定主机的时候将重写配置文件
# Note: master name should not include special characters or spaces.
# The valid charset is A-z 0-9 and the three characters ".-_".
# 注意:主机名称不应该包含特殊字符或空格。有效的字符集是A-z 0-9和三个字符“.-_”。
```
##### 4、其他的配置

  (1)、down-after-milliseconds,超过多少毫秒跟一个redis实例断了连接,哨兵就可能认为这个redis实例挂了

  (2)、parallel-syncs,新的master别切换之后,同时有多少个slave被切换到去连接新master,重新做同步,数字越低,花费的时间越多
假设你的redis是1个master,4个slave,然后master宕机了,4个slave中有1个切换成了master,剩下3个slave就要挂到新的master上面去这个时候,如果parallel-syncs是1,那么3个slave,一个一个地挂接到新的master上面去,1个挂接完,而且从新的master sync完数据之后,再挂接下一个,如果parallel-syncs是3,那么一次性就会把所有slave挂接到新的master上去

  (3)、failover-timeout,执行故障转移的timeout超时时长

##### 5、设置密码权限

```
# Set the password to use to authenticate with the master and replicas.
# Useful if there is a password set in the Redis instances to monitor.
# 设置用于主服务器和从机进行身份验证的密码。
# 如果要监视的Redis实例中设置了密码,则非常有用
# Note that the master password is also used for replicas, so it is not
# possible to set a different password in masters and replicas instances
# if you want to be able to monitor these instances with Sentinel.
# 注意,主密码也用于从机,因此它不可能在主机和从机实例中设置不同的密码
# 如果你想用哨兵来监控这些实例。
# However you can have Redis instances without the authentication enabled
# mixed with Redis instances requiring the authentication (as long as the
# password set is the same for all the instances requiring the password) as
# the AUTH command will have no effect in Redis instances with authentication
# switched off.
# 而且您可以在不启用身份验证的情况下使用Redis实例与需要身份验证的Redis实例混合(只要
# 对于需要密码的所有实例,密码集都是相同的在使用身份验证的Redis实例中),AUTH命令将不起作用。
# 语法:sentinel auth-pass mymaster MySUPER--secret-0123passw0rd
```
![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165744918-1182879529.png)

  设置成redis.conf中配置的密码:

![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165745278-1090427477.png)

  上一篇文章已经介绍了主从的搭建这里就不介绍了,有需求查看上一篇文章

##### 6、直接启动三个服务器的redis服务

![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165747529-1922226641.png)

##### 7、查看一下redis服务启动的日志

![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165747859-91539084.png)

  启动成功并且连接到了主机

##### 8、接下来分别启动三个哨兵从主机开始启动

  通过下图可知:主机是172.16.178.2 从机是 172.16.178.3 、172.16.178.4

![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165748386-1665931188.png)

##### 9、启动三个哨兵:成功启动

![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165749043-490898213.png)

##### 10、查看主机的sentinel.conf 配置可知,该哨兵在监控两个从机和配置的主机,以及另外两个哨兵

![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165749564-655264993.png)

##### 11、同理另外两个哨兵也是监控着两个从机和配置的主机,以及另外两个哨兵

![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165750067-211023336.png)

##### 12、连接配置好的哨兵

![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165750323-756653120.png)

##### 13、输入 info 命令

![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165750680-1123341330.png)

  看到哨兵正在监控着一个主机两个从机以及三个哨兵

##### 14、故障演练:

 1)、先查询主机的进程ID

![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165750880-1495826734.png)

 2)、kill -9 70817

![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165751396-773562519.png)

  此时当前节点只有哨兵了

 3)、连接当前哨兵,输入info

![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165751910-548701323.png)

  这是最小的哨兵配置,如果发生了master-slave故障转移,或者新的哨兵进程加入哨兵集群,那么哨兵会自动更新自己的配置文件

  此时主机节点变成了 172.16.178.4 了

 4)、连接172.16.178.4 上的redis

![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165752514-1813256018.png)

  当前节点为主机节点,172.16.178.3 为从节点

 5)、重新启动172.16.178.2主机上的redis

![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165752761-1733842442.png)

 6)、此时再一次连接主机

![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165753141-1995935168.png)

 7)、主机set 一个值

![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165753519-1125501993.png)

 8)、1号从机get 主机中设置的key

![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165753699-2051881829.png)

 9)、2号从机get 主机中设置的key

![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165753861-1988085137.png)

帮忙关注一下 微信公众号一起学习 :chengxuyuan95(不一样的程序员)![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165754169-745034528.jpg)

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 ...

随机推荐

  1. [中秋]宇宙第一 IDE Visual Studio 了解一下

    官网 https://visualstudio.microsoft.com/zh-hans/vs/ 文档 https://docs.microsoft.com/zh-cn/visualstudio/d ...

  2. android 之下拉刷新

    一.概述 Android 下拉刷新几乎是每个应用都必带的功能, 并且现在下拉刷新第三方库也越来越多了,很方便就能实现该功能, 下面我介绍一下 自己常用的几个方法. 二.例子 第一种方式:就是集成Lis ...

  3. vim编辑器的使用详解

    在Linux江湖,最常用到的编辑器非vim莫属,vim的功能很强大. 1.   vim简介 在Linux世界中,最长用到的而且功能比较强大的是Vim编辑器.Vim编辑器是在内存缓冲区中处理数据. vi ...

  4. linux ssh连接自动断开问题

    场景描述:云上的虚拟机使用public ip连接ssh时,一直提示已经连接,但是就会自动关闭 1. 通过正常虚拟机作为跳板,能够连接到目标机子上,检查发现进程正常,但是就一直连接不上 [root@te ...

  5. 005:CSS三大重点之三:定位

    目录 1:定位模式和边偏移 2:定位模式 静态定位 相对定位:移动位置:脱标.占位置 绝对定位:脱标.占有位置. 拼爹型 子绝父相 固定定位:脱标.占有位置. 3:定位模式转换 3:z-index 前 ...

  6. redirectTo、navigateTo与switchTap区别

    老是记忆不大清楚,简单写一下 简单作区分就是: redirectTo:关闭当前页(卸载),跳转到指定页 navigateTo:保留当前页(隐藏),跳转到指定页 switchTap:只能用于跳转到tab ...

  7. python实现感知机线性分类模型

    前言 感知器是分类的线性分类模型,其中输入为实例的特征向量,输出为实例的类别,取+1或-1的值作为正类或负类.感知器对应于输入空间中对输入特征进行分类的超平面,属于判别模型. 通过梯度下降使误分类的损 ...

  8. pyinstaller程序打包工具

    PyInstaller是一个能将Python程序转换成单个可执行文件的程序, 操作系统支持Windows, Linux, Mac OS X, Solaris和AIX.并且很多包都支持开箱即用,不依赖环 ...

  9. MongoDB的全文索引

    ​ Table of Contents 背景 如何使用 准备工作:插入数据 建立全局索引 查询结果 使用中存在哪些问题? 英文存在停止词 中文无法采用全文索引 前面了解了多种索引方式,比如单键索引,多 ...

  10. C++——指针

    目录 一.地址和指针 1.1内存 1.2针和指针变量 二.指针变量 2.1始化 2.2赋值 2.3指针类型算术运算 2.4指针类型关系运算 2.5指向指针的指针 三.指针与数组 3.1指针运算 3.2 ...