redis主从复制结构不支持高可用特性,使用redis哨兵模式可以提供redis服务的高可用。当主节点宕机时,由哨兵完成故障发现与转移,并通知客户端,从而实现高可用。
哨兵模式的基本原理
redis哨兵(以下称sentinel)是一个分布式系统,可以支持单节点部署,也可以支持多节点部署,为了保证sentinel自身的高可用,建议使用多节点部署。
redis sentinel通过监控redis主节点、redis从节点以及其他sentinel,当发现指定节点没有在规定的时间内产生回应时,产生“主观下线”。当sentinel运行在多节点模式时,如果多数sentinel都对主节点做出了主观下线的判断,sentinel集群之间通过交流后会产生“客观下线”。然后在从节点总选举出一个主节点,并修改相关配置。
哨兵模式的安装部署
机器清单
节点 | redis角色 | sentinel | 主机名 | ip |
节点1 | 主节点 | sentinel1 | node1 | 192.168.70.129 |
节点2 | 从节点 | sentinel2 | node2 | 192.168.70.133 |
节点3 | 从节点 | sentinel3 | node3 | 192.168.70.135 |
启动redis服务
主节点不需要进行额外配置,直接启动即可。
两个从节点分别需要配置redis.conf文件的slaveof配置项为192.168.70.129 6379。然后分别启动两个从节点。
连接上主节点,可以查看到已经有2个从节点上线。
配置启动sentinel
sentinel的配置文件是sentinel.conf,找到该文件,将daemonize配置项修改为yes,并加上配置:sentinel monitor mymaster 192.168.70.129 6379 2
我们需要3个sentinel组成哨兵集群,所以在另外两个节点,对sentinel.conf做完全相同的配置。
启动sentinel
验证高可用特性
在主节点上查看集群信息,可以看到当前主节点是192.168.70.129,
现在把主节点关闭
等待片刻,在其他节点上查看集群信息,发现此时从节点192.168.70.133已经升级为了主节点
此时再重启之前关闭的节点192.168.70.129,等待片刻,发现此时该节点已经加入到集群,角色是从节点