给Redis主从复制模式加上哨兵实现高可用

Posted zhuhuix

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给Redis主从复制模式加上哨兵实现高可用相关的知识,希望对你有一定的参考价值。


文章目录

一、背景

  • 在上篇文章《自已动手搭建环境实现Redis主从复制模式》结尾处,我们提到主从复制模式,存在主机宕机,从机需要人工切换的问题。需要实现主从的自动切换,才能保证Redis服务的高可用。

二、哨兵模式

  • 所谓哨兵模式其实就是启动一组独立的监控进程,通过发送命令监听Redis服务,当主机 宕机时,自动切换从机成为主机,以保证Redis服务的不间断运行。
  • 给Redis主从复制模式加上哨兵实现高可用_redis

三、配置

  • 接下来让我们实际动手给Redis服务器加上哨兵机制。

服务类型

主从关系

IP

Port

redis

主机

172.16.109.118

6379

redis

从机

172.17.0.4

6379

redis

从机

172.33.62.249

6379

sentinel

172.16.109.118

26379

sentinel

172.17.0.4

26379

sentinel

172.33.62.249

26379

  1. 编辑哨兵模式的配置文件
>
# 配置监听的主服务器
# sentinel monitor代表监控
# redismaster代表服务器的名称,可以自定义
# 172.16.109.118代表监控的主服务器,6379代表端口,2代表只有两个或两个以上的哨兵认为主服务器不可用的时候,才会进行failover操作。
sentinel monitor redismaster 172.16.109.118 6379 2
# 禁止保护模式
protected-mode no
# sentinel author-pass定义服务的密码
# redismaster 是服务名称,123456是Redis服务器密码
  1. 启动哨兵,并观察后台进程
# 启动哨兵进程
>

给Redis主从复制模式加上哨兵实现高可用_redis_02

  1. 通过主机上的redis-cli查看哨兵状态
> ./redis-cli -p 26379
127.0.0.1:26379> info
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=redismaster,status=ok,address=172.16.109.118:6379,slaves=2,sentinels=3

四、测试

  1. 关闭主机的redis服务
>

给Redis主从复制模式加上哨兵实现高可用_redis_03

  1. 通过sentinel.log日志文件观察主机切换状态:
1233:X 29 Jan 14:32:23.838 # +sdown master redismaster 172.16.109.118 6379
1233:X 29 Jan 14:32:23.957 # +new-epoch 1
1233:X 29 Jan 14:32:23.962 # +vote-for-leader a200e9f2071762d69e1b07139ee2592c3fc6756a 1
1233:X 29 Jan 14:32:24.409 # +config-update-from sentinel a200e9f2071762d69e1b07139ee2592c3fc6756a 172.16.109.118 26379 @ redismaster 172.16.109.118 6379
1233:X 29 Jan 14:32:24.409 # +switch-master redismaster 172.16.109.118 6379 172.17.0.4 6379
1233:X 29 Jan 14:32:24.409 * +slave slave 172.33.62.249:6379 172.33.62.249 6379 @ redismaster 172.17.0.4 6379
1233:X 29 Jan 14:32:24.409 * +slave slave 172.16.109.118:6379 172.16.109.118 @ redismaster 172.17.0.4 6379
  • 从以上信息可以得到其中一台从机被选举投票后切换成了主机,而原来的主机变成了从机

服务类型

主从关系

IP

Port

redis

主机->从机

172.16.109.118

6379

redis

从机->主机

172.17.0.4

6379

redis

从机->从机

172.33.62.249

6379

sentinel

172.16.109.118

26379

sentinel

172.17.0.4

26379

sentinel

172.33.62.249

26379

  1. 重新启协原主机的redis服务,观察原主机变为从机后,是否能从新的主机上同步数据
  • 我们首选通过redis连接客户端在新的主机上增加一些键值对
  • 给Redis主从复制模式加上哨兵实现高可用_redis_04

  • 然后重启原主机的redis服务,并观察同步信息
>
  • 原主机已经完成了同步
  • 给Redis主从复制模式加上哨兵实现高可用_主从复制_05

五、小结

  1. 哨兵只是一个进程,不存储数据,只是监控redis服务。
  2. 主机宕机,哨兵组会通过投票机制,将其中一台从机切换为主机,而原有的主机变成了从机。
  3. 通过哨兵机制原主从复制模式下人工切换的方式,变成了自动切换,保证了redis服务的高可用。


以上是关于给Redis主从复制模式加上哨兵实现高可用的主要内容,如果未能解决你的问题,请参考以下文章

Redis技术探索「高可用架构模式」哨兵(sentinel)模式实现主从故障互切换模式详解

Redis 大型攻略之主从复制哨兵模式群集模式

Redis 大型攻略之主从复制哨兵模式群集模式

Redis 高可用之主从复制哨兵模式集群模式

高可用集群架构——redis的主从复制与哨兵模式,cluster

Redis高可用集群方案(主从复制,哨兵模式,Redis集群)