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

使用集群

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

请添加图片描述
redis集群无中心化的特点,任何节点都能进行读写操作
注意观察,它会自动切换到另一个redis去写或者读,可以看到在端口为30001的node上进行赋值操作,会重定向到在端口为30002的node上
请添加图片描述
请添加图片描述

出现故障

如果只坏了一组中的一个
请添加图片描述
请添加图片描述
如果一组master和slave都坏了
请添加图片描述

请添加图片描述
一对master和slave down,集群不完整,不可用
请添加图片描述
请添加图片描述

添加新的节点

请添加图片描述
请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
将节点加入了集群中,但是并没有分配slot(哈希槽),所以这个节点并没有真正的开始分担集群工作。
集群完整性检查:
集群完整性是指所有的槽都分配到存活的redis主节点上,只要16384个槽中有一个槽未被分配,则表示集群不完整

请添加图片描述
分配hash槽
请添加图片描述
请添加图片描述
请添加图片描述

redis cluster的删除

请添加图片描述
请添加图片描述
请添加图片描述

redis 持久化

在这里插入图片描述

请添加图片描述
请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值