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

redis-cluster集群搭建

安装redis所需环境

yum install -y gcc-c++
yum install -y wget

创建文件夹

cd /
mkdir redis/redis-cluster/7001
cd redis/redis-cluster
mkdir 7002 7003 7004 7005 7006 7007 7008

下载redis压缩包并解压安装

wget https://download.redis.io/redis-stable.tar.gz 
tar -zxvf redis-stable.tar.gz
# 安装redis
cd redis-stable
make install PREFIX=/redis/redis-cluster/7001
#拷贝配置文件
cp ./redis.conf /redis/redis-cluster/7001cd /redis/redis-cluster/7001
vi  redis.conf

修改配置 将下面几个参数修改

#bind 0.0.0.0 #允许访问的ip
#protected-mode no #保护模式
#port 7001 #运行端口
#daemonize yes #后台启动
#cluster-enabled yes #开启集群

#运行测试
./redis-server redis.conf 
#客户端连接进行操作
./redis-cli -h 127.0.0.1 -p 7001

集群搭建三主三从

在这里插入图片描述

开始复制配置好的7001文件夹下的文件

cp -r /redis/redis-cluster/7001/* /redis/redis-cluster/7002
cp -r /redis/redis-cluster/7001/* /redis/redis-cluster/7003
cp -r /redis/redis-cluster/7001/* /redis/redis-cluster/7004
cp -r /redis/redis-cluster/7001/* /redis/redis-cluster/7005
cp -r /redis/redis-cluster/7001/* /redis/redis-cluster/7006
cp -r /redis/redis-cluster/7001/* /redis/redis-cluster/7007
cp -r /redis/redis-cluster/7001/* /redis/redis-cluster/7008

复制完成后修改对应的端口

创建启动脚本进行启动

vi start.sh

内容

cd 7001/bin
./redis-server redis.conf
cd ..
cd ..
cd 7002/bin
./redis-server redis.conf
cd ..
cd ..
cd 7003/bin
./redis-server redis.conf
cd ..
cd ..
cd 7004/bin
./redis-server redis.conf
cd ..
cd ..
cd 7005/bin
./redis-server redis.conf
cd ..
cd ..
cd 7006/bin
./redis-server redis.conf
cd ..
cd ..

授权

chmod u+x start.sh

启动

./start.sh

查看有无启动成功

ps -ef | grep redis

在这里插入图片描述

创建redis集群时redis里不要数据

进入到一个redis,bin目录下执行命令

注意ip一定不能用127.0.0.1 不然外部无法重定向访问集群 cluster-replicas后面的1表示一个主机有几个从机 因为现在只有一个因此是1 工作中根据具体从机数

演示:

./redis-cli --cluster create 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 --cluster-replicas 1

在这里插入图片描述

命令客户端连接集群并使用

注意:-c表示以redis集群方式进行连接

./redis-cli -h 127.0.0.1 -p 7001 -c

查看集群状态
cluster info
查看集群中的节点
cluster nodes

在这里插入图片描述

添加数据看看

在这里插入图片描述
由图可以知道我们存放的key:001根据crc16算法算出值然后对16384取余算出的值恰好落在分配到7001的槽中,所以就存放到7001中。我们去7002进行获取的时候。会重定向到7001中进行获取。

交互流程图

在这里插入图片描述

集群扩容

数据迁移
1.新节点加入
2.节点下线
3.负载不均衡需要调整slot分别
在这里插入图片描述

添加7007节点作为新节点,并启动

启动7007节点 进入bin目录进行启动

./redis-server redis.conf

申请加入集群

添加节点7007去meet7001申请加入集群

./redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7001

在这里插入图片描述
查看是否加入集群
cluster nodes
在这里插入图片描述
已经连接但没有分配hash槽
第一步:对该节点进行hash槽分配,这样该主节点才可以存储数据

./redis-cli --cluster reshard 127.0.0.1:7007

reshard分配hash槽 后面跟上ip和端口 给某个节点分配
在这里插入图片描述

第二步:输入要分配槽的数量
在这里插入图片描述
第三步:输入接收槽的节点id
在这里插入图片描述
根据自己机器上的7007的id进行填写
在这里插入图片描述
第四步:输入源节点id输入all完工
第五步:输入yes开始移动槽到目标节点id
第六步:查询节点
cluster nodes
在这里插入图片描述
添加7008从节点,将7008作为7007的从节点 首先启动7008

./redis-cli --cluster add-node 新节点的ip和端口 旧节点ip和端口 --cluster-slave -cluster-master-id 主节点id
./redis-cli --cluster add-node 127.0.0.1:7008 127.0.1.1:7007 --cluster-slave --cluster-master-id 8a91a546a42b897bf72487105aae756c08589fa1

在这里插入图片描述
查看集群节点 7007 7008均已上线

集群缩容

缩容命令

./redis-cli --cluster del-node 127.0.0.1:7008 8a91a546a42b897bf72487105aae756c08589fa1

注意:删除已经占有的hash槽的节点会失败,必须先分出去 否则报错如下:
[ERR] Node 127.0.0.1:7008 is not empty! Reshard data away and try again.
开始hash槽重新分配—参考上面hash槽分配步骤

./redis-cli --cluster reshard 127.0.0.1:7008

在这里插入图片描述
*** The specified node (8969be5eb5ac8fd1cf5965a2b2f6d431300b0552) is not known or not a master, please retry.
当出现这个错误代表要删除的节点不是master节点重新主节点7007
注意要点:在重新分配槽根据当前节点的槽的数量一致,不然执行不成功
在这里插入图片描述
再次删除7007删除成功
在这里插入图片描述
如果需要新节点–按照集训扩展章节操作即可。

http://www.lryc.cn/news/14900.html

相关文章:

  • 【C语言】可变参数列表va_list
  • CentOS7.6 MySQL8安装
  • 安装Tomcat的步骤?
  • Redis之分布式锁
  • 2022年中国前10电商GMV总结
  • ES6新增扩展:字符串-数值-数组-函数-对象
  • python中import原理
  • 《Qt6开发及实例》6-4 显示SVG格式图片
  • OpenGL ES 绘制一张图片
  • Python 之 Pandas DataFrame 数据类型的行操作和常用属性和方法汇总
  • MacOS下载钉钉直播回放视频的Python最新解决方案
  • 2023年测试人跳槽新功略,涨薪10K+
  • RabbitMQ之Work Queues
  • CRM哪家好?这5个CRM管理系统很好用!
  • 国内ce认证机构有哪些 国内十大CE认证机构排名 做ce认证的公司推荐
  • 多If函数封装的策略
  • 238. 银河英雄传说
  • centos7 开机自启动自定义脚本
  • 【Linux】动静态库的制作
  • 数据备份学习笔记2
  • webRTC
  • 用Python搓一个黑洞
  • Spring MVC常用功能及注解
  • shell 编程
  • Leetcode.1401 圆和矩形是否有重叠
  • CHAPTER 3 Web Server - httpd配置(二)
  • VSCode 连接 SSH 服务器
  • 如何选择靠谱的插画培训课程
  • 剑指 Offer 28. 对称的二叉树
  • 深入Spring底层透析后置处理器之豁然开朗篇