Redis集群(cluster)

2023-12-13 17:53:33

什么事集群

Redis集群是一个提供在多个Redis节点间共享数据的程序集
Redis集群支持多个Master,每个Master又可以挂载多个Slave
由于Cluster自带Sentinel的故障转移机制,内置了高可用的支持,无需再去使用哨兵功能
请添加图片描述

集群的槽位

请添加图片描述
slot槽位映射,一般业界有3种解决方案

1.哈希取余分区
2.一致性哈希算法分区
3.哈希槽分区

1.哈希取余分区
在这里插入图片描述
2.一致性哈希算法分区

在这里插入图片描述
3. 哈希槽分区
请添加图片描述
槽解决的是粒度问题,相当于把粒度变大了,这样便于数据移动。哈希解决的是映射问题,使用key的哈希值来计算所在的槽,便于数据分配

集群环境案例步骤

3主3从redis集群配置

建立集群的配置文件3个虚拟机每一个两个配置文件
在这里插入图片描述
其中一个文件

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
 
cluster-enabled yes
cluster-config-file nodes-6381.conf
cluster-node-timeout 5000

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

注意,注意,注意自己的真实IP地址 注意,注意,注意自己的真实IP地址

redis-cli -a 111111 --cluster create --cluster-replicas 1 192.168.111.175:6381 192.168.111.175:6382 192.168.111.172:6383 192.168.111.172:6384 192.168.111.174:6385 192.168.111.174:6386

链接进入6381作为切入点,查看并检验集群状态

info replication

请添加图片描述

cluster info

请添加图片描述
cluster nodes请添加图片描述

集群槽位范围写入错误请添加图片描述

如何解决?
防止路由失效加参数-c并新增两个key

redis- cli -a 111111 -p 6381 - c

请添加图片描述

主从容错切换迁移案例

当主机死掉之后,从机上位,旧主机从新回归之后变成了从机.
如果想从新变成主机

CLUSTER FAILOVER

请添加图片描述

主从扩容案例

1.新建6387、6388两个服务实例配置文件+新建后启动

在这里插入图片描述
其中一个配置文件

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

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

redis-server /redisCluster6387.conf
redis-server /redisCluster6388.conf

3. 将新增的6387节点(空槽号)作为master节点加入原集群

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

redis-cli -a 111111 --cluster add-node 192.168.111.174:6387 192.168.111.175:6381

请添加图片描述
检查集群情况第1次

redis-cli -a 密码 --cluster check 真实ip地址:6381

redis-cli -a 111111 --cluster check 192.168.111.175:6381

请添加图片描述

4. 重新分派槽号(reshard )

重新分派槽号

命令:redis-cli -a 密码 --cluster reshard IP地址:端口号
redis-cli -a 密码 --cluster reshard 192.168.111.175:6381

请添加图片描述
检查集群情况第2次


redis-cli --cluster check 真实ip地址:6381
redis-cli -a 111111 --cluster check 192.168.111.175:6381

请添加图片描述

为什么6387是3个新的区间,以前的还是连续?
重新分配成本太高,所以前3家各自匀出来一部分,从6381/6383/6385三个旧节点分别匀出1364个坑位给新节点6387

请添加图片描述

5.为主节点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.111.174:6388 192.168.111.174:6387 --cluster-slave --cluster-master-id 4feb6a7ee0ed2b39ff86474cf4189ab2a554a40f-------这个是6387的编号,按照自己实际情况
 

请添加图片描述
检查集群情况第3次

redis-cli --cluster check 真实ip地址:6381
![请添加图片描述](https://img-blog.csdnimg.cn/direct/1462ab2396384da784239b15a0a185eb.png)
redis-cli -a 111111 --cluster check 192.168.111.175:6381
 

请添加图片描述

主从缩容案例

目的:6387和6388下线

检查集群情况第一次,先获得从节点6388的节点ID

![请添加图片描述](https://img-blog.csdnimg.cn/direct/6f3e1a5d2e754c9da771e90e4d2f0982.png)

请添加图片描述

1. 从集群中将4号从节点6388删除

命令:redis-cli -a 密码 --cluster del-node ip:从机端口 从机6388节点ID
 
redis-cli -a 111111 --cluster del-node 192.168.111.174:6388 218e7b8b4f81be54ff173e4776b4f4faaf7c13da
 

请添加图片描述

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

检查一下发现,6388被删除了,只剩下7台机器了。请添加图片描述

2.将6387的槽号清空,重新分配,本例将清出来的槽号都给6381

redis-cli -a 111111 --cluster reshard 192.168.111.175:6381
 

请添加图片描述
请添加图片描述
检查集群情况第二次

redis-cli -a 111111 --cluster check 192.168.111.175:6381
 
4096个槽位都指给6381,它变成了8192个槽位,相当于全部都给6381了,不然要输入3次,一锅端
 

请添加图片描述

3.将6387删除

命令:redis-cli -a 密码 --cluster del-node ip:端口 6387节点ID
 
redis-cli -a 111111 --cluster del-node 192.168.111.174:6387 4feb6a7ee0ed2b39ff86474cf4189ab2a554a40f
 


请添加图片描述
检查集群情况第三次,6387/6388被彻底祛除

redis-cli -a 111111 --cluster check 192.168.111.175:6381
 

请添加图片描述
请添加图片描述

文章来源:https://blog.csdn.net/Don_t_always_ail/article/details/134844226
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。