1 原理
哨兵模式是一种特殊的模式,是主从模式的升级版,因为主从的出现故障后,不会自动恢复,需要人为干预。哨兵模式是Redis高可用的一种实现方案。哨兵是一个独立的进程, 可以实现对Redis实例的监控、通知、自动故障转移。具体如下:
(1)监控(Monitoring) :哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。
(2)提醒(Notification) : 当被监控的某个Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。
(3)自动故障迁移(Automatic failover) :当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作,它会将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master; 当客户端试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用Master代替失效Master。
2 优点
(1) 哨兵模式是主从模式的升级版,所以在系统层面提高了系统的可用性、性能和稳定性。当master宕机的时候,能够自动进行故障恢复,不需要人为的干预。
(2)哨兵与哨兵之间、哨兵与master之间能够进行及时的监控,心跳检测,及时发现系统的问题,这都是弥补了主从的缺点。
3 缺点
(1)哨兵一主多从的模式同样也会遇到写的瓶颈,已经存储瓶颈,若是master宕机了,故障恢复的时间比较长,写的业务就会受到影响。
(2)增加了哨兵也增加了系统的复杂度,需要同时维护哨兵模式。
4 搭建部署
在一般情况,统筹兼顾数据完整性和方案经济性,一般最优解是采用一主两从三哨兵的模式。但记住哨兵尽量是奇数个,因为要避免发生脑裂。本着总结是为了更好的运用,这里就大致整理一下之前项目中使用的Redis哨兵模式(Sentinel)的搭建方式,并演示一下数据如何同步,故障如何自动转移。
服务器 |
---|