redis高可用集群搭建

news2024/9/30 13:24:13

redis高可用集群搭建

  • redis的安装
  • 配置允许远程访问
  • 重启服务
  • 检查服务是否启动
  • 架构图
  • 开始搭建集群
  • 安装ruby
  • 创建集群
  • 高可用测试
  • redis集群的扩展
  • 将7号机添加为新的master节点
  • 添加从节点
  • 删掉一个slave节点
  • 删除master节点

redis的安装

sudo apt-get install redis-server

配置允许远程访问

sudo gedit /etc/redis/redis.conf

注释掉**#bind 127.0.0.1**行

重启服务

sudo redis-server /etc/redis/redis.conf

检查服务是否启动

ps -ef | grep redis

架构图

在这里插入图片描述

开始搭建集群

要想搭建高可用的redis集群,至少需要三台主库,每个主库需要一台从库。每个主库的数据是不同的,每个从库的数据跟主库同步,redis会将需要存放的数据放到某一个主库中。我们开八台虚拟机,使用前六台搭建一个高可用的redis集群,服务器分配如下:
在这里插入图片描述
分别进入1-6号主机,建立redis的集群目录,要有权限,以服务端口为文件夹名,在下面把redis的配置文件拷贝一份:

mkdir -p /home/wang/redis-cluster/7001
sudo cp /etc/redis/redis.conf /home/wang/redis-cluster/7001/redis-7001.conf
chmod 777 redis-7001.conf

其余5台服务器操作类似,只需要改服务端口。
修改redis-7001.conf的内容,注意以下配置:

port 7001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

其余五台服务器只需要变更端口号。
改好后,要以全新的配置文件来启动redis:

sudo redis-server /home/wang/redis-cluster/7001/redis.conf
ps -ef|grep redis

如果发现默认的6379的redis还开着,就把它关掉:

sudo /etc/init.d/redis-server stop

此时redis的进程应该是这样的:
在这里插入图片描述
确认六台redis都按照指定的配置和端口启动后,就可以创建集群了。

安装ruby

sudo apt-get install ruby
sudo apt-get install rubygems
sudo gem install redis

创建集群

找到创建集群的脚本文件redis-trib.rb,把它拷贝到bin目录下:

cp redis-trib.rb /usr/local/bin/redis-trib

随便找一台服务器,执行一次集群的创建命令:

sudo redis-trib create --replicas 1 192.168.252.128:7001 192.168.252.130:7002 192.168.252.131:7003 192.168.252.132:7004 192.168.252.134:7005 192.168.252.135:7006 

看到如下提示:
在这里插入图片描述
确认主从没问题,输入yes,即可创建成功。
我们输入以下命令确认集群的状态:

redis-trib check 192.168.252.130:7002

可以看到集群的信息:
在这里插入图片描述
通过以下命令也能查看集群状态:

redis-cli -p 7111 cluster nodes

在这里插入图片描述

高可用测试

进入192.168.252.128:7001,杀掉redis的进程,过几秒,看看集群的状态,发现7001的主节点已经挂掉,对应的从节点7004已经变为主节点:
在这里插入图片描述
下面恢复192.168.252.128:7001

sudo redis-server /home/wang/redis-cluster/7001/redis.conf
redis-cli -c -p 7001
cluster nodes

在这里插入图片描述
发现挂掉的7001节点已经变为7004的从节点。这说明,在master节点下线后,slave节点会自动提升为master节点,保存集群持续提供服务;fail节点恢复后,会自动添加到集群中,变成slave节点。

redis集群的扩展

为了演示redis集群的扩展,我们使用7和8两台服务器扩展现有的6台集群。
进入7号和八号服务器,按照前面的方式,分别安装redis,创建集群的目录和配置文件并启动。

将7号机添加为新的master节点

使用redis-trib脚本的add-node命令将一个节点添加到集群里面,第一个是新节点 ip:port,第二个是任意一个已存在节点 ip:port。

cp redis-trib.rb /usr/local/bin/redis-trib
redis-trib add-node 192.168.252.150:7007 192.168.252.128:7001

在这里插入图片描述
以上操作结果表示节点添加成功,新增的节点不包含任何数据, 因为它没有分配任何 slot。
为新节点分配哈希槽(slot):你只需要指定集群中其中一个节点的地址,redis-trib 就会自动找到集群中的其他节点。目前redis-trib只能在管理员的协助下完成重新分片的工作,命令如下:

redis-trib reshard 192.168.252.150:7007

