Redis设计 - Sentinel哨兵

背景

Redis单独实现了一个Sentinel模块,用于监听主从实例,主动下线问题的主实例,替换从实例,以达到Redis的高可用。

初始化

初始化Sentinel时指定监控的主实例列表masters,向主实例们改起连接,伪装成它们的一个客户端。Sentinel每隔十秒发送一条INFO消息给主服务器,获取主服务器状态,及对应的从服务器实例并连接。

连接其它结点

Sentinel还以两秒一次的频率,向主从实例publish指定频道的信息,同时也监控这个频道。通过这种方式不同的Sentinel服务器可以相互感知到对方——Sentinel之间因此知道了彼此的ip,彼此连接起来,伪装成对方的客户端。

下线

  • 主观下线:每秒一次向所有主、从、Sentinel服务器发送PING命令,若不返回说明断连。一定时间内断连,Sentinel将此服务器标为“主观下线”
  • 客观下线:足够多的Sentinel实例认为一个结点主观下线,则构成“客观下线”。
  • 故障转移:客观下线后Sentinel通过raft算法选出一个执行者,对下线的主服务器进行故障转移,挑选其从服务器成为新的主。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章