哨兵模式概述
主从复制切换技术的方法:当主服务器宕机后,需要手动把一台 从服务器
切换为 主服务器
,这就需要人工干预,费时费力,还会造成一段时间内服务不可用,这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式,Redis 从 2.8版本开始正式推出 Sentinel(哨兵)
架构来解决这个问题
哨兵能够在后台监控主机是否发生了故障,如果故障了就会根据投票数自动将从服务器
转换为 主服务器
哨兵模式是一种特殊的模式,首先 Redis
提供了哨兵的命令,哨兵是一个独立的进程
,作为进程,它会独立运行,其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个 Redis 实例
这里的哨兵有两个作用
1、通过发送命令,让
Redis
服务器返回监控其运行状态,包含主服务器
和从服务器
2、当哨兵检测到
Master
宕机,会自动将Slave
切换成Master
,然后通过发布订阅模式
通知其他的从服务器,修改配置文件,让他们切换主机
同时一个哨兵进程对Redis服务器进行监控,可能会出现问题,为此,我们可以使用多个哨兵进行监控。各个哨兵之间还会进行监控,这样就形成了多哨兵模式。
假设主服务器宕机,
哨兵一号
先检测到这个结果,系统并不会马上进行failover
过程,仅仅是哨兵一号
主观的认为主服务器不可用,这个现象称为主观下线
,当后面的哨兵也检测到主服务器不可用,并且数量到达一定值,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行failover
【故障转移】操作,切换成功后,就会通过发布订阅模式
,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线
测试哨兵模式
1、新建哨兵的配置文件 sentinel.conf
内容为:
sentinel monitor 被监控的名称 host port num
sentinel monitor myRedis 127.0.0.1 6379 1
此时这个 num
,代表主机挂了,Slave
投票看是哪个从机 接替成为主机,票数最多的,就会成为主机
2、启动哨兵
命令:[root@csnz bin]# redis-sentinel csnzConfig/sentinel.conf
3、测试主节点
崩了,哨兵会如何运行
等待30秒
结果:哨兵会从 从机
中随机选择一个服务器(投票算法)
查看
如果此时重启6379服务,主机会发生变化吗?
发现 6379服务 的 master 也会自动变成 6380服务了
哨兵模式的优点
1、哨兵集群,基于主从复制模式,所有的主从配置优点,它也有
2、主从可以切换,故障可以转移,系统的可用性就会更好
3、哨兵模式就是主从模式的升级,手动到自动,更加健壮
哨兵模式的缺点
1、Redis 不好实现在线扩容,集群容量一旦到达上限,在线扩容就会变得十分麻烦
2、哨兵模式的配置 实现麻烦,选择众多,[ 关于哨兵模式的配置完整版可查看百度内容 ]