在这里插入图片描述
它会问你想分配多少个槽位过来,填个500吧。他又问你要分配主机(7号服务器)的ID,我的是e131a6564a1e935da2ceab59813c5ccb5dfd9c11。他又问你从哪些服务器取槽位过来,就填all表示所有。输入yes确认即可。
可以通过下图看到集群的状态,可以看到7号机的槽位分配成功。
在这里插入图片描述
以上集群状态输出信息解析:

  1. 节点 ID
  2. IP:PORT
  3. 节点状态标识: master、slave、myself、fail?、fail
  4. 如果是从节点,表示主节点的ID;
  5. 如果是主节点,则为 ‘-’ 集群最近一次向各个节点发送 PING 命令后,过去多长时间还没有接到回复
  6. 节点最近一次返回 PONG 的时间戳
  7. 节点的配置纪元
  8. 本节点的网络连接情况: connected、disconnected
  9. 如果是主节点,表示节点包含的槽

添加从节点

进入八号服务器192.168.252.133,输入:

redis-trib add-node 192.168.252.133:7008 192.168.252.128:7001

在这里插入图片描述
这时新增的服务器还是master,我们将其转为slave,命令后跟7号服务器的id:

redis-cli -c -p 7008
cluster replicate ab31611b3424990e2b9bbe73135cb4cb0ace394f

这时就变为slave了:

cluster nodes

在这里插入图片描述

删掉一个slave节点

redis-trib del-node 192.168.252.133:7008 5256e05a17c106c93285a03aff1b1b9e7ca7bf0c

在这里插入图片描述
再看节点状态,发现八号机已被删除:
在这里插入图片描述

删除master节点

先移走master节点的槽位,再移除服务器:

redis-trib reshard 192.168.252.150:7007

要删除槽位的数量,填499,接收槽位的 master 节点 ID,填4号服务器ID,删除槽位的master节点ID,填7号的ID.最后输入done。
在这里插入图片描述

redis-cli -c -p 7006 cluster nodes

这时发现7号服务器的槽位已被移除,可以开始删了。
在这里插入图片描述

redis-trib del-node 192.168.252.150:7007 ab31611b3424990e2b9bbe73135cb4cb0ace394f

这时7号节点也被关闭:
在这里插入图片描述

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

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

相关文章

引进吸收再消化,可借鉴的产业超车模式探索

近期,C919大型客机顺利开启商业首航,这也标志着坐国产大飞机出行的时代来了!C919是我国首次按照国际适航标准自行研制、具有自主知识产权的喷气式干线客机,它的商用飞行也象征着我国对波音、空中客车等大型客机企业垄断地位的一次…

【unity每日一记】unity中常见的特性大全

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

【每日一题】LCP 41. 黑白翻转棋

【每日一题】LCP 41. 黑白翻转棋 LCP 41. 黑白翻转棋题目描述解题思路 LCP 41. 黑白翻转棋 题目描述 在 n*m 大小的棋盘中,有黑白两种棋子,黑棋记作字母 “X”, 白棋记作字母 “O”,空余位置记作 “.”。当落下的棋子与其他相同颜色的棋子在…

JMeter根据负载量计算并发用户数实例

目录 前言: 业务需求 分析需求 测试模型构建 & 用例设计 一、场景构建:登录业务操作流程、考勤打卡操作流程; 二、场景用例设计 三、测试脚本用例设计: 模型构建 登录打卡-操作流程: 场景设计 常用测试场景的类型:…

nx安装llvmlite与numba

文参考 Python安装llvmlite、numba报错解决方案_ClearLon的博客-CSDN博客 llvmlite与numba你可以理解为用于数据处理的加速包 我的python版本为3.6.9,llvmlite版本为0.32.1,numba版本为0.49.1 目录 1 安装 llvmlite 2 安装numba 1 安装 llvmlite…

软件测试技能,JMeter压力测试教程,登录参数化CSV 数据文件设置(五)

目录 前言 一、场景案例 二、登录接口 三、测试数据准备 四、CSV数据文件设置 五、查看结果 前言 我们在压测登录接口的时候,如果只用一个账号去设置并发压测,这样的结果很显然是不合理的,一个用户并发无法模拟真实的情况 如果要压测…

Python的特点和优势

Python的优特点 简单易学: Python语言相对于其他编程语言来说,属于比较容易学习的一门编程语言,它注重的是如何解决问题而不是编程语言的语法和结构。正是因为Python语言简单易学,所以,已经有越来越多的初学者选择Pyth…

