当前位置: 首页 > article >正文

redis cluster实验详解

华子目录

  • 实验
    • 环境准备
    • 部署`redis cluster`
    • 添加节点
    • 删除节点
    • redis cluster集群维护

实验

环境准备

  • 再开3台主机

在这里插入图片描述

  • 先把之前3源码编译redis删除
[root@redis-node1 ~]# cd /usr/local/redis/
[root@redis-node1 redis]# make uninstall

[root@redis-node2 ~]# cd /usr/local/redis/
[root@redis-node2 redis]# make uninstall

[root@redis-node3 ~]# cd /usr/local/redis/
[root@redis-node3 redis]# make uninstall
  • 6台主机通过yum方式安装
[root@redis-node1 ~]# yum install redis -y

[root@redis-node2 ~]# yum install redis -y

[root@redis-node3 ~]# yum install redis -y

[root@redis-node110 ~]# yum install redis -y

[root@redis-node120 ~]# yum install redis -y

[root@redis-node130 ~]# yum install redis -y

部署redis cluster

  • 所有redis主机
#现在node1上修改配置文件
[root@redis-node1 ~]# vim /etc/redis/redis.conf
bind * -::*
masterauth "123456"   #集群主从认证
requirepass "123456"   #redis登录密码
cluster-enabled yes   #开启cluster集群功能
cluster-config-file nodes-6379.conf   #指定集群配置文件
cluster-node-timeout 15000   #节点加入集群的超时时间,单位是毫秒
#再将配置文件复制给其他节点
[root@redis-node2 ~]# scp /etc/redis/redis.conf root@172.25.254.20:/etc/redis/

[root@redis-node3 ~]# scp /etc/redis/redis.conf root@172.25.254.30:/etc/redis/

[root@redis-node110 ~]# scp /etc/redis/redis.conf root@172.25.254.110:/etc/redis/

[root@redis-node120 ~]# scp /etc/redis/redis.conf root@172.25.254.120:/etc/redis/

[root@redis-node130 ~]# scp /etc/redis/redis.conf root@172.25.254.130:/etc/redis/
[root@redis-node1 ~]# systemctl restart redis

[root@redis-node2 ~]# systemctl restart redis

[root@redis-node3 ~]# systemctl restart redis

[root@redis-node110 ~]# systemctl restart redis

[root@redis-node120 ~]# systemctl restart redis

[root@redis-node130 ~]# systemctl restart redis
#进入node1的redis中
[root@redis-node1 ~]# redis-cli

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

[root@redis-node1 ~]# redis-cli --cluster create -a 123456 \
> 172.25.254.10:6379 172.25.254.20:6379 172.25.254.30:6379 \
> 172.25.254.110:6379 172.25.254.120:6379 172.25.254.130:6379 \
> --cluster-replicas 1
  • --cluster-replicas 1:指定了每个主节点应该有一个从节点。由于总共6个节点Redis集群自动将这些节点分为3个主节点3个从节点Redis会根据节点IP地址端口号自动进行主从分配,确保每个主节点都有一个对应从节点

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

  • 只有master上有hash槽slave上没有hash槽
  • 只有存在hash槽主机才能进行读写
  • slave作用:只有当对应master挂掉了,才会将master上的hash槽迁移到slave上,在没有迁移之前slave上是没有hash槽的

此时redis cluster已经搭建成功

