1. 简介
           Sentinel:哨兵模式,是一个分布式系统,该进程是用于监控redis集群中Master主服务器工作的状态,
    在Master主服务器发生故障的时候,可以实现Master和Slave服务器的切换,保证系统的高可用,其已经被
    集成在redis 2.6 +的版本中,Redis的哨兵模式到了2.8版本之后就得到了稳定。
  2. 哨兵模式的环境:
     a:
    Master主服务器配置信息:IP:192.168.191.101, Port:6379,OS:Linux
     b:  Slave从服务器的配置信息:  IP:192.168.191.102, Port:6379,OS:Linux
     c:  Slave从服务器的配置信息:IP:192.168.191.103, Port:6379,OS:Linux
  3. 哨兵模式的配置(3台机器同步修改)
     ⑴创建/etc/sentinal和/var/sentinal/5000目录
             

     ⑵将/usr/local/module/redis-5.0.5目录下sentinel.conf拷贝到/etc/sentinal目录下,并且名称修改为5000.conf
             

     ⑶修改5000.conf(不同的机器不同的IP地址)
             
#端口为5000
port 5000

#守护进程模式
daemonize yes

#指明日志文件名
logfile "/usr/local/module/redis-5.0.5/logs/sentinel.log"

#设置绑定IP地址,不同的机器不同的IP地址
bind 192.168.191.101 127.0.0.1

protected-mode no

#哨兵程序的日志路径
dir /var/sentinal/5000

#哨兵程序的日志路径
logfile "/usr/local/module/redis-5.0.5/logs/sentinel.log"

sentinel announce-ip 192.168.191.103

#给监控的master指定的一个名称,哨兵监控这个master,在至少quorum个哨兵实例都认为master down后把master标记为odown,这个IP地址必须是master的
sentinel monitor mymaster 192.168.191.101 6379 2

#在搭建redis集群时如果指定了主节点的"requirepass",这个就必须保持一致
sentinel auth-pass mymaster redis-pass

# master或slave多长时间(默认30秒)不能使用后标记为s_down状态。
sentinel down-after-milliseconds mymaster 30000

# 若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
sentinel failover-timeout mymaster 60000

#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上去
sentinel parallel-syncs mymaster 1
  1. 启动哨兵进程
     ⑴简介
            在eshop-cache01、eshop-cache02、eshop-cache03三台机器上,分别启动三个哨兵进程,组成一个集群,
         观察一下日志的输出
     ⑵启动eshop-cache01,eshop-cache02、eshop-cache03的哨兵,进入/usr/local目录下
           命令:redis-sentinel /etc/sentinal/5000.conf,效果如下


  2. 检查哨兵状态
     ⑴命令
            redis-cli -h ip地址 -p 端口

        查询master状态:sentinel master mymaster

        查询slaves状态:SENTINEL slaves mymaster


      获取master节点信息:SENTINEL get-master-addr-by-name mymaster

      使用info命令查询:
  3. 下面我们redis将master节点停掉,看看哨兵会不会重新选举
     a:停止master节点

     b:看哨兵效果:

     c:查看哨兵状态



      并且102切换为主节点后,也可以向里面写数据了

     重新启动101节点,它将会作为一个slave节点连接上去:
  4. 综上,哨兵成功搭建,并且完成主备切换的功能。