redis哨兵

发布时间 2023-04-03 17:35:20作者: 人在代码在

Redis哨兵是一个用于监控Redis主从复制和故障转移的工具,它可以自动发现Redis的主从关系,并在主节点失效时自动完成故障转移。

Redis哨兵本身不存储数据,它只是在Redis集群中进行监控和管理,通过不断地与主节点、从节点进行交互,来判断节点的状态是否正常,当主节点失效时,哨兵会自动选举出新的主节点,从而保证Redis集群的高可用性。

在Redis集群中,所有的数据都存储在Redis节点中,而不是存储在哨兵中,哨兵仅仅是起到了一个协调管理的作用。因此,哨兵本身并不需要存储数据,它只需要记录节点的状态和配置信息即可。

 

Redis哨兵在进行选举时,会依据以下步骤来完成:

  1. 哨兵会向其他哨兵发送SENTINEL is-master-down-by-addr命令,来检查主节点是否失效。

  2. 如果多数派的哨兵都认为主节点失效了,那么它们就会开始进行选举。

  3. 哨兵会通过sentinel leader命令,来选举出新的领头哨兵。

  4. 领头哨兵会向其他哨兵发送SENTINEL is-master-down-by-addr命令,来确认主节点是否真的失效了。

  5. 如果确认主节点失效了,领头哨兵就会开始选举新的主节点。

  6. 领头哨兵会向其他从节点发送SLAVEOF命令,将它们切换到新的主节点上。

  7. 如果有多个从节点同时要求成为新的主节点,那么哨兵会根据配置文件中的优先级(priority)、复制偏移量(offset)、运行ID(runid)等因素来决定哪个从节点成为新的主节点。

需要注意的是,为了保证选举的可靠性,配置文件中至少需要配置三个哨兵节点。这样,当一个哨兵节点失效时,其他哨兵节点仍然可以进行选举。同时,为了避免脑裂问题,哨兵节点之间需要通过网络分区避免同时进行选举。