Linux系统搭建redis-cluster集群案例

news2024/11/24 12:12:26

Linux系统搭建redis-cluster集群案例

  • (一)redis下载及安装
      • 【1】前言介绍
      • 【2】redis下载以及安装
          • (1)首先要进入Linux系统的根目录
          • (2)安装redis所需的环境
          • (3)下载redis源码包
          • (4)解压redis到根目录下
          • (5)安装redis
          • (6)拷贝配置文件 并修改
          • (7)启动并操作
  • (二)集群搭建-三主三从
      • 【1】复制配置文件
          • (1)在redis-cluster目录下创建多个文件7002-7008
          • (2)开始复制配置好的7001文件夹下的文件
          • (3)修改配置文件的端口
      • 【2】创建启动脚本进行启动
          • (1)创建启动文件
          • (2)启动文件start.sh的内容
          • (3)给启动文件授权
          • (4)启动
          • (5)查看启动后的线程
      • 【3】创建Redis集群(创建时Redis里不要有数据)
          • (1)创建redis集群
          • (2)槽位分配的原理
      • 【4】客户端连接集群并使用
          • (1)以redis集群方式进行连接
          • (2)查看集群状态
          • (3)查看集群中的节点
          • (4)添加数据并查看
  • (三)集群扩容
      • 【1】数据迁移
      • 【2】添加7077节点作为新节点,并且启动
      • 【3】7007申请加入集群
      • 【4】给7007节点分配hash槽,这样主节点才能存储数据
      • 【5】添加7008从结点,将7008作为7007的从结点
  • (四)集群缩容
      • 【1】删除已经占有hash槽的结点会失败

(一)redis下载及安装

【1】前言介绍

本文是在一台服务器上搭建多个redis的伪集群方式来进行讲解,后续要换成多台步骤类似。

Redis5.0前采用redis-trib进行集群的创建和管理,需要ruby支持

Redis5.0可以直接使用Redis-cli进行集群的创建和管理。本文用的是redis版本5.0.5

【2】redis下载以及安装

(1)首先要进入Linux系统的根目录
cd /
(2)安装redis所需的环境
yum install -y gcc-c++
yum install -y wget

请添加图片描述

(3)下载redis源码包
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
(4)解压redis到根目录下
tar -zxf redis-5.0.5.tar.gz

请添加图片描述

(5)安装redis

安装之前,先创建好/redis/redis-cluster/7001的文件
进入src目录

make install PREFIX=/redis/redis-cluster/7001
(6)拷贝配置文件 并修改
cp /redis-5.0.5/redis.conf /redis/redis-cluster/7001/bin

修改配置文件
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

(7)启动并操作

进入到redis的bin目录中进行启动

./redis-server redis.conf

客户端连接进行操作

./redis-cli -h 192.168.0.102 -p 7001

请添加图片描述测试安装并启动成功

(二)集群搭建-三主三从

【1】复制配置文件

(1)在redis-cluster目录下创建多个文件7002-7008
mkdir 7002
mkdir 7003
mkdir 7004
mkdir 7005
mkdir 7006
mkdir 7007
mkdir 7008

请添加图片描述

(2)开始复制配置好的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
(3)修改配置文件的端口

复制完成后,对每个目录下的配置文件进行修改,修改对应端口就可以了
请添加图片描述

【2】创建启动脚本进行启动

(1)创建启动文件

回到redis-cluster目录下创建启动文件

创建启动文件
touch start.sh
编辑启动文件
vim start.sh

在这里插入图片描述

(2)启动文件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 ..
(3)给启动文件授权
#授权
chmod u+x start.sh
(4)启动

启动前可以检查一下redis的线程是不是有已经启动的了,使用kill命令全部关闭。

./start.sh

请添加图片描述

(5)查看启动后的线程
#查看启动的线程情况
ps -ef|grep redis

请添加图片描述

【3】创建Redis集群(创建时Redis里不要有数据)

(1)创建redis集群

进入到一个redis,bin目录下执行命令。cluster-replicas后面的1表示一个主机有几个从机,因为现在只有一个因此是1,工作中是2。

./redis-cli --cluster create 192.168.0.102:7001 192.168.0.102:7002 192.168.0.102:7003 192.168.0.102:7004 192.168.0.102:7005 192.168.0.102:7006 --cluster-replicas 1

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

(2)槽位分配的原理

【4】客户端连接集群并使用

(1)以redis集群方式进行连接

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

./redis-cli -h 192.168.0.102 -p 7001 -c
(2)查看集群状态
cluster info

请添加图片描述

(3)查看集群中的节点
cluster nodes

请添加图片描述

(4)添加数据并查看

从7001添加数据看看(如何选择和分配槽位slot的原理看一下)
请添加图片描述
从7002查询数据
请添加图片描述

