1.哨兵sentinel引入背景
我们现在来思考一个问题:如何实现服务的高可用。我们首先想到至少要满足两个要求:1.服务端能够实现主从自动切换;2.对于客户端来说,如果发生了主从切换,则能够自动连接到最新的master节点。
我们首先想到一个思路:增加一个领导者角色,能够管理redis节点存活状态,而且具备路由功能。比如master节点超过一定时间没有给监控服务器发送心跳报文,就把master标记为下线,然后将某个slave变成master。应用每一次都是从这个监控服务器骂道master的地址。
那问题来了?如果这个监控服务器本身出问题了怎么办?或者网络不同了,链接不到监控服务器了?
那是不是应该再创建一个监控服务器,来监控监控服务器?这个似乎无解了?因此如果采取哨兵sentinel的模式,我们该如何设计就是很重要的问题了。
这篇博客内容还不错,我们直接拿来用啦!
对于sentinel机制,我们的问题可以细分为以下几个方面:
- 什么是Redis的哨兵模式?
- 哨兵模式的优点是什么?
- 哨兵模式的工作原理是什么?
- 如何配置Redis的哨兵模式?
- 哨兵模式中的故障转移是如何实现的?
我们先来了解一下哨兵机制实现了以下主要功能,进一步了解这些功能的实现原理。