Redis7搭建主从+集群三主三从主从关系由集群分配

目录文件不清晰的去Redis7搭建主从+哨兵了解

别忘记关闭防火墙

hash算法一致性

1背景–主从关系由客户端构建分配

三台虚拟机,一台虚拟机搭建两个redis 且两个不同的端口

第一台ip和分配两个端口	6381 6382 ---  		192.168.154.128 6381 6382
第二台ip和分配两个端口 6383 6384 ---		192.168.154.129 6383 6384
第三台ip和分配两个端口	6385 6386 ---		192.168.154.130 6385 6386

2在myredis目录下创建目录

命令 mkdir cluster 不要用 -->mkdir /cluster 加这 斜杠 / 就会报错,因为 斜杠 是在根目录下创建目录
或者用 mkdir -p /myredis/cluster 创建树形目录

3配置文件的信息放在对应虚拟机的myredis/cluster下边

redisCluster6381.conf配置信息

bind 0.0.0.0
daemonize yes
protected-mode no
port 6381
logfile "/myredis/cluster/cluster6381.log"
pidfile /myredis/cluster6381.pid
dir /myredis/cluster
dbfilename dump6381.rdb
appendonly yes
appendfilename "appendonly6381.aof"
requirepass 111111
masterauth 111111

redisCluster6382.conf配置信息

bind 0.0.0.0
daemonize yes
protected-mode no
port 6382
logfile "/myredis/cluster/cluster6382.log"
pidfile /myredis/cluster6382.pid
dir /myredis/cluster
dbfilename dump6382.rdb
appendonly yes
appendfilename "appendonly6382.aof"
requirepass 111111
masterauth 111111
 
cluster-enabled yes
cluster-config-file nodes-6382.conf
cluster-node-timeout 5000

redisCluster6383.conf配置信息

bind 0.0.0.0
daemonize yes
protected-mode no
port 6383
logfile "/myredis/cluster/cluster6383.log"
pidfile /myredis/cluster6383.pid
dir /myredis/cluster
dbfilename dump6383.rdb
appendonly yes
appendfilename "appendonly6383.aof"
requirepass 111111
masterauth 111111

cluster-enabled yes
cluster-config-file nodes-6383.conf
cluster-node-timeout 5000

redisCluster6384.conf配置信息

bind 0.0.0.0
daemonize yes
protected-mode no
port 6384
logfile "/myredis/cluster/cluster6384.log"
pidfile /myredis/cluster6384.pid
dir /myredis/cluster
dbfilename dump6384.rdb
appendonly yes
appendfilename "appendonly6384.aof"
requirepass 111111
masterauth 111111
 
cluster-enabled yes
cluster-config-file nodes-6384.conf
cluster-node-timeout 5000

redisCluster6385.conf配置信息

bind 0.0.0.0
daemonize yes
protected-mode no
port 6385
logfile "/myredis/cluster/cluster6385.log"
pidfile /myredis/cluster6385.pid
dir /myredis/cluster
dbfilename dump6385.rdb
appendonly yes
appendfilename "appendonly6385.aof"
requirepass 111111
masterauth 111111
 
cluster-enabled yes
cluster-config-file nodes-6385.conf
cluster-node-timeout 5000

redisCluster6386.conf配置信息

bind 0.0.0.0
daemonize yes
protected-mode no
port 6386
logfile "/myredis/cluster/cluster6386.log"
pidfile /myredis/cluster6386.pid
dir /myredis/cluster
dbfilename dump6386.rdb
appendonly yes
appendfilename "appendonly6386.aof"
requirepass 111111
masterauth 111111
 
cluster-enabled yes
cluster-config-file nodes-6386.conf
cluster-node-timeout 5000

4三台虚拟机分别在myredis/cluster目录下启动

第一台(192.168.154.128)
[root@localhost cluster]# redis-server redisCluster6381.conf
[root@localhost cluster]# redis-server redisCluster6382.conf
第二台(192.168.154.129)
[root@localhost cluster]# redis-server redisCluster6383.conf
[root@localhost cluster]# redis-server redisCluster6384.conf
第三台(192.168.154.130)
[root@localhost cluster]# redis-server redisCluster6385.conf
[root@localhost cluster]# redis-server redisCluster6386.conf

5通过redis-cli命令为6台机器构建集群关系

replicas 1 为每个主机分配一个从机 slave
-a 111111 这个是客户端登录的密码 具体密码是根据信息配置的来确定客户端密码

redis-cli -a 111111 --cluster create --cluster-replicas 1 192.168.154.128:6381 192.168.154.128:6382 192.168.154.129:6383 192.168.154.129:6384 192.168.154.130:6385 192.168.154.130:6386

