概述
网络异常,图片无法展示
|
哨兵模式主要通过redis-sentinel进行配置
网络异常,图片无法展示
|
网络异常,图片无法展示
|
比如我们有一个主机6379,还有两个从机6380,6381,不仅要配置基本的一主多从,还要单独的配置一个哨兵进程,需要不定时发请求判断我们三个服务器是否存活,哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个redis实例(服务),如果没有回复响应,那么就是断开连接宕机
这里的哨兵有两个作用
1 通过发送命令,让Redis服务器返回监控它的运行状态,包括主机和从机(主服务器和从服务器)
2 当哨兵检测到master宕机,会自动将slave变为master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机
然而一个哨兵进程对Redis服务器进行监控,可能会出现问题,为此,我们可以使用多个哨兵进行监控,各个哨兵直接还会进行检测,这样就形成了多哨兵模式(集群),起步就是6个进程 3哨兵 3服务器 一主二从
2上述例子是一个单机哨兵,如果这个哨兵宕机就无法保证我们的服务正常运行,正常情况下我们也会给哨兵配置集群,就是以下流程图
网络异常,图片无法展示
|
3 哨兵模式的工作流程
假设服务器宕机,哨兵1检测到这个结果,系统并不会马上进行failover过程,仅仅是哨兵1主观的认为主服务器不是决定性的(一个哨兵的判断不会立马决定结果),这个现象称为主观下线,当后面的哨兵也检测到主服务器不可用,并且数量达到一定值的时候,那么哨兵就会判断这个主服务器宕机, 这时哨兵直接会进行选票(投票的发起者是随机的),投票的结果由一个哨兵发起,进行failover(故障移除操作),切换成功后,就会通过发布订阅(比如给从机1投了一票,给从机2投了两票,那么从机2就会胜出称为新的主机),让各个哨兵把自己监控的从服务器实现切换主服务器(投票胜出的那个),这个过程称为客观下线
哨兵模式的投票是一个算法
4 配置哨兵模式
首先声明:现在我们主从复制的模式是一主(6379)二从(6380,6381),而不是层层链入
1 配饰哨兵配置文件(sentinel.conf),因为哨兵启动的时候会检测这个文件
网络异常,图片无法展示
|
#注意单词不要写错 #配置的哨兵不止于此,但是这个 最核心基本的配置 #哨兵 监控 被监控的名称 主机的ip和端口 #后面这个数字1,代表主机挂了,哨兵投票看让谁接替成为新的主机,票数最多的,就会成为主机 sentinel moitor myredis 127.0.0.1 6379 1
2 配置完成之后启动哨兵(redis-sentinel)
网络异常,图片无法展示
|
网络异常,图片无法展示
|
网络异常,图片无法展示
|
网络异常,图片无法展示
|
3 这样我们的哨兵模式就启动成功了,上图所示,哨兵模式正在检测127.0.0.1 6379这个主机,还检测到6380和6381两台从机,主机里面有1票,是它们的老大
5 测试主机宕机会怎么样
1 首先给主机set一个值 set k1 v1然后宕机
网络异常,图片无法展示
|
2 需要等待哨兵模式一会,因为它要发送信息监控服务器等待响应,等哨兵模式得到监控信息,此时查看哨兵模式,发现79宕机,进行数据迁移然后选举新的主机
网络异常,图片无法展示
|
3 此时查看6380这个从机,发现它还是从机
网络异常,图片无法展示
|
4 查看我们的6381,发现它自动成为了主机
网络异常,图片无法展示
|
哨兵模式也有说明,6379以及shutdown,经过哨兵们的选举6381成为我们新的主机
网络异常,图片无法展示
|
结论:如果master节点断开了,就会从从机中随机选出一个从机成为新的主机(这里面有一个投票算法)
哨兵日志的几个重要部分,故障转移(数据迁移)failover,主机宕机down,选举推送新的主机
网络异常,图片无法展示
|
6 那么,现在把6379这个主机连回来有用吗?
网络异常,图片无法展示
|
网络异常,图片无法展示
|
1 答案是没用的,虽然它还是一个主机,但是其他是光杆司令,没有任何从机,需要我们手动去配置
2 查看哨兵日志,convert(转换)6379转换成为了6381的从机
网络异常,图片无法展示
|
3 再次查看6381的信息,发送它有两个从机6379,6380,所以就算6379这个曾经的主机回来,也只能给新的主机做从机
网络异常,图片无法展示
|
4 查看曾经的主机6379,也只能给新的主机6381做从机
如果主机此时正常连接回来了,只能归并到新的从机下,当作新的主机的从机,这就是哨兵模式的规则
网络异常,图片无法展示
|
7 哨兵模式的优点和缺点
1 优点
1 哨兵模式,基于主从复制,所有的主从配置的优点,它全都有,而且它还会自动配置
2主从可以切换,数据可以转移,系统的可用性就会更好(高可用)
3 哨兵模式就是主从模式的升级版,从手动升级到自动,更加完善健壮
2 缺点
1 Redis不好在线扩容的,如果集群容量一旦到达上限(集群的容量满了),在线扩容就非常麻烦(可以做横向扩展)
2 实现哨兵模式的配置其实是很麻烦的,里面有很多选择,我们配置的只是一个最基础的
8 哨兵模式的全部配置
1 哨兵模式的端口
网络异常,图片无法展示
|
2 定义哨兵的工作目录
网络异常,图片无法展示
|
3 默认主机的节点
网络异常,图片无法展示
|
4 配置主机密码,如果没有可以不进行配置
网络异常,图片无法展示
|
5 默认的延迟操作,也就是我们等待哨兵监控服务器等待的时间,默认30s,可以不用配置
网络异常,图片无法展示
|
6 故障转移的操作,并行同步的时间
网络异常,图片无法展示
|
7 设置一些其他操作,比如说默认的三分钟的故障转移,如果觉得时间长,可以进行更改
网络异常,图片无法展示
|
8 执行脚本 出现故障可以发送到我们的邮件或者服务器上面,来通知管理员(需要编写sheet脚本)
网络异常,图片无法展示
|
9 主节点改变的时候,脚本被调用
网络异常,图片无法展示
|