redis分布式集群搭建(详细)

首先,先说下redis单机版的搭建过程

1.下载redis的安装包,然后解压,我这里下载的是 redis-5.0.7.tar.gz;

2.进入到解压缩后的redis文件目录(此时可以看到Makefile文件),用编译安装redis源文件;

  make PREFIX=/usr/local/redis install   此时,编译完成。

3.然后目录下回出现一个bin文件夹,

4.进入/opt/redis/bin目录,直接./redis-server启动redis(此时为前端启动redis);
5.将redis启动方式改为后端启动,具体做法:把解压缩的redis文件下的redis.conf文件复制到/opt/redis/bin目录下,然后修改该redis.conf文件->daemonize:no 改为daemonize:yes;
5.在目录下通过./redis-server redis.conf 启动redis(此时为后台启动)。
  综上redis单机版安装启动完成。


进入正题,搭建redis集群

一、Redis Cluster(Redis集群)简介

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

二、集群搭建需要的环境

2.1 Redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以2个节点无法构成集群。
2.2 要保证集群的高可用,需要每个节点都有从节点,也就是备份节点,所以Redis集群至少需要6台服务器。因为我没有那么多服务器,也启动不了那么多虚拟机,所在这里搭建的是伪分布式集群,即一台服务器虚拟运行6个redis实例,修改端口号为(9001-9006),当然实际生产环境的Redis集群搭建和这里是一样的。
2.3 安装ruby。

三、集群搭建具体步骤如下(注意要关闭防火墙)

扫描二维码关注公众号,回复: 12198804 查看本文章

3.1 在/opt目录下新建redis-cluster目录,用于存放集群节点;

3.2 把redis目录下的bin目录下的所有文件复制到/opt/redis-cluster/redis01目录下;

3.3 修改该目录下的redis.conf文件,具体修改三处地方:一是修改bind 自己的IP,二是端口号修改为9001(默认是6379),三是开启集群创建模式,打开注释即可。分别如下图所示:

3.4 将redis-cluster/redis01文件复制5份到redis-cluster目录下(redis02-redis06),创建6个redis实例,模拟Redis集群的6个节点。然后将其余5个文件下的redis.conf里面的端口号分别修改为9002-9006。分别如下图所示:
创建redis02-06目录

3.5 分别修改redis02-redis06的redis.conf文件的port端口号

3.6 接着启动所有redis节点,由于一个一个启动太麻烦了,所以在这里创建一个批量启动redis节点的脚本文件,命令为start-all.sh,文件内容如下:

3.7 执行start-all.sh 启动全部redis,并查看进程

3.8 至此6个redis节点启动成功,接下来正式开启搭建集群,以上都是准备条件。

要搭建集群的话,需要使用一个工具(脚本文件),这个工具在redis解压文件的源代码里。因为这个工具是一个ruby脚本文件,所以这个工具的运行需要ruby的运行环境,就相当于java语言的运行需要在jvm上。所以需要安装ruby,指令如下:

3.9 下载redis-3.5.5.gem ,并安装。

3.10 然后搭建redis集群,中间需手动yes。如下:

redis-cli --cluster create 192.168.26.11:9001 192.168.26.11:9002 192.168.26.11:9003 192.168.26.11:9004 192.168.26.11:9005 192.168.26.11:9006 --cluster-replicas 1

    至此,Redi集群搭建成功!大家注意最后一段文字,显示了每个节点所分配的slots(哈希槽),这里总共6个节点,其中3个是从节点,所以3个主节点分别映射了0-5460、5461-10922、10933-16383solts。

3.11 最后测试集群连接节点。

最后终于搭建完成!!!有不足之处,多指教!!!!!!

猜你喜欢

转载自blog.csdn.net/qq_41587243/article/details/103878605