Redis Cluster(Redis集群)简介

redis是一个开源的key value存储系统,受到了广大互联网公司的青睐。redis3.0版本之前只支持单例模式,在3.0版本及以后才支持集群,我这里用的是redis5.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个节点。

搭建过程

一、下载并且解压redis5.0.0安装包

下载链接:wget https://download.redis.io/releases/redis-5.0.0.tar.gz

解压:

redis集群 ipv6地址 redis集群是ap还是cp_ubuntu

安装:

下载依赖:
apt-get install build-essential gcc gcc+ -y
biud安装:
cd redis-5.0.0
make && make install

配置多实例:

这里将原配置文件进行备份,并且拷贝两份配置文件
 cp redis.conf redis.conf.bak
 cp  redis.conf  redis1.conf 
 cp  redis.conf  redis2.conf

配置文件内容如下:

port 6379
 bind 172.25.236.38
 daemonize yes
 pidfile 6379.pid
 cluster-enabled yes
 cluster-config-file 6379_node.conf
 cluster-node-timeout 15000
 appendonly yes

大家自己观察下需要改动的几个地方

port 6379   
pidfile 6379.pid 
cluster-config-file 6379_node.conf

redis集群 ipv6地址 redis集群是ap还是cp_redis集群 ipv6地址_02

启动实例:

redis-server /data/redis-5.0.0/redis1.conf
redis-server /data/redis-5.0.0/redis2.conf

查看进程:

redis集群 ipv6地址 redis集群是ap还是cp_redis_03


注意:这里我使用三台宿主机共创建了6个节点,接下来组成集群

5.0版本的redis我们可以直接使用redis-cli创建集群,这里我没有使用密码,如需创建密码集群 可直接 redis-cli --cluster -a 密码 实现。

redis-cli  --cluster create --cluster-replicas 1 172.25.236.38:6379 172.25.236.38:6380 172.25.236.40:6379 172.25.236.40:6380 172.25.236.56:6379 172.25.236.56:6380

命令输出后,会给到你一个配置列表,如果你觉得没有问题,直接yes 确认即可创建完成。 至此redis集群创建完成!!

注:登陆集群时,要加 -c 参数,代表进入redis集群模式

redis集群 ipv6地址 redis集群是ap还是cp_ubuntu_04


查看集群状态:

redis集群 ipv6地址 redis集群是ap还是cp_linux_05