redis 集群环境搭建和工作原理

相关阅读:
Redis下载及安装(windows版)
linux 安装redis 完整步骤
Redis主从架构搭建详细步骤
redis哨兵环境搭建和工作原理
如果大家有前面安装,或者主从等相关内容查看相关阅读,这里是基于以上内容都会的情况下直接搭建的集群环境

redis集群相关介绍

redis 集群环境搭建和工作原理_第1张图片

  • redis是一个开源的key value存储系统,受到了广大互联网公司的青睐。redis3.0版本之前只支持单例模式,在3.0版本及以后才支持集群,我这里用的是redis3.0.0版本;
  • redis集群采用P2P模式,是完全去中心化的,不存在中心节点或者代理节点;
  • redis集群是没有统一的入口的,客户端(client)连接集群的时候连接集群中的任意节点(node)即可,集群内部的节点是相互通信的(PING-PONG机制),每个节点都是一个redis实例;
  • 为了实现集群的高可用,即判断节点是否健康(能否正常使用),redis-cluster有这么一个投票容错机制:如果集群中超过半数的节点投票认为某个节点挂了,那么这个节点就挂了(fail)。这是判断节点是否挂了的方法;
  • 那么如何判断集群是否挂了呢? -> 如果集群中任意一个节点挂了,而且该节点没有从节点(备份节点),那么这个集群就挂了。这是判断集群是否挂了的方法;
  • 那么为什么任意一个节点挂了(没有从节点)这个集群就挂了呢? -> 因为集群内置了16384个slot(哈希槽),并且把所有的物理节点映射到了这16384[0-16383]个slot上,或者说把这些slot均等的分配给了各个节点。当需要在Redis集群存放一个数据(key-value)时,redis会先对这个key进行crc16算法,然后得到一个结果。再把这个结果对16384进行求余,这个余数会对应[0-16383]其中一个槽,进而决定key-value存储到哪个节点中。所以一旦某个节点挂了,该节点对应的slot就无法使用,那么就会导致集群无法正常工作。
  • 综上所述,每个Redis集群理论上最多可以有16384个节点。

redis 集群环境搭建和工作原理_第2张图片
redis 集群环境搭建和工作原理_第3张图片

redis 集群前准备工作

redis 集群环境搭建和工作原理_第4张图片
这里我创建了一个clusterconf文件夹目的是把集群的相关配置都放在这个下面
redis 集群环境搭建和工作原理_第5张图片
复制一份原来的redis-6379.conf文件到这个文件夹下内容添加红框内容,含义分别是:
redis 集群环境搭建和工作原理_第6张图片
redis 集群环境搭建和工作原理_第7张图片

 175  sed "s/6379/6380/g" redis-6379.conf redis-6380.conf 
  176  sed "s/6379/6380/g" redis-6379.conf > redis-6380.conf 
  177  sed "s/6379/6381/g" redis-6379.conf > redis-6381.conf 
  178  sed "s/6379/6382/g" redis-6379.conf > redis-6382.conf 
  179  sed "s/6379/6383/g" redis-6379.conf > redis-6384.conf 
  180  sed "s/6379/6384/g" redis-6379.conf > redis-6384.conf 
  181  sed "s/6379/6385/g" redis-6379.conf > redis-6385.conf 

1复制为6(一会3主3从) ,使用这个命令复制出来的文件内容都已经修改好了,不用一个一个的去修改了,dir是配置的data我把data下面全部删除,方便后面我们观察效果,
redis 集群环境搭建和工作原理_第8张图片
如果没有安装ruby的情况下安装ruby

yum install ruby

我们现在开启6个窗口,启动cluster下面的6个rides
redis 集群环境搭建和工作原理_第9张图片
这里就是正常启动rides没有任何区别我这里是用的窗口启动方便观察日志,生产环境不会这么做的,启动也不会一个一个的启动,使用一个脚本就可以,这都是次要的全部启动就ok了
到这来准备工作就完成了

redis集群操作

我们在打开一个窗口启动集群
低版本都是用redis-trib.rb 命令
redis 集群环境搭建和工作原理_第10张图片
这里直接提醒我们命令已经换了

redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 --cluster-replicas 1

这里我们就直接去我们redis安装目录下使用redis-cli命令启动了,cluster-replicas 1 这个1 表示主后面跟几个从,我们这里是3主3从所以是1,看下面的打印信息前面3个为主后面三个为从
redis 集群环境搭建和工作原理_第11张图片
在这里插入图片描述
上面3行表示每个主分的曹的编号,下面3行是表示哪个从连的哪个主

此时我们看看我们data目录下
redis 集群环境搭建和工作原理_第12张图片
redis 集群环境搭建和工作原理_第13张图片
继续gogo
redis 集群环境搭建和工作原理_第14张图片
redis 集群环境搭建和工作原理_第15张图片
这里我把每个信息都截图下拉目的是方便一会我们理解其中的原理
主的信息
![在这redis 集群环境搭建和工作原理_第16张图片
这类说明下:上面环境搭建好了是好了,但是由于一个虚拟机跑6个redis导致直接卡死没办法我复制了2个虚拟机下面的截图是基于新环境下搭建的
说明如下:

192.168.43.230:6379 主1
192.168.43.231:6379 主2
192.168.43.232:6379 主3
192.168.43.230:6380 从1
192.168.43.231:6380 从2
192.168.43.232:6380 从3

数据设置和获取

存数据
redis 集群环境搭建和工作原理_第17张图片
此时链接客户端的时候需要加-c
slot 5798 也就是说存储到曹编号是5789上面

redis 集群环境搭建和工作原理_第18张图片
主1设置数据
在这里插入图片描述
redis 集群环境搭建和工作原理_第19张图片
主2 从3获取数据都没问题,当然其他的都可以获取,这里就不一一截图了

主从切换

从下线

这里我就让从1下线:

在这里插入图片描述
这个时候另外五个都获取到从1下线了,大家可以观察每一个窗口的日志信息

从1上线:
redis 集群环境搭建和工作原理_第20张图片
相互通信 从1又上线了, 其他的同步信息就不说了,从下线还是比较简单

主下线

主3 下线
在这里插入图片描述
此时我们查看下节点信息:
redis 集群环境搭建和工作原理_第21张图片
4个主一个fail的3个成功的, 2个从,也就是说一个slave编程了master

我们再让下线的上线:

在这里插入图片描述
在这里插入图片描述
这个时候我们发现主从发生切换

其他节点操作命令

redis 集群环境搭建和工作原理_第22张图片

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