linux企业运维--redis cluster

Redis Cluster(Redis集群)简介

1.redis集群采用P2P模式,是完全去中心化的,不存在中心节点或者代理节点;redis集群是没有统一的入口的,客户端(client)连接集群的时候连接集群中的任意节点(node)即可,集群内部的节点是相互通信的(PING-PONG机制),每个节点都是一个redis实例;

2.为了实现集群的高可用,即判断节点是否健康(能否正常使用),redis-cluster有这么一个投票容错机制:如果集群中超过半数的节点投票认为某个节点挂了,那么这个节点就挂了(fail)。这是判断节点是否down掉的方法;

3.判断集群down掉的方式:如果集群中任意一个节点挂了,而且该节点没有从节点(备份节点),那么这个集群就down掉;

4.那么为什么任意一个节点挂了(没有从节点)这个集群就挂了呢?, 因为集群内置了16384个slot(哈希槽),并且把所有的物理节点映射到了这16384[0-16383]个slot上,或者说把这些slot均等的分配给了各个节点。当需要在Redis集群存放一个数据(key-value)时,redis会先对这个key进行crc16算法,然后得到一个结果。再把这个结果对16384进行求余,这个余数会对应[0-16383]其中一个槽,进而决定key-value存储到哪个节点中。所以一旦某个节点down了,该节点对应的slot就无法使用,那么就会导致集群无法正常工作。

创建集群

关闭之前的redis
linux企业运维--redis cluster_第1张图片
linux企业运维--redis cluster_第2张图片
linux企业运维--redis cluster_第3张图片
linux企业运维--redis cluster_第4张图片
readme中有步骤介绍
linux企业运维--redis cluster_第5张图片
启动脚本
linux企业运维--redis cluster_第6张图片
查看进程
linux企业运维--redis cluster_第7张图片
此时已经有6个正在运行中的 Redis 实例
可以看到,六个节点中, 三个为主节点, 其余三个则是各个主节点的从节点;
linux企业运维--redis cluster_第8张图片
linux企业运维--redis cluster_第9张图片
集群分片模式
如果Redis只用复制功能做主从,那么当数据量巨大的情况下,单机情况下可能已经承受不下一份数据,更不用说是主从都要各自保存一份完整的数据。在这种情况下,数据分片(哈希分片)是一个非常好的解决办法。
Redis的Cluster正是用于解决该问题。它主要提供两个功能:
(1)自动对数据分片,落到各个节点上;
(2)即使集群部分节点失效或者连接不上,依然可以继续处理命令

使用集群

任意进入一个,cluster info :查看集群状态
使用redis-cli来进行集群的交互;
使用客户端连接任意一个节点即可,使用-c 表示以集群的方式登录,-p 指定端口;
注意:一定要加上-c,不然节点之间是无法自动跳转的
linux企业运维--redis cluster_第10张图片
linux企业运维--redis cluster_第11张图片

linux企业运维--redis cluster_第12张图片
redis集群无中心化的特点,任何节点都能进行读写操作
注意观察,它会自动切换到另一个redis去写或者读,可以看到在端口为30001的node上进行赋值操作,会重定向到在端口为30002的node上
linux企业运维--redis cluster_第13张图片
linux企业运维--redis cluster_第14张图片

出现故障

如果只坏了一组中的一个
请添加图片描述
linux企业运维--redis cluster_第15张图片
如果一组master和slave都坏了
linux企业运维--redis cluster_第16张图片

linux企业运维--redis cluster_第17张图片
一对master和slave down,集群不完整,不可用
linux企业运维--redis cluster_第18张图片
linux企业运维--redis cluster_第19张图片

添加新的节点

linux企业运维--redis cluster_第20张图片
linux企业运维--redis cluster_第21张图片

linux企业运维--redis cluster_第22张图片
linux企业运维--redis cluster_第23张图片
linux企业运维--redis cluster_第24张图片
将节点加入了集群中,但是并没有分配slot(哈希槽),所以这个节点并没有真正的开始分担集群工作。
集群完整性检查:
集群完整性是指所有的槽都分配到存活的redis主节点上,只要16384个槽中有一个槽未被分配,则表示集群不完整

linux企业运维--redis cluster_第25张图片
分配hash槽
linux企业运维--redis cluster_第26张图片
linux企业运维--redis cluster_第27张图片
linux企业运维--redis cluster_第28张图片

redis cluster的删除

linux企业运维--redis cluster_第29张图片
linux企业运维--redis cluster_第30张图片
linux企业运维--redis cluster_第31张图片

redis 持久化

linux企业运维--redis cluster_第32张图片

linux企业运维--redis cluster_第33张图片
linux企业运维--redis cluster_第34张图片

你可能感兴趣的:(linux,运维)