Redis哨兵机制

什么是哨兵机制

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非常类似

单个哨兵(sentinel)

Redis哨兵机制

 

1、 哨兵机制做 心跳检测 故障转移(选举策略) 监控

2、redis中只能一个主。

 

哨兵单独的一个程序 监听集群服务器

  做心跳检测时候(发命令包),检测到Master宕机了,就从其余的Slave中,通过投票重新选举Master角色。 这是原Master复活后,成为了Slave(不用人为改写配置文件)

 

1. Redis哨兵机制(配置简单)心跳检测、故障转移(选举策略)、监控

 2.在Redis中只允许有一个主服务器,可以允许多个从服务器

Redis哨兵机制

 哨兵机制配置:

哨兵模式修改配置

实现步骤:

1.拷贝到etc目录

cp sentinel.conf  /usr/local/redis/etc

2.修改sentinel.conf配置文件

sentinel monitor mymast  192.168.110.133 6379 1  #主节点 名称 IP 端口号 选举次数

sentinel auth-pass mymaster 123456 

3. 修改心跳检测 30毫秒

sentinel down-after-milliseconds mymaster 30

4.sentinel parallel-syncs mymaster 2 --- 做多多少合格节点

5. 启动哨兵模式

./redis-server /usr/local/redis/etc/sentinel.conf --sentinel &

6. 停止哨兵模式

 

准备三台虚拟机,开始玩儿~

三台虚拟机互相pin通

然后开始修改 conf 文件, slaveof   masterauth 分别指向主服务器

先启动主 然后从  

通过info看到:

Redis哨兵机制

Redis哨兵机制

Redis哨兵机制

集群成功!

在主写入值 其他都收到

 

 

 哨兵的安装:

 哨兵是独立的应用的程序  在某一台服务器上

首先进入到 redis 源码目录中

cd /home/redis/redis-3.2.9

然后:

Redis哨兵机制

然后修改这个配置文件:

vi /usr/local/redis/etc/sentinel.conf

2.修改sentinel.conf配置文件

sentinel monitor mymast  192.168.91.1 6379 1  #主节点 名称 IP 端口号 选举次数

sentinel auth-pass mymaster 123

3. 修改心跳检测 30毫秒

sentinel down-after-milliseconds mymaster 30

4.sentinel parallel-syncs mymaster 2 --- 做多多少合格节点

 修改:

Redis哨兵机制

修改为:

Redis哨兵机制

改成实时的

Redis哨兵机制

 

 停止redis集群 重新启动

 

 然后重新开始,先启动哨兵 然后启动redis  

 分别启动后

然后启动哨兵程序: 

./redis-server /usr/local/redis/etc/sentinel.conf --sentinel &

启动会打印日志信息:

 Redis哨兵机制

此时哨兵自己读取出来了 slave 和 master信息

这时候哨兵开始工作了

一旦主节点挂断了 他会进行重新的选举

 

 

 

 

 

 

 

 

 

 

     

 

posted @ 2018-11-01 15:15 toov5 阅读(...) 评论(...) 编辑 收藏