redis之路(八):Redis多机多节点集群实验

第一步:环境准备

我们搞两台虚拟机
在这里插入图片描述

局域网IP 分别是 172.16.150.128和172.16.150.95

我们约定把172.16.150.128作为集群控制端,需要安装redis-trib.rb

第二步:安装Redis

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

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

cp redis-3.2.9/src/redis-trib.rb /usr/local/bin

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

首先我们在172.16.150.128虚拟机里创建三个节点,端口分别是7001,7002,7003

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

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

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

这里可以参考我上一篇的做法

把redis的持久化文件和节点文件全都删除,不然下面创建集群会出现问题

在这里插入图片描述
两台虚拟机都要清理

然后修改两台虚拟机的redis.conf中的几个点

port 7001 //三个个节点配置文件分别是7001-7003

bind 192.168.1.109 //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访,和单机集群有区别

daemonize yes //redis后台运行

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

cluster-enabled yes //开启集群

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

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

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

相比上一篇要多修改bind这一点,将bing后面的172.0.0.1修改为相应的虚拟机IP
在这里插入图片描述
在这里插入图片描述

同理 172.16.150.95机器,也搞一个redis_cluster目录,然后再新建7004,7005,7006目录,

复制三份配置文件 其他一样,就端口和bind地址改下即可;这里不啰嗦了;

第四步:启动两台机器的六个节点

172.16.150.128机器

[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
在这里插入图片描述

172.16.150.95机器

[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
在这里插入图片描述

第五步:设置防火墙,开放集群端口

两台机器的防火墙我们直接关掉

systemctl stop firewalld.service

第六步:创建集群

172.16.150.128机器作为集群控制端

redis官方提供了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

 redis-trib.rb create --replicas 1  172.16.150.128:7001 172.16.150.128:7002 172.16.150.128:700

创建集群

在这里插入图片描述

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

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

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

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

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

然后显示:

在这里插入图片描述

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

第七步:集群数据测试

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

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

这里还得加-h 指定机器IP

连接任意一个节点端口:

 /usr/local/redis/bin/redis-cli -h 172.16.150.95 -c -p 7004

在这里插入图片描述

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

Redirected to slot [15495] located at 172.16.150.128:7002

我们从其他集群节点 ,都可以获取到数据

在这里插入图片描述

第八步:集群宕机测试

假如我们干掉一个节点,比如7001这个主节点
在这里插入图片描述

然后我们查看下集群情况

redis-trib.rb check 172.16.150.128:7002

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

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

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

在这里插入图片描述

在这里插入图片描述

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

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

所以不能正常使用集群

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值