redis.IO学习(四)----Sentinel的高可用

2018-10-25  本文已影响0人  lionel880

Redis Sentinel为Redis提供高可用性。实际上,这意味着使用Sentinel可以创建一个Redis部署,无需人工干预即可抵御某些类型的故障。这个也应该是Redis实际生产比较复杂的点

1.sentinel的功能

2.sentinel的快速使用

redis-server /path/to/sentinel.conf --sentinel
sentinel本质上只是一个运行在特殊模式之下的redis,sentinel通过info命令得到监听redis机器的master,slave等信息
在运行Sentinel时必须使用配置文件,因为系统将使用此文件以保存重新启动时将重新加载的当前状态。如果没有给出配置文件或者配置文件路径不可写,Sentinel将拒绝启动。

3.部署方式

您需要至少三个Sentinel实例才能实现强大的部署。
应将三个Sentinel实例放入被认为以独立方式失败的计算机或虚拟机中。例如,在不同的可用区域上执行的不同物理服务器或虚拟机。
Docker或其他形式的网络地址转换或端口映射应谨慎使用,针对此方式有特别说明

补充:sentinel集群是如何通信的,sentinel和监听服务器会建立2个连接一个是命令连接,一个是订阅连接,频道为"__sentinel__:hello" (2个_),自己可以在客户端监听验证
sentinel每2s会主动向这个频道写入自身和监听主机的信息,这样,其他的sentinel自然就知道了

4.最小配置文件

sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
sentinel auth-pass <master-group-name> <pass>

5.哨兵的故障恢复过程

哨兵本身不断在获取redis master和slave的信息,并通过订阅频道发现其他sentinel后,通过命令连接不断和其他sentinel进行通信
在实际发生故障时:

请注意:sentinel通过 epoch进行选举,必须要获得至少一半的sentinel才能当选为最终的leader

即当不超过一半的sentinel连接时,你是无法获得sentinel的leader的,也就是无法进行故障转移

上一篇 下一篇

猜你喜欢

热点阅读