加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

实现故障恢复自动化:详解Redis哨兵技术

发布时间:2018-11-06 05:49:56 所属栏目:MySql教程 来源:DBAplus社群
导读:副标题#e# 在前面分享的《读完这篇文章,就基本搞定了Redis主从复制》中我们曾提到,Redis主从复制的作用有数据热备、负载均衡、故障恢复等;但主从复制存在的一个问题是故障恢复无法自动化。本文将要介绍的哨兵,它基于Redis主从复制,主要作用便是解决主
副标题[/!--empirenews.page--]

实现故障恢复自动化:详解Redis哨兵技术

在前面分享的《读完这篇文章,就基本搞定了Redis主从复制》中我们曾提到,Redis主从复制的作用有数据热备、负载均衡、故障恢复等;但主从复制存在的一个问题是故障恢复无法自动化。本文将要介绍的哨兵,它基于Redis主从复制,主要作用便是解决主节点故障恢复的自动化问题,进一步提高系统的高可用性。

注:本文内容基于Redis 3.0版本。

一、作用和架构

1.作用

在介绍哨兵之前,首先从宏观角度回顾一下Redis实现高可用相关的技术。它们包括:持久化、复制、哨兵和集群,其主要作用和解决的问题是:

  • 持久化:持久化是最简单的高可用方法(有时甚至不被归为高可用的手段),主要作用是数据备份,即将数据存储在硬盘,保证数据不会因进程退出而丢失。

  • 复制:复制是高可用Redis的基础,哨兵和集群都是在复制基础上实现高可用的。复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。缺陷是故障恢复无法自动化;写操作无法负载均衡;存储能力受到单机的限制。

  • 哨兵:在复制的基础上,哨兵实现了自动化的故障恢复。缺陷是写操作无法负载均衡;存储能力受到单机的限制。

  • 集群:通过集群,Redis解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现了较为完善的高可用方案。

详细内容可回顾:

下面说回哨兵。

Redis Sentinel,即Redis哨兵,在Redis 2.8版本开始引入。哨兵的核心功能是主节点的自动故障转移。下面是Redis官方文档对于哨兵功能的描述:

  • 监控(Monitoring):哨兵会不断地检查主节点和从节点是否运作正常。

  • 自动故障转移(Automatic Failover):当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其他从节点改为复制新的主节点。

  • 配置提供者(Configuration Provider):客户端在初始化时,通过连接哨兵来获得当前Redis服务的主节点地址。

  • 通知(Notification):哨兵可以将故障转移的结果发送给客户端。

其中,监控和自动故障转移功能,使得哨兵可以及时发现主节点故障并完成转移;而配置提供者和通知功能,则需要在与客户端的交互中才能体现。

这里对“客户端”一词在文章中的用法做一个说明:在前面的文章中,只要通过API访问Redis服务器,都会称作客户端,包括Redis-cli、Java客户端Jedis等。为了便于区分说明,本文中的客户端并不包括Redis-cli,而是比Redis-cli更加复杂:Redis-cli使用的是Redis提供的底层接口,而客户端则对这些接口、功能进行了封装,以便充分利用哨兵的配置提供者和通知功能。

2.架构

典型的哨兵架构图如下所示:

实现故障恢复自动化:详解Redis哨兵技术

它由两部分组成:

  • 哨兵节点:哨兵系统由一个或多个哨兵节点组成,哨兵节点是特殊的Redis节点,不存储数据。

  • 数据节点:主节点和从节点都是数据节点。

二、部署

这一部分将部署一个简单的哨兵系统,包含1个主节点、2个从节点和3个哨兵节点。方便起见,所有这些节点都部署在一台机器上(局域网IP:192.168.92.128),使用端口号区分;且节点的配置尽可能简化。

1.部署主从节点

哨兵系统中的主从节点,与普通的主从节点配置是一样的,并不需要做任何额外配置。下面分别是主节点(port=6379)和2个从节点(port=6380/6381)的配置文件,配置都比较简单,不再详述:

  1. #redis-6379.conf  
  2. port 6379  
  3. daemonize yes  
  4. logfile "6379.log"  
  5. dbfilename "dump-6379.rdb"  
  6. #redis-6380.conf  
  7. port 6380  
  8. daemonize yes  
  9. logfile "6380.log"  
  10. dbfilename "dump-6380.rdb"  
  11. slaveof 192.168.92.128 6379  
  12. #redis-6381.conf  
  13. port 6381  
  14. daemonize yes  
  15. logfile "6381.log"  
  16. dbfilename "dump-6381.rdb"  
  17. slaveof 192.168.92.128 6379 

配置完成后,依次启动主节点和从节点:

  • redis-server redis-6379.conf
  • redis-server redis-6380.conf
  • redis-server redis-6381.conf

节点启动后,连接主节点查看主从状态是否正常,如下图所示:

实现故障恢复自动化:详解Redis哨兵技术

2.部署哨兵节点

哨兵节点本质上是特殊的Redis节点。

3个哨兵节点的配置几乎是完全一样的,主要区别在于端口号的不同(26379 / 26380 / 263 81),下面以26379节点为例介绍节点的配置和启动方式;配置部分尽量简化,更多配置会在后面介绍:

  1. #sentinel-26379.conf  
  2. port 26379  
  3. daemonize yes  
  4. logfile "26379.log"  
  5. sentinel monitor mymaster 192.168.92.128 6379 2 

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读