(三)集群扩容

【1】数据迁移

(1)新节点加入
(2)节点下线
(3)负载不均衡需要调整slot分布

【2】添加7077节点作为新节点,并且启动

进入7007/bin/目录,并且启动redis

./redis-server redis.conf

【3】7007申请加入集群

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

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

请添加图片描述
连接7007的redis,查看是否已经加入集群

#连接集群
./redis-cli -h 192.168.0.102 -p 7007 -c

#查看集群信息
cluster info

#查看是否加入集群
cluster nodes

请添加图片描述在集群的节点中能看到7007,但是现在已经连接,还没有分配hash槽

【4】给7007节点分配hash槽,这样主节点才能存储数据

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

(1)输入要分配槽数量
在这里插入图片描述(2)输入接收槽的节点id
这里根据自己机器上的7007的id进行填写
在这里插入图片描述在这里插入图片描述
(3)输入节点id后再输入all就完事了
在这里插入图片描述
(4)输入yes开始移动槽到目标结点id
在这里插入图片描述
(5)查询节点

#连接集群
./redis-cli -h 192.168.0.102 -p 7007 -c

#查看集群信息
cluster info

#查看是否加入集群
cluster nodes

请添加图片描述

【5】添加7008从结点,将7008作为7007的从结点

(1)首先启动7008

#进入7008/bin/目录
#启动
./redis-server redis.conf

(2)添加7008从结点,将7008作为7007的从结点

./redis-cli --cluster add-node 新节点的ip和端口 旧节点ip和端口 --cluster-slave -cluster-master-id 主节点id

./redis-cli --cluster add-node 192.168.0.102:7008 192.168.0.102:7007 --cluster-slave --cluster-master-id 2d17e4ccce0e5bf54ab893782d81d21214662ce1

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

(3)7008节点登入集群,查看节点信息

#连接集群
./redis-cli -h 192.168.0.102 -p 7008 -c

#查看集群信息
cluster info

#查看是否加入集群
cluster nodes

请添加图片描述

(四)集群缩容

【1】删除已经占有hash槽的结点会失败

(1)缩容命令

./redis-cli --cluster del-node 192.168.0.102:7008 5cc3b1ef0bf018435e65f93939d81acba6fbd603

删除已经占有hash槽的结点会失败,必须先分出去否则报错如下:

[ERR] Node 127.0.0.1:7008 is not empty! Reshard data away and try again.

(2)hash槽重新分配
进入7008/bin/目录,开始hash槽重新分配—参考上面hash槽分配步骤

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/90937.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

k8s 中部署kafka集群

由于开发过程中使用到了kafka,又不想自己部署kafka,索性采用k8s 部署kafka集群,以求做到随时插拔。 创建命名空间 apiVersion: v1 kind: Namespace metadata:name: "kafka"labels:name: "kafka"sudo kubectl apply -f …

linux篇【12】:计算机网络——tcp

