Redis(哨兵模式)

哨兵模式的定义:

是Redis的一种高可用解决方案,通过运行多个Redis实例来监控主从Redis实例的状态,当主实例出现故障时,哨兵会自动选举一个从实例作为新的主实例,从而保证系统的高可用性。哨兵模式可以监控多个主从Redis实例,并在主实例故障时自动进行故障转移,同时还可以对故障进行报警和通知。这种模式可以有效地提高Redis系统的可用性和稳定性。

主从复制中的缺点:

主从复制中主节点宕机了,还需要手工把另一台从节点提升为主节点,这样就不能实现真正的高可用。

上篇文章实现了一主两从的Redis集群,实现了一定程度上的高可用,相比于一个单节点的Redis有了很大的提升。

上篇文章的链接:http://t.csdnimg.cn/51cOU

实现故障的自动转移就是哨兵模式干的事。哨兵会以一个独立的进程运行再Redis集群中。用来监控Redis中的各个节点是否运行正常。

哨兵主要用来执行以下几个功能:

1.  监控:通过不断的发送命令来检查Redis节点是否正常。

2.  通知:如果发现某个节点出现了问题,那么哨兵就会通过发布订阅模式来通知其他节点。

3.  自动故障转移: 当主节点不能正常工作的时候,哨兵会开始一个自动故障转移的操作。他会将一个从节点升级为新的主节点,然后将其他从节点指向新的主节点 。

配置哨兵模式:

首先需要在Redis集群中添加一个哨兵节点,可以使用:

redis -sentinel

来启动哨兵节点。然后创建一个sentinel.cof配置文件。

 

 在配置文件中添加一条语句。monitor后面的是主节点的名称,可以自己定义,最后那个1代表只需要一个哨兵节点同意就可以进行故障转移了。

接下来就可以启动哨兵节点了:

redis-sentinel sentinel.conf

通过上述语句启动一个哨兵节点。 

Redis(哨兵模式)_第1张图片

启动完成之后就可以看到一个运行在26379端口的哨兵模式。

然后将6379端口的服务端终止(ctrl + c或者将终端×掉),来模拟主节点宕机的情况。 

然后就会发现现在新的主节点的端口为6381。

Redis(哨兵模式)_第2张图片 再来查看6381这个端口的节点,发现他现在是主节点。

Redis(哨兵模式)_第3张图片 

6380依然是从节点,他的主节点是6381。

最后有一点需要注意的是:

哨兵本身也是一个进程,自己也会有单节点故障的问题,所以在一般的生产环境会使用3个哨兵节点来保证高可用。这3个哨兵节点会通过选举的方式来选出一个领导者,然后由领导者来监控其他节点,如果领导者挂了,那么其他哨兵节点会重新选举出一个领导者。这样就可以保证哨兵节点的高可用了。

Redis中多个哨兵节点的选举是自动的。当主节点出现故障或不可达时,哨兵节点会自动进行选举,选举出新的主节点,并通知其他从节点切换到新的主节点上。这样可以保证系统的高可用性和故障恢复能力。哨兵节点之间会相互通信,通过投票来决定新的主节点,并在选举完成后自动更新配置,使得系统可以继续正常工作。

你可能感兴趣的:(redis,数据库,笔记,经验分享)