redis cluster搭建实践(非常详细,值得收藏)

一、RedisCluster(Redis集群)简介
redis是一个开源的keyvalue存储系统 , 受到了广大互联网公司的青睐 。 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个节点 。二、集群搭建需要的环境2.1Redis集群至少需要3个节点 , 因为投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了 , 所以2个节点无法构成集群 。
2.2要保证集群的高可用 , 需要每个节点都有从节点 , 也就是备份节点 , 所以Redis集群至少需要6台服务器 。 因为我没有那么多服务器 , 也启动不了那么多虚拟机 , 所在这里搭建的是伪分布式集群 , 即一台服务器虚拟运行6个redis实例 , 修改端口号为(7001-7006) , 当然实际生产环境的Redis集群搭建和这里是一样的 。 2.3安装ruby三、集群搭建具体步骤如下(注意要关闭防火墙)3.1在usr/local目录下新建redis-cluster目录 , 用于存放集群节点redis cluster搭建实践(非常详细,值得收藏) cpredis-trib.rb/usr/local/redis-cluster然后使用该脚本文件搭建集群 , 指令如下:
./redis-trib.rbcreate--replicas147.106.219.251:700147.106.219.251:700247.106.219.251:700347.106.219.251:700447.106.219.251:700547.106.219.251:7006注意:此处大家应该根据自己的服务器ip输入对应的ip地址!
3.11最后连接集群节点 , 连接任意一个即可:
redis01/redis-cli-p7001-c注意:一定要加上-c , 不然节点之间是无法自动跳转的!如下图可以看到 , 存储的数据(key-value)是均匀分配到不同的节点的:
最后 , 加上两条redis集群基本命令:1.查看当前集群信息
clusterinfo【redis cluster搭建实践(非常详细,值得收藏)】2.查看集群里有多少个节点
clusternodes


    推荐阅读