redis之路(七):Redis单机多节点集群

第一步:安装Redis

前面已经安装过了 不解释,

Reids安装包里有个集群工具,要复制到/usr/local/bin里去

cp redis-3.2.9/src/redis-trib.rb /usr/local/bin
在这里插入图片描述

第二步:修改配置,创建节点

我们现在要搞六个节点,三主三从,

端口规定分别是7001,7002,7003,7004,7005,7006

我们先在root目录下新建一个redis_cluster目录,然后该目录下再创建6个目录,

分别是7001,7002,7003,7004,7005,7006,用来存在redis配置文件;

这里我们要使用redis集群,要先修改redis的配置文件redis.conf

在这里插入图片描述
在这里插入图片描述

先复制一份配置文件到7001目录下

[root@localhost redis_cluster]# cd

[root@localhost ~]# cp redis-3.2.9/redis.conf redis_cluster/7001/

我们修改下这个配置文件

vi redis_cluster/7001/redis.conf

修改一下几个,注意前面有#的也要去掉#

port 7001 //六个节点配置文件分别是7001-7006

daemonize yes //redis后台运行

pidfile /var/run/redis_7001.pid //pidfile文件对应7001-7006

cluster-enabled yes //开启集群

cluster-config-file nodes_7001.conf //保存节点配置,自动创建,自动更新对应7001-7006

cluster-node-timeout 5000 //集群超时时间,节点超过这个时间没反应就断定是宕机

appendonly yes //存储方式,aof,将写操作记录保存到日志中

在这里插入图片描述

7001下的修改完后,我们把7001下的配置分别复制到7002-7006 然后对应的再修改下配置,也就是把文件中有7001的都改成响应的端口;
在这里插入图片描述

编辑后面5个配置文件,把 port ,pidfile,cluster-config-file 分别修改下即可;
在这里插入图片描述

第三步:启动六个节点的redis

[root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7001/redis.conf

[root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7002/redis.conf

[root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7003/redis.conf

[root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7004/redis.conf

[root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7005/redis.conf

[root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7006/redis.conf

查找下redis进程

ps -ef | grep redis  

在这里插入图片描述

出现如图,说明都启动成功了

第四步:创建集群

edis官方提供了redis-trib.rb工具,第一步里已经放到里bin下 ;

但是在使用之前 需要安装ruby,以及redis和ruby连接,步骤如下

1.yum install centos-release-scl-rh    //会在/etc/yum.repos.d/目录下多出一个CentOS-SCLo-scl-rh.repo源

2.yum install rh-ruby23 -y    //直接yum安装即可

3.scl enable rh-ruby23 bash    //必要一步 代表2.3版本

4.ruby -v    //查看安装版本

5.gem install redis

创建集群

[root@localhost ~]# redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

在这里插入图片描述

在这里插入图片描述

从运行结果看 主节点就是7001 7002 7003 从节点分别是7004 7005 7006

7001分配到的哈希槽是 0-5460

7002分配到的哈希槽是 5461-10922

7003分配到的哈希槽是 10923-16383

最后问我们是否接受上面的设置,输入yes 就表示接受,我们输入yes

然后显示:
在这里插入图片描述

显示配置哈希槽,以及集群创建成功,可以用了

前面的M代表master也就是主节点,S代表slave奴隶节点也就是从节点

第五步:集群数据测试

我们先连接任意一个节点,然后添加一个key:

redis-cli是redis默认的客户端工具,启动时加上`-c`参数,-p指定端口,就可以连接到集群。

连接任意一个节点端口:

[root@localhost ~]# /usr/local/redis/bin/redis-cli -c -p 7002

在这里插入图片描述

前面说过Redis Cluster值分配规则,所以分配key的时候,它会使用CRC16(‘my_name’)%16384算法,来计算,将这个key 放到哪个节点,这里分配到了4038slot 就分配到了7003(0-5460)这个节点上。所以有:

Redirected to slot [4038] located at 127.0.0.1:7003

我们从其他集群节点 ,都可以获取到数据
在这里插入图片描述

第六步:集群宕机测试

假如我们干掉一个节点,比如7002 这个主节点

在这里插入图片描述

然后再来看下集群的情况

redis-trib.rb check 127.0.0.1:7001

在这里插入图片描述
我们发现 7004本来是从节点,由于他对应的主节点挂了,就自动变成主节点master,所有会有最后一个说明

All 16384 slots covered. 所有哈希槽都可覆盖了; 集群可以正常使用;

假如我们把7004也干掉,试试看

在这里插入图片描述
在这里插入图片描述

这里我们发现 出事了,因为主从节点都挂了 所以有一部分哈希槽没得分配,最后一句

[ERR] Not all 16384 slots are covered by nodes. 没有安全覆盖;

所以不能正常使用集群;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章