哨兵模式
主从切换技术的方法是:当主服务器宕机后,需要手动的把一台服务器切换为主服务器,需要人攻的干预,会造成一段时间内服务不可用。Redis从2.8开始提供了Sentinel(哨兵)架构来解决这个问题。
哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独独立的进程,会独立运行。原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。
哨兵模式的主要规则:
当原主机宕机后,哨兵集群会投票从从机中选出一个新的主机,就算旧主机回来了也只能当新主机的从机。
作用:
- 通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
- 当哨兵检测到master宕机,会自动将slave切换成master,然后通过发布订阅通知其他的从服务器,修改配置文件,让他们切换主机。
然而一个哨兵进程对Redis服务器进行监控,可能会出现问题,所以可以使用多个哨兵进行监控,各个哨兵之间还会进行监控,这样就形成了多哨兵模式。
测试
1、新建一个哨兵的配置
vim sentinel.conf
2、sentinel.conf中的配置
#sentinel monitor 监控的名称 host port 1
sentinel monitor myredis 127.0.0.1 6379 1
后面的数字1,代表主机挂了,哨兵投票看让谁接替为主机。票数最多的成为主机。
3、开启哨兵
redis-sentinel rconfig/sentinel.conf
4、让主机宕机进行测试
从机6381被投票为主机
5、哨兵日志
6、如果此时主机回来了,也只能归并到新的主机下,当作从机,这就是哨兵模式的规则。
这样就模拟哨兵模式的工作,不过在实际工作中,需要有多个哨兵相互监督,主机宕机后一起投票。
哨兵模式的优缺点
优点:
- 哨兵集群,基于主从复制模式,所有的主从配置优点他都有。
- 主从可以切换,故障可以转移,系统的可用性就会更好
- 哨兵模式就是主从模式的升级,从手动到自自动
缺点:
- redis不好在线扩容,集群容量一旦到达上限,在线扩容就十分麻烦
- 实现哨兵模式的配置很麻烦。