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

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

###### 解释:配置监听的主服务器,这里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
(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 ``` 
设置成redis.conf中配置的密码:

上一篇文章已经介绍了主从的搭建这里就不介绍了,有需求查看上一篇文章
##### 6、直接启动三个服务器的redis服务

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

启动成功并且连接到了主机
##### 8、接下来分别启动三个哨兵从主机开始启动
通过下图可知:主机是172.16.178.2 从机是 172.16.178.3 、172.16.178.4

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

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

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

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

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

看到哨兵正在监控着一个主机两个从机以及三个哨兵
##### 14、故障演练:
1)、先查询主机的进程ID

2)、kill -9 70817

此时当前节点只有哨兵了
3)、连接当前哨兵,输入info

这是最小的哨兵配置,如果发生了master-slave故障转移,或者新的哨兵进程加入哨兵集群,那么哨兵会自动更新自己的配置文件
此时主机节点变成了 172.16.178.4 了
4)、连接172.16.178.4 上的redis

当前节点为主机节点,172.16.178.3 为从节点
5)、重新启动172.16.178.2主机上的redis

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

7)、主机set 一个值

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

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

帮忙关注一下 微信公众号一起学习 :chengxuyuan95(不一样的程序员)