6集群构建成功

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

7查看集群常用命令之间的关系 cluster nodes

在这里插入图片描述

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

8异常信息

[ERR] Node 192.168.154.129:6384 is not empty
在这里插入图片描述

8.1处理方法–客户端登录然后清除和重置:flushall 和 cluster reset

在这里插入图片描述

8.2redis-cli --cluster call : FLUSHALL

redis客户端如何查看中文 --raw

在这里插入图片描述

9插入数据失败,(error) MOVED 8941 192.168.154.129:6383

一定注意槽位的范围区间,需要路由到位,路由到位,路由到位,路由到位
就是说槽位之间要实现能跳转,才能达到集群的目的即数据之间共享的作用
在这里插入图片描述

9.1 解决办法 redis登录 携带 -c 实现集群间的读写

之前 redis-cli -a 111111 -p 6381
正确 redis-cli -a 111111 -p 6381 -c
原因:hash算法算出的 hash_slot 槽位不在此主机上,需要路由跳转重定向到另一台主机提供的槽位上,达到集群的效果即共享数据集的意义

在这里插入图片描述

10当某个主节点宕机其slave节点会顶上去成为master

在这里插入图片描述

在这里插入图片描述

11 机器宕机故障自动转移如何恢复原来是主机master从属关系?? cluster failover

在这里插入图片描述

13查看key所在槽位或者查询某个定义的key将会落的槽位

keyslot key  

在这里插入图片描述

13主从扩容

redisCluster6387.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 6387
logfile "/myredis/cluster/cluster6387.log"
pidfile /myredis/cluster6387.pid
dir /myredis/cluster
dbfilename dump6387.rdb
appendonly yes
appendfilename "appendonly6387.aof"
requirepass 111111
masterauth 111111

cluster-enabled yes
cluster-config-file nodes-6387.conf
cluster-node-timeout 5000

redisCluster6388.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 6388
logfile "/myredis/cluster/cluster6388.log"
pidfile /myredis/cluster6388.pid
dir /myredis/cluster
dbfilename dump6388.rdb
appendonly yes
appendfilename "appendonly6388.aof"
requirepass 111111
masterauth 111111
 
cluster-enabled yes
cluster-config-file nodes-6388.conf
cluster-node-timeout 5000

13.1上传到 第三台虚拟机上

在这里插入图片描述

13.2启动87/88两个新的节点实例,此时他们自己都是master

启动

[root@localhost cluster]# redis-server redisCluster6387.conf
[root@localhost cluster]# redis-server redisCluster6388.conf

看当前节点信息 cluster nodes

在这里插入图片描述

13.3加入集群(由老人带新人入集群)–绿色回复

将新增的6387作为master节点加入原有集群
redis-cli -a 密码 --cluster add-node 自己实际IP地址(新员工):端口号 自己实际IP地址(老员工):端口号
redis-cli -a 111111  --cluster add-node 192.168.154.130:6387 192.168.154.130:6385
6387 就是将要作为master新增节点
6385 就是原来集群节点里面的领路人,相当于6387拜拜6385的码头从而找到组织加入集群

在这里插入图片描述

13.4 检查集群情况第1次–槽位分配为空

redis-cli -a 111111 --cluster check 192.168.154.130:6385

在这里插入图片描述

13.5为最新master分配槽位

重新分派槽号
命令:redis-cli -a 密码 --cluster reshard IP地址:端口号
redis-cli -a 111111 --cluster reshard 192.168.154.130:6385

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

13.6为主节点6387分配从节点6388

命令:redis-cli -a 密码 --cluster add-node ip:新slave端口 ip:新master端口 --cluster-slave --cluster-master-id 新主机节点ID
 
redis-cli -a 111111 --cluster add-node 192.168.154.130:6388 192.168.154.130:6387 --cluster-slave --cluster-master-id xxx新主机idxxx-------这个是6387的编号,按照自己实际情况
------------------------------
redis-cli -a 111111 --cluster add-node 192.168.154.130:6388 192.168.154.130:6387 --cluster-slave --cluster-master-id a6f8f63687c2a3e26a1571fe8e1e6cc399e5677d

在这里插入图片描述

扩容成功–查看槽位分配情况

redis-cli -a 111111 --cluster check 192.168.154.130:6387

在这里插入图片描述

14主从缩容

查看目前运行状态

15集群常用命令

在这里插入图片描述

15集群异常–一般三主三从才对外服务

可以修改这个默认配置
cluster-require-full -coverage no
在这里插入图片描述

12总结

1、槽位范围 0 -16384 也就是 0-2^14
2、每个主机master 提供的槽位 是根据 16384 /主机数量 约等于的平摊槽位
3、

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值