[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.20:6379

在这里插入图片描述

[root@redis-node1 ~]# redis-cli -a 123456 --cluster info 172.25.254.110:6379

在这里插入图片描述

  • 当在10插入数据
[root@redis-node1 ~]# redis-cli -a 123456
127.0.0.1:6379> set name huazi
(error) MOVED 5798 172.25.254.20:6379

在这里插入图片描述

  • 20插入成功
[root@redis-node2 ~]# redis-cli -a 123456
127.0.0.1:6379> set name huazi
OK

在这里插入图片描述

  • 当在10上查看数据
[root@redis-node1 ~]# redis-cli -a 123456
127.0.0.1:6379> get name
(error) MOVED 5798 172.25.254.20:6379

在这里插入图片描述

  • 20查看
[root@redis-node2 ~]# redis-cli -a 123456
127.0.0.1:6379> get name
"huazi"

在这里插入图片描述

添加节点

  • 2个节点

在这里插入图片描述

[root@redis-node50 ~]# yum install redis -y

[root@redis-node150 ~]# yum install redis -y
#将配置文件传递给50和150
[root@redis-node1 ~]# scp /etc/redis/redis.conf root@172.25.254.50:/etc/redis/

[root@redis-node1 ~]# scp /etc/redis/redis.conf root@172.25.254.150:/etc/redis/
[root@redis-node50 ~]# systemctl restart redis

[root@redis-node150 ~]# systemctl restart redis

在这里插入图片描述

  • 50加入到cluster集群中
[root@redis-node1 ~]# redis-cli -a 123456 --cluster add-node 172.25.254.50:6379 172.25.254.20:6379
  • 查看
[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379

在这里插入图片描述

  • cluster中重新划分槽位
[root@redis-node1 ~]# bc
16384/4
4096

[root@redis-node1 ~]# redis-cli -a 123456 --cluster reshard 172.25.254.10:6379

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

  • 槽位重新划分同时不会影响原来槽位中数据
[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379

在这里插入图片描述

  • 查看数据
[root@redis-node1 ~]# redis-cli -a 123456
127.0.0.1:6379> get name
(error) MOVED 5798 172.25.254.50:6379
#让到50上查看
[root@redis-node50 ~]# redis-cli -a 123456
127.0.0.1:6379> get name
"huazi"
  • 加入slave集群
[root@redis-node1 ~]# redis-cli -a 123456 --cluster add-node 172.25.254.150:6379 172.25.254.10:6379 --cluster-slave --cluster-master-id 779b42266fc4f08b0be1d65cba5a77ccbb46b8d4

在这里插入图片描述

  • 查看
[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379

在这里插入图片描述

删除节点

  • 先删除slave
[root@redis-node1 ~]# redis-cli -a 123456 --cluster del-node 172.25.254.150:6379 c4311c2a6eee3330015c9b3458060ace57b906be

在这里插入图片描述

[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379

在这里插入图片描述

  • 50槽位分享给其他节点
[root@redis-node1 ~]# redis-cli -a 123456 --cluster reshard 172.25.254.10:6379

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

[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379

在这里插入图片描述

[root@redis-node1 ~]# redis-cli -a 123456 --cluster del-node 172.25.254.50:6379 779b42266fc4f08b0be1d65cba5a77ccbb46b8d4

在这里插入图片描述

  • 发现50已经从集群移除了
[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379

在这里插入图片描述

  • 查看数据
[root@redis-node1 ~]# redis-cli -a 123456
127.0.0.1:6379> get name
(error) MOVED 5798 172.25.254.20:6379
[root@redis-node2 ~]# redis-cli -a 123456
127.0.0.1:6379> get name
"huazi"

redis cluster集群维护

  • 添加节点的时候是先添加node节点集群,然后分配槽位删除节点的操作与添加节点的操作正好相反,是先将被删除Redis node上的槽位迁移到集群中其他Redis node节点上,然后再将其删除,如果一个Redis node节点上的槽位没有被完全迁移删除node时候提示有数据无法删除

http://www.kler.cn/a/457849.html

相关文章:

  • 蓝桥杯速成教程{三}(adc,i2c,uart)
  • vulhub-wordpress靶场
  • 区块链安全常见的攻击合约和简单复现,附带详细分析——不安全调用漏洞 (Unsafe Call Vulnerability)【6】
  • 【513. 找树左下角的值 中等】
  • 【Leetcode刷题随笔】977 有序数组的平方
  • google广告 google分析
  • wordpress woodmark max_input_vars = 1000 限制问题
  • 使用proxysql代理mysql连接
  • 【Raven1靶场渗透】
  • 钱币找零.
  • 秒鲨后端之MyBatis【1】环境的搭建和核心配置文件详解(重置)
  • 智能工厂的设计软件 应用场景的一个例子:为AI聊天工具添加一个知识系统 之5
  • vue.js普通组件的注册-全局注册
  • 7-Gin 中自定义控制器 --[Gin 框架入门精讲与实战案例]
  • CPU性能优化--后端优化
  • upload-labs关卡记录5
  • 【论文笔记】Contrastive Learning for Sign Language Recognition and Translation
  • 云计算时代携程的网络架构变迁
  • vulnhub jangow靶机
  • 《云计算能不能真正实现按需付费?》