vlambda博客
学习文章列表

redis集群之主从复制+哨兵模式+cluster群集详解

阅读本文前,请您先点击上面的“蓝色字体”,再点击关注,这样您就可以每天学习一点新知识,每天都有进步了。


redis集群类型

redis集群模式主要有以下几种方式:

  • 主从复制(redis2.8版本之前的模式)

  • Redis Sentinel 哨兵模式(redis2.8及之后的模式)

  • Redis Cluster集群模式(客户端sharding)(redis3.0版本之后)

  • Jedis sharding集群(客户端sharding)

  • 利用中间件代理

在这里主要讲述主从复制、哨兵模式、Redis Cluster集群这三种方式。


主从复制


主从复制概念

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave),数据的复制是单向的,只能由主节点到从节点。


默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。


如果Master和Slave之间的链接出现断连现象,Slave可以自动重连Master,但是在连接成功之后,一次完全同步将被自动执行。


主从复制架构图:


工作原理

  • 从服务器连接主服务器,发送SYNC命令;

  • 主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;

  • 主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;

  • 从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;

  • 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;

  • 从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;(从服务器初始化完成)

  • 主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令 (从服务器初始化完成后的操作)


工作原理图:

redis集群之主从复制+哨兵模式+cluster群集详解


主从复制启用


从节点开启主从复制,有3种方式:

  • 配置文件:在从服务器的配置文件中加入:slaveof

  • 启动命令: redis-server启动命令后加入 --slaveof

  • 客户端命令: Redis服务器启动后,直接通过客户端执行命令:slaveof

,则该Redis实例成为从节点。


通过 info replication 命令可以看到复制的一些信息


主从复制优缺点


优点

  • 支持主从复制,可以进行读写分离

  • 为了分载Master的读操作压力,Slave服务器可以为客户端提供只读操作的服务,写服务仍然必须由Master来完成

  • Slave同样可以接受其它Slaves的连接和同步请求,这样可以有效的分载Master的同步压力。

  • Master Server是以非阻塞的方式为Slaves提供服务。所以在Master-Slave同步期间,客户端仍然可以提交查询或修改请求。

  • Slave Server同样是以非阻塞的方式完成数据同步。在同步期间,如果有客户端提交查询请求,Redis则返回同步之前的数据


缺点

  • Redis不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复。

  • 主机宕机,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性。

  • Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。


哨兵模式


基本概念

当主服务器中断服务后,可以将一个从服务器升级为主服务器,以便继续提供服务,但是这个过程需要人工手动来操作。为此,Redis 2.8中提供了哨兵工具来实现自动化的系统监控和故障恢复功能。


它的功能包括以下两个:

  • 监控主服务器和从服务器是否正常运行。

  • 主服务器出现故障时自动将从服务器转换为主服务器。


架构图:

redis集群之主从复制+哨兵模式+cluster群集详解


哨兵模式的优缺点


优点

哨兵模式是基于主从模式的,所有主从模式的优点,哨兵模式都具有。

主从可以自动切换,进行故障转移,系统更健壮,可用性更高。


缺点

Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。


Redis-Cluster集群


cluster集群概述

在 Redis 3.0 之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态,基本已经可以实现高可用,读写分离。


而Redis Cluster 是 Redis 的分布式解决方案,在 3.0 版本正式推出,有效地解决了 Redis 在 分布式 方面的需求。当遇到 单机内存、并发、流量 等瓶颈时,可以采用 Cluster 架构方案达到 负载均衡 的目的。

redis集群之主从复制+哨兵模式+cluster群集详解

在 redis-cluster 架构中,redis-master节点一般用于接收读写,而redis-slave节点则一般只用于备份, 其与对应的 master 拥有相同的 slot 集合,若某个 redis-master 意外失效,则再将其对应的 slave 进行升级为临时 redis-master。


优缺点


优点:

  • 无中心架构

  • 可扩展性高

  • 高可用性

  • 降低运维成本,提高系统的扩展性和可用性。


缺点:

  • 数据通过异步复制,不保证数据的强一致性。

  • 多个业务使用同一套集群时,无法根据统计区分冷热数据,资源隔离性较差,容易出现相互影响的情况。


redis-cluster集群部署

redis官方推荐使用6个节点,其中3个为主节点,3个为从节点。


一旦有master 发生故障的时候,Redis Cluster集群可以选举出对应的slave成为新的主节点,继续对外服务,从而保证服务的高可用性。

这里的实验模拟采用两个虚拟机,每个虚拟机三个网卡,充当6个节点。


环境说明

redis集群之主从复制+哨兵模式+cluster群集详解


部署过程

  1. master 和 slave节点都安装redis包,步骤一样

redis集群之主从复制+哨兵模式+cluster群集详解


2. 主从节点都修改配置文件,进行优化

redis集群之主从复制+哨兵模式+cluster群集详解


redis集群之主从复制+哨兵模式+cluster群集详解


3. 只在master节点操作,安装rvm、ruby等软件包

redis集群之主从复制+哨兵模式+cluster群集详解


安装完提示去网站下载ruby安装包


redis集群之主从复制+哨兵模式+cluster群集详解


redis集群之主从复制+哨兵模式+cluster群集详解


redis集群之主从复制+哨兵模式+cluster群集详解


redis集群之主从复制+哨兵模式+cluster群集详解


5. 创建集群

redis集群之主从复制+哨兵模式+cluster群集详解


6. 验证群集功能,一个主节点master对应一个从节点slave。


--- THE END ---