Redis集群

目录

一、Redis主从复制

二、Reids哨兵模式

三、Redis集群


一、Redis主从复制

(一)概念

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

(二)作用

数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。

负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。

高可用:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。

(三)缺点

故障恢复无法自动化;写操作无法负载均衡;存储能力受到单机的限制。

(四)优点

主从复制,主机会自动将数据同步到从机,实现了读写分离

从服务器提供只读操作,主服务器提供读读写操作

从服务器同样可以接受其他从服务器的连接和同步请求,这样可以有效的分载主服务器的同步压力

主服务器是以非阻塞的方式为从服务器提供服务,所以在主从同步期间,客户端依然可以提交查询或修改请求

从服务器也是以非阻塞的方式完成数据同步的,在同步期间,如果有客户端提供查询请求,Redis则返回同步之前的数据

(五)搭建并验证

修改主服务器配置文件

Redis集群_第1张图片

修改从服务器配置文件

 

 Redis集群_第2张图片

 

 Redis集群_第3张图片

启动主与从服务

Redis集群_第4张图片

验证:

Redis集群_第5张图片

 这样主从复制就配置好了

二、Reids哨兵模式

(一)概念

是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的 Master 并将所有 Slave 连接到新的 Master。所以整个运行哨兵的集群的数量不得少于3个节点。依托于主从模式

(二)作用

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

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

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

(三)缺点

写操作无法负载均衡

存储能力受到单机的限制

哨兵无法对从节点进行自动故障转移,在读写分离场景下,从节点故障会导致读服务不可用,需要对从节点做额外的监控、切换操作。

(四)优点

(五)搭建

复制哨兵文件         分别监听主从        (一主二从即可)

 修改文件

6379

Redis集群_第6张图片

 6380

Redis集群_第7张图片

 6381

Redis集群_第8张图片

启动服务

redis-sentinel  配置文件路径

Redis集群_第9张图片

 (六) 验证

查看哨兵日志

cat /var/log/redis/sentinel.log

Redis集群_第10张图片

停止master后,slave会通过选举产生新的master

Redis集群_第11张图片

查看是否生成新的主服务器  cat /var/log/redis/sentinel.log

Redis集群_第12张图片

主服务器从端口6379变为6380

如果此时将原来的master6379上线,6381还会是master吗?

答案是不会

哨兵配置文件会自动修改监听的master节点地址为新的master节点地址

三、Redis集群

(一)概念

Redis3.0版本以上开始支持cluster,采用的是hashslot(hash槽),可以将多个Redis实例整合在一起,形成一个群集,也就是将数据分散到群集的多台机器上。

(二)原理

Redis Cluster是一个无中心的结构,每个节点都保存数据和整个群集的状态。每个节点都会保存其他节点的信息,知道其他节点所负责的槽,并且会与其他节点定时发送心跳信息,能够及时感知群集中异常的节点。

(三)架构细节

1、所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。

2、节点的失效(fail)在群集中超过半数的主(master)节点检测失效时才生效。

3、客户端与 redis 节点直连,不需要中间代理(proxy)层,客户端不需要连接群集所有节点,连接群集中任何一个可用节点即可。

4、redis-cluster 把所有的物理节点映射到【0-16383】slot 上,cluster 负责维护 node<->slot<->key。

(四)选举过程

选举过程是群集中所有master参与,如果半数以上master节点与当前 master 节点通信超时(cluster—node—timeout),认为当前 master 节点挂掉。以下两种情况为整个群集不可用(cluster_state:fail),当群集不可用时,所有对群集的操作都不可用,收到((error)CLUSTEFDOWN The cluster is down)错误。

如果群集任意 master挂掉,且当前 master 没有 slave,则群集进入 fail状态,也可以理解成群集的slot映射【0 ~16383】不完整时进入fail状态。

如果群集中超过半数的master挂掉,无论是否有slave,群集都进入 fail状态。

默认情况下,每个群集的节点都使用两个TCP端口.一个是6379,一个是16379;6379服务于客户端的连接,16379 用于群集总线,即使用二进制协议的节点到节点通信通道。节点使用群集总线进行故障检测、配置更新、故障转移授权等。如果开启了防火墙,需要开放这两个端口。

(五)搭建分布式集群

三台虚拟机(192.168.115.3;192.168.115.4;192.168.115.5)都yum安装Redis

Redis集群_第13张图片

开始配置

第一台Redis集群_第14张图片

修改配置文件redis1_6379.conf与redis2_6380.conf

redis1_6379.conf

Redis集群_第15张图片

Redis集群_第16张图片

Redis集群_第17张图片

 redis2_6380.conf

Redis集群_第18张图片Redis集群_第19张图片

Redis集群_第20张图片

Redis集群_第21张图片

创建目录

Redis集群_第22张图片启动服务

Redis集群_第23张图片

第二台

Redis集群_第24张图片

修改配置文件redis3_6379.conf与redis4_6380.conf

redis3_6379.conf

Redis集群_第25张图片

Redis集群_第26张图片

Redis集群_第27张图片

redis4_6380.conf

Redis集群_第28张图片

Redis集群_第29张图片

Redis集群_第30张图片

创建目录

Redis集群_第31张图片

启动服务

Redis集群_第32张图片

第三台 

Redis集群_第33张图片

修改配置文件redis5_6379.conf与redis6_6380.conf

redis5_6379.conf

Redis集群_第34张图片

Redis集群_第35张图片

Redis集群_第36张图片

redis6_6380.conf

Redis集群_第37张图片

Redis集群_第38张图片

Redis集群_第39张图片

创建目录

Redis集群_第40张图片

启动服务

Redis集群_第41张图片

构建集群

搭建好服务选择一台机子做集群将其他节点加入集群

这里选择第一台

Redis集群_第42张图片

Redis集群_第43张图片

分配slot

Redis集群_第44张图片

 建立主从关系

Redis集群_第45张图片

验证是否成功

Redis集群_第46张图片Redis集群_第47张图片

你可能感兴趣的:(redis,java,mybatis)