目录 一.TCP套接字接口 1.inet_aton (和inet_addr一样,换一种方式而已) 2.listen——把套接字设置为监听状态 3.服务器获取客户端的连接 accept 返回值中套接字和参数中套接字的作用: 4.用到的部分函数 (1&…

技术分享 | MySQL 多版本并发控制「MVCC」

作者:贲绍华 爱可生研发中心工程师,负责项目的需求与维护工作。其他身份:柯基铲屎官。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 一、MySQL InnoD…

TaxiBGC ——分类学指导下的生物合成基因簇鉴定流程

谷禾健康 当前合成基因簇预测限制较大 微生物基因组中的生物合成基因簇 (BGC) 编码具有生物活性的次级代谢物 (SM),它可以在微生物-微生物和宿主-微生物相互作用中发挥重要作用。 鉴于次级代谢物的生物学意义和当前对微生物组代谢功能的深刻兴趣,从高通…

通过 ffmpeg 串流对接 OBS 等直播软件

我们要将设备通过私有通道输出到 H264 流,传给 OBS 等直播软件使用。为此,设计了上图所示的串流工具。 设计思路 私有通道通过 API 接口提供 H264 流,要传给 ffmpeg ,最简单的方法是通过进程间管道传输数据。这里 Dump 工具直接…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java美丽华驾校信息管理系统t93d7

毕业设计也不需要做多高端的程序,毕业设计对于大多数同学来说,为什么感觉到难,最重要的一个原因,那就是理论课到实践课的转变,很多人一下不适应,本能开始拒绝,如果是一个考试,大家都…

使用自定义函数实现数据编解码、格式处理与业务告警

背景 在物联网平台的设备数据接入场景中,开发者总是希望平台接入的设备数据格式标准统一,以便对数据进行统一处理。在实际情况中,由于业务需要,平台常常会面对不同类型、不同厂商的设备接入。即使设备接入协议已经统一使用 MQTT …

傻白探索Chiplet,Chiplet技术带来的“新四化”(三)

目录 一、IP芯片化 二、异质集成(HeteroMaterial Integration) 三、异构集成(HeteroStructure Integration) 四、IO增量化 五、总结 一、IP芯片化 IP(Intelligent Property)是具有知识产权核的集成电…

腾讯前端常考vue面试题(必备)

虚拟DOM的优劣如何? 优点: 保证性能下限: 虚拟DOM可以经过diff找出最小差异,然后批量进行patch,这种操作虽然比不上手动优化,但是比起粗暴的DOM操作性能要好很多,因此虚拟DOM可以保证性能下限无需手动操作DOM: 虚拟DOM的diff和patch都是在一次更新中自动进行的,我们无需手动…

driftingblues2靶机(nmap提权)

环境准备 靶机链接:百度网盘 请输入提取码 提取码:9qkq 虚拟机网络链接模式:桥接模式 攻击机系统:kali linux 2021.1 信息收集 1.探测目标靶机 2.探测目标靶机开放端口和服务 3.用dirsearch扫描目录 dirsearch -u 192.168.…

π120E31兼容Si8620EC-B-IS 双通道数字隔离器

π120E31兼容Si8620EC-B-IS 双通道数字隔离器。具有出色的性能特征和可靠性,整体性能优于光耦和基于其他原理的数字隔离器产品。 传输通道间彼此独立,可实现多种传输方向的配置,可实现3.0kVrms隔离耐压等级和 DC 到 600Mbps 信号传输。该系列…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java校园兼职招聘系统x6u36

毕业设计说实话没有想象当中的那么难,导师也不会说刻意就让你毕设不通过,不让你毕业啥的,你只要不是太过于离谱的,都能通过的。首先你得要对你在大学期间所学到的哪方面比较熟悉,语言比如JAVA、PHP等这些,数…

腾讯会议一直显示正在加入会议如何处理?

我们在使用腾讯会议时,一直显示正在加入会议,但是经过很长时间也没有反应,这该怎么办?下面小编就给大家带来了相关的解决办法,说不定有用。 腾讯会议一直显示正在加入会议怎么办? 1、手机上打开腾讯会议。 …

交易所步入「后FTX 时代」,WEEX唯客等后发新秀拉开补位战?

太阳底下没有新鲜事,11月上旬 FTX此轮的骤然崩溃,再次证明了加密行业没有「大而不能倒」的神话,也在一定程度上引爆了加密行业的信任危机与流动性困境。 但把盖子掀开、暴露出里面的风险,未尝不是一件好事——缺乏风控合规的中心…

【剧前爆米花--爪哇岛寻宝】面向对象的三大特性——封装、继承以及多态的详细剖析(下——封装)。

作者:困了电视剧 专栏:《JavaSE语法与底层详解》 文章分布:这是一篇关于Java面向对象三大特性——封装的文章,在本篇文章中我会分享封装的一些基础概念以及实现。 目录 封装定义和优点 访问限定符实现封装 private限定符 priv…

深度学习-LeNet(第一个卷积神经网络)

文章目录简介数据集模型搭建模型训练模型测试前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 LeNet模型是在1998年提出的一种图像分类模型,应用于支票或邮件编码上的手写…

双模蓝牙MIDI模块BT401的功能简单描述和蓝牙MIDI协议

目录 一、蓝牙MIDI概念和功能简述 蓝牙MIDI,实际上是由苹果公司推广并且应用的,目的是借助于低功耗蓝牙来实现 主机和设备之间的无线连接 。协议的标准也是苹果定的。目前也充分的应用到安卓平台了 二、详细记录--功能说明 2.1 蓝牙MIDI的测试说明--m…

【笔记】计算机组成原理复习重点——篇三

计算机组成原理复习重点笔记 第二篇 计算机系统的硬件结构 第3章 系统总线第4章 存储器第5章 输入输出系统 第3章 系统总线 3.1 总线的基本概念 一、为什么要用总线 计算机的各个系统功能部件连在一起才能协同工作,部件之间不可能采用全互联形式&…

MATLB|基于复杂网络的配电系统微电网优化配置

目录 一、概述 二、系统研究 三、复杂网络框架 四、结果与讨论 五、Matlab代码实现 一、概述 多年来,各个领域的科学家开发了一套广泛的工具:数学、计算和统计,旨在分析、建模和理解网络。网络研究的基础可以追溯到图论的发展&#xff0…

第三方软件测试机构如何选择?

什么是软件产品检测报告? 软件测试机构根据委托方提供的测试需求,对软件进行功能性的检测,保证软件功能能正常运行。 软件产品登记测试也是申请软件产品登记的必要条件,对于买方来说,通过第三方检测机构出具的测试报告…