你可以不用RxJava,但必须得领悟它的思想!

作者:cofbro 前言 Rx 是一种响应式编程的思想,如今有很多语言都支持这种思想:RxJava,RxJs,RxSwift...。它是基于特殊的观察者模式来实现的,能够轻松的实现异步事件响应流,避免回调地狱的产生。…

Avalon总线协议

Avalon总线主要用于片内处理器与外设,常用于高速数据传输流、读写寄存器和存储器、控制片外器等。 Avalon 总共有七种接口: Avalon Clock Interface, Avalon时钟接口 -- 驱动或接收时钟信号的接口Avalon Reset Interface, Avalon复位接口 -- 驱动或接收…

想要好用的ai绘画工具推荐?分享怎么文字生图片在线

小张: 嘿,小明,你有没有听说过在线将文字转换成图片的工具?我最近在寻找一种方法,可以将我的文字描述转化为视觉图像。 小明: 嗯,听起来很有趣!你是指通过某种技术把文字转换成图片,然后展示出…

亚马逊加购对卖家有什么作用?

对亚马逊卖家来说,亚马逊的加购功能也具有一些重要的作用: 1、增加销售机会:当买家将卖家的商品添加到购物车中时,这表示他们对该商品有兴趣,并考虑购买。这为卖家提供了一个机会,因为购物车中的商品更有可…

【For¥】产品落地到$进账重要流程中你需要知道的东西

文章目录 产品思维空、雨、伞-决策思维5W1H-重点思维矩阵分析法费米推理 工具 开发解决方案(实现)调优(性能)安全 营销运营常见运营岗位分类运营必备能力 销售策略手段方式话术 来源 产品 思维 空、雨、伞-决策思维 产品经理作…

使用yolov5训练自己的数据集并测试效果

1.源码下载链接 1.yolov5原模型以及权重文件 链接:https://pan.baidu.com/s/1XlvHIxlzJEqp2wlRx5Fb1w 提取码:xtkj 2.训练自己数据集的完整代码 链接:https://pan.baidu.com/s/1xdnah8ZLoT7E1YDm-RiGzQ 提取码:9261 2.训练…

CASAIM签约AMOOL TRADING COMPANY LTD,正式进军中东市场

随着3D打印、三维数字化及全自动化智能检测技术的不断进步和应用领域的扩大,全球市场在高速增长。CASAIM作为国内领先的3D打印、三维数字化及全自动化智能检测技术研发及制造商,一直致力于为全球智能制造企业提供高精度、高效率的智能制造及检测解决方案…

【深度学习】segment-anything使用过程

文章目录 官网Checkpoints安装快速体验导出onnxWeb应用jupyter 脚本运行SAM的脚本automatic_mask_generator_example 官网 https://github.com/facebookresearch/segment-anything Checkpoints 三种模型: parser.add_argument( “–model-type”, typestr, requi…

前端JavaScript中的动态事件添加

💂 个人网站:【海拥】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 目录 前言事件的基本概念动态…

使用AI聊天模型写作和编码心得

原文合集地址如下,有需要的朋友可以关注 本文地址 合集地址 给大家推荐一个国内暂时免费使用AI聊天模型的网站: ChatAnywhere 有需要的朋友可以点击试用一下。 写文档 要点 详细描述要干的事情 说清楚你的需求,例如: 可…

vue3的代码片段如何设置

vscode -文件-用户代码片段 {"vue3 template": {"prefix": "vue3","body": ["<template>"," <div>","$1"," </div>","</template>\n","<s…

家政服务小程序开发

随着人们生活水平的提高和生活节奏的加快&#xff0c;越来越多的家庭需要家政服务来解决家庭问题。为了更好地满足用户需求&#xff0c;家政行业开始发展家政小程序。下面我们来介绍一下家政小程序的主要功能。 1. 家政下单 家政小程序的主要功能之一是家政下单。用户可以在小…

OGG|使用 OGG19c 迁移 Oracle11g 到 19C(第二版)

作者 | JiekeXu 来源 |公众号 JiekeXu DBA之路&#xff08;ID: JiekeXu_IT&#xff09; 如需转载请联系授权 | (个人微信 ID&#xff1a;JiekeXu_DBA) 大家好&#xff0c;我是 JiekeXu,很高兴又和大家见面了,今天和大家一起来看看使用 OGG19c 迁移 Oracle11g 到 19C(第二版)&am…