Redis哨兵集群的搭建


Redis哨兵模式的原理

Redis哨兵(Redis Sentinel)模式是Redis官方推荐的一种高可用方案,它弥补了主从模式的不足。哨兵(Sentinel)通过监控的方式获取节点的工作状态是否正常,当节点发生故障时,Sentinel会自动进行故障转移,并将其监控的从节点(Slave)提升为主节点(master),从而保证了系统的高可用性。具体工作原理如下:

  • 每个Sentinel以每秒钟一次的频率向它所监视的Master,Slave节点以及其他Sentinel实例发送一个PING命令。
  • 如果一个实例距离最后一次有效回复PING命令的时间超过down-after-milliseconds选项所指定的值,则这个实例会被当前Sentinel标记为主观下线。
  • 如果一个Master被标记为主观下线,则正在监视这个Master的所有Sentinel会以每秒一次的频率确认此Master节点是否进入了主观下线状态。
  • 当有足够数量的Sentinel(大于等于配置文件指定的值)在指定的时间范围内确认Master的确进入了主观下线状态,则Master会被标记为客观下线 。
  • 当Master被Sentinel标记为客观下线时,Sentinel会向下线Master的所有Slave节点发送INFO命令,发送频率会从10秒一次改为每秒一次(在一般情况下,每个Sentinel会以每10秒一次的频率向它监视的所有Master,Slave发送INFO命令)。
  • 若没有足够数量的Sentinel同意Master已经下线,Master的客观下线状态就会变成主观下线。若Master重新向Sentinel的PING命令返回有效回复,Master的主观下线状态就会被移除。
  • 若Master已客观下线,所有Sentinel节点会投票选举一个Sentinel节点进行故障处理,在从节点中重新选取一个主节点,其他从节点挂载到新的主节点上并自动复制新主节点的数据。

Redis哨兵集群的搭建

集群环境准备

1、一台Redis主节点服务器,两台Redis从节点服务器搭建一主二从主从复制集群。

  • Master:主节点服务器,IP地址为192.168.238.71。
  • Slave1:从节点服务器,IP地址为192.168.238.72。
  • Slave2:从节点服务器,IP地址为192.168.238.73。

2、三台Redis哨兵节点服务器。

  • Sentinel1:哨兵节点服务器,IP地址为192.168.238.74。
  • Sentinel2:哨兵节点服务器,IP地址为192.168.238.75。
  • Sentinel3:哨兵节点服务器,IP地址为192.168.238.76。

3、开放Redis服务器与哨兵服务器的端口。

3.1、开放Redis服务器的6379端口。

Redis

3.2、开放哨兵服务器的26379端口。

Redis

哨兵模式的配置

1、修改三台哨兵服务器的IP地址绑定、关闭保护模式并配置监控的主节点,主要配置项如下:

  • bind:只允许绑定的IP地址连接。
  • protected-mode:保护模式,默认为yes。
  • daemon:是否后台运行,默认为no。
  • sentinel monitor:监控的主节点信息。

1.1、在配置文件中新增以下内容,以下三项在配置文件中默认未启用。

Redis

1.2、配置监控的主节点信息。

Redis
  • mymaster:用户自定义主节点名称。
  • 192.168.238.71:主节点IP地址。
  • 6379:主节点端口。
  • 2:重新选举主节点时,需要通过的票数。

1.3、修改完毕,查看配置文件。

Redis

2、配置完成后,启动三台哨兵服务器。

Redis

3、登录任意一台哨兵服务器,查看哨兵状态。

Redis

4、查看哨兵日志,显示了当前的主从状态。

Redis

故障转移测试

1、关闭主节点服务器,再次查看哨兵状态。

Redis

2、查看哨兵日志,主节点已发生了转移。

Redis

发表评论

评论数量:0