Linux的Redis集群搭建-主从集群哨兵模式

news2024/11/22 21:53:36

上次教大家在linux中安装单机版本的redis: Linux安装Redis(图文解说详细版)

这次我们讲一下Linux安装redis的集群版本

文章目录

    • 🌴准备redis环境
      • 🌴第一步,下载redis
      • 🌴第二步,传输到三台服务器中
      • 🌴第三步,解压文件
      • 🌴第四步,安装gcc环境
      • 🌴第五步,编译
      • 🌴第六步,安装
    • 🌴主从复制集群搭建
      • 🌴第一步,进入解压好的redis目录下
      • 🌴第二步,编辑redis.conf文件
      • 🌴第三步,防火墙放开端口
      • 🌴第四步,启动三台机器
      • 🌴第五步,连接redis查看状态
      • 🌴第六步,验证是否搭建成功
    • 🌴配置哨兵模式
      • 🌴第一步,编写sentinel.conf文件
      • 🌴第二步,防火墙放开端口
      • 🌴第三步,启动哨兵
      • 🌴第四步,查看哨兵状态
      • 🌴springboot连接redis集群

Redis是一种基于内存的开源键值对存储系统,它常用于高性能的数据存储和缓存应用。在处理大量数据时,Redis可以显著提高应用程序的性能,而Redis集群则更进一步,可以实现数据的高可用性和负载均衡。在本文中,我们将探讨如何在Linux环境下搭建Redis集群,并介绍其中的主从集群和哨兵模式。

🌴准备redis环境

ip端口
192.128.64.1286379
192.128.64.1296379
192.128.64.1306379

🌴第一步,下载redis

官网地址:
https://redis.io/download/

在这里插入图片描述

🌴第二步,传输到三台服务器中

opt文件夹即可

在这里插入图片描述

🌴第三步,解压文件

tar -zxvf redis-6.2.12.tar.gz 

在这里插入图片描述

三台机器都一样

🌴第四步,安装gcc环境

yum install gcc

在这里插入图片描述

三台机器都一样

🌴第五步,编译

进入解压好的文件夹里面,输入下面语句

make

在这里插入图片描述

在这里插入图片描述

三台机器都一样

🌴第六步,安装

进入src文件中进行安装,输入:

 make install

在这里插入图片描述

三台机器都一样

🌴主从复制集群搭建

Redis的主从复制是指一个Redis服务器可以拥有多个从属服务器,这些从属服务器会自动复制主服务器的数据,保持与主服务器数据的同步。

主从集群的作用是提高Redis的可用性和性能。当主服务器崩溃时,可以使用从属服务器代替主服务器,提高系统的可用性。同时,由于从属服务器可以处理读请求,主服务器就可以专注于处理写请求,提高系统的性能。

他的图如下:主从结构+哨兵(sentinel)

在这里插入图片描述

🌴第一步,进入解压好的redis目录下

/opt/redis/redis-6.2.12

在这里插入图片描述

🌴第二步,编辑redis.conf文件

这里把001作为主机,002和003为从机

vim redis.conf 

要改的内容如下

bind:0.0.0.0
port:6379
protected-mode:no
daemonize:yes
requirepass:123456.com
masterauth:123456.com

bind:0.0.0.0
Redis 默认只允许本机访问,把 bind 修改为 0.0.0.0 表示允许所有远程访问。如果想指定限制访问,可设置对应的 ip。
port:6379
监听端口默认为6379,想改其他也行。
protected-mode:no
关闭保护模式,可以外部访问。
daemonize:yes
设置为后台启动。
requirepass:123456.com
设置 redis 连接密码。
masterauth:123456.com
slave 服务连接 master 的密码。

从机要改的如下

bind:0.0.0.0
port:6379
protected-mode:no
daemonize:yes
requirepass:123456.com
masterauth:123456.com
replicaof 192.168.64.128 6379

replicaof 192.168.64.128 6379
指定当本机为 slave 服务时,设置 master 服务的IP地址及端口,在 redis 启动的时候会自动跟 master 进行数据同步,所以两台从机都这样配置即可。

🌴第三步,防火墙放开端口

firewall-cmd --add-port=6379/tcp --permanent --zone=public
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

🌴第四步,启动三台机器

进入src执行

./redis-server ../redis.conf 

🌴第五步,连接redis查看状态

在src目录下输入:

./redis-cli -a 123456.com

接着输入

info replication

在这里插入图片描述

可以看到主机有两个从节点

这是Redis的主从配置的一个状态报告,其中:

  • role:master 表示该节点是主节点。
  • connected_slaves:2 表示有2个从节点连接到该主节点。
  • slave0 和 slave1 表示从节点的信息,包括IP地址、端口号、状态、复制偏移量(offset)和延迟(lag)等信息。
  • master_failover_state:no-failover 表示该主节点当前没有处于故障转移状态。
  • master_replid 是主节点的当前复制ID。
  • master_repl_offset 是主节点复制偏移量的当前值。
  • repl_backlog_active:1 表示Redis正在使用复制缓冲区(replication backlog)来重放数据。

在主从配置中,主节点是数据的源头,从节点通过复制(replication)主节点的数据来实现数据的备份和高可用性。主节点和从节点之间的复制是异步的,从节点需要不断地从主节点复制数据来保持与主节点的数据一致性。当主节点发生故障时,可以通过从节点自动选举新的主节点来实现故障转移(failover),从而保证系统的可用性。

再看从机节点

在这里插入图片描述

这是一个Redis的从节点配置信息,可以看到以下信息:

  • role: 当前节点的角色为slave,表示这是一个从节点。
  • master_host: 从节点连接的主节点的IP地址。
  • master_port: 从节点连接的主节点的端口号。
  • master_link_status: 主从节点连接状态,up表示连接正常。
  • master_last_io_seconds_ago: 从节点与主节点最后一次通信的时间,单位为秒。
  • master_sync_in_progress: 当前是否正在进行同步操作。
  • slave_read_repl_offset: 从节点上次读取数据的位置。
  • slave_repl_offset: 从节点同步到的位置。
  • slave_priority: 从节点优先级,用于选举主节点时的排序。
  • slave_read_only: 从节点是否只读。
  • replica_announced: 主节点是否已经宣告该从节点为它的副本。
  • connected_slaves: 当前从节点连接的其他从节点数量。
  • master_failover_state: 主节点故障转移状态,no-failover表示未发生故障转移。
  • master_replid: 主节点的replication ID。
  • master_repl_offset: 主节点当前的复制偏移量。
  • repl_backlog_active: 是否开启了复制积压缓冲区。
  • repl_backlog_size: 复制积压缓冲区的大小。
  • repl_backlog_first_byte_offset: 复制积压缓冲区的起始位置。
  • repl_backlog_histlen: 复制积压缓冲区当前保存的数据长度。

🌴第六步,验证是否搭建成功

我们在主节点设置一个值,看看从节点能否拿到值

主节点输入:

在这里插入图片描述

从节点输入:

在这里插入图片描述

成功拿到值!!

这个时候从节点是不能set值的:

(error) READONLY You can't write against a read only replica.

在这里插入图片描述

至此redis的主从集群就搭建完成

🌴配置哨兵模式

Redis哨兵模式是一种实现高可用性的Redis部署方案。在哨兵模式中,有一个或多个Redis Sentinel进程监控Redis Master和Slave进程的状态。如果Master进程发生故障,哨兵会自动将Slave升级为新的Master,并更新所有的Slave节点的配置,以确保数据的一致性和可用性。

哨兵模式的核心是Redis Sentinel进程,它是一种运行在独立进程中的轻量级程序,可以自动执行以下操作:

  1. 监控Redis Master和Slave进程的状态,如果Master进程出现故障,哨兵会自动将其中一个Slave升级为新的Master。
  2. 监控Redis Sentinel进程本身的状态,如果出现故障,其他哨兵会接管它的工作。
  3. 自动将新的Master节点信息更新到所有的Slave节点,以确保数据的一致性。
  4. 向客户端提供可用的Redis Master节点信息。

在哨兵模式中,客户端不需要知道Redis的实际架构,只需要知道哨兵的IP和端口即可。当客户端需要连接Redis时,它会向哨兵发送请求,哨兵会返回可用的Redis Master节点信息。如果当前的Master节点发生故障,哨兵会自动将其中一个Slave升级为新的Master,然后将新的Master节点信息更新到所有的Slave节点,以确保数据的一致性和可用性。

🌴第一步,编写sentinel.conf文件

在这里插入图片描述
设置为以下属性

//关闭保护模式,可以外部访问。
protected-mode:no
//设置为后台启动。
daemonize:yes
//指定主机IP地址和端口,并且指定当有2台哨兵认为主机挂了,则对主机进行容灾切换。
sentinel monitor mymaster 192.168.64.128 6379 2
//当在Redis实例中开启了requirepass,这里就需要提供密码。
sentinel auth-pass mymaster 123456.com

三台机器都这么设置,不分主从

🌴第二步,防火墙放开端口

firewall-cmd --add-port=26379/tcp --permanent --zone=public
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

🌴第三步,启动哨兵

三个机器进入src目录,执行:

./redis-sentinel ../sentinel.conf 

🌴第四步,查看哨兵状态

redis-cli -p 26379
info sentinel

在这里插入图片描述
这些是Redis Sentinel模式下的哨兵节点状态信息,具体含义如下:

  • sentinel_masters:当前哨兵监控的主节点数量
  • sentinel_tilt:哨兵是否发生了异常状态,如脑裂(split-brain)等,0表示未发生异常
  • sentinel_running_scripts:当前哨兵正在运行的Lua脚本数量
  • sentinel_scripts_queue_length:等待执行的Lua脚本数量
  • sentinel_simulate_failure_flags:哨兵节点的模拟故障标识位
  • master0:主节点的信息,包括节点名称、状态、IP地址和端口号、从节点数量和哨兵节点数量等。其中,name表示节点的名称,status表示节点的状态(ok表示正常,fail表示异常),address表示节点的IP地址和端口号,slaves表示从节点的数量,sentinels表示哨兵节点的数量。

我们模拟一下主节点宕掉了

在这里插入图片描述

这台是128服务器,我们去另外两台服务器上面看一下:

在这里插入图片描述

发现130变成了主节点

这个时候再启动128服务,发现他就变成了从节点了

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

至此哨兵模式模式我们搭建完成!!

🌴springboot连接redis集群

如果springboot要连接redis集群,就不能像单机那么填了,你需要填哨兵集群的ip和端口,配置如下:

#集群
spring.redis.sentinel.master=mymaster
spring.redis.password=123456.com
spring.redis.sentinel.nodes=192.168.64.128:26379,192.168.64.129:26379,192.168.64.130:26379

在本文中,我们介绍了Redis集群的主从集群和哨兵模式的搭建方法。通过这些方法,我们可以实现Redis的高可用性和负载均衡,确保在应用程序处理大量数据时的性能和稳定性。在实际应用中,可以根据自身的需求来选择合适的Redis集群架构,并进行相应的配置和优化,以达到更好的效果。

如果本文对你有帮助,博主希望得到你的一个点赞和收藏!!

在这里插入图片描述

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

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

相关文章

PCIE研究-2

PCIe是一种高速串行总线,用于连接计算机内部的各种设备。在PCIe中,有四种不同的设备类型:Switch、Bridge、Root Complex和EndPoint。本篇文章将介绍这四种设备类型的基础知识。 1. Switch Switch是PCIe中最常见的设备类型之一,它…

【LeetCode热题100】--11.盛最多水的容器

11.盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 **说明:*…

【线下培训】上海临港: RT-Thread × 瑞萨 工业监视器 RA6M3 HMI Board解决方案

注册RT-Thread官方论坛,即可第一时间获得最新消息!更有大量活动赚取积分,免费兑换开发板! 注册地址:https://www.rt-thread.org/account/user/register.html RT-Thread 与瑞萨将于10月14日在上海临港举行一场线下培训…

java_web的框架分析

文章目录 本阶段技术体系用项目理解原理controllersClassPathXmlApplicationContextDispatcherServletFruitServiceImplFilter 本阶段技术体系 用项目理解原理 项目的目录 首先设置一个参数,这里里面用反射机制,获取方法的时候如果不设置会获取到arg[0…

AI绘画关键词:小龙女

a lady dressed in a white gown stand beside a dragon, in the style of peter gric, traditional essence, kazuki takamatsu, andreas rocha, life-like avian illustrations, serene faces, aurorapunk,3D --ar 9:16 --s 250 --v 5.2

浅述数据中心供配电系统解决方案及产品选型

安科瑞 华楠 【摘 要】现如今,社会主要领域已从对单个设备的关注转化为对于系统解决方案的关注,数据中心的供应商们也想尽办法去满足所面对的各方面需求。基于此,主要提出了云计算数据中心供配电解决方案,同时还对数据中心供配电…

中小型教育机构这样做,让你轻松抓住受众注意力

教育一直都是家长对于孩子最关心的事情,对于部分家庭来说,教育支出占整个家庭支出的50%左右。 而软文作为目前效果比较明显而且性价高的推广方式,也很适合教育培训行业,因为它能让潜在客户可以清楚地了解产品的特性,感…

乐观善良的属马人,这几年的运势怎么样?

生肖马的人是一个乐观向上,拥有对生活的热情态度,更是个实打实过日子的人, 品性善良,对朋友尽心尽力,在朋友的面前没有丝毫的不真诚, 且乐于助人,因此朋友多,贵人也多。 属马人精力充…

LED智能家居灯 开关调光 台灯落地灯控制驱动 降压恒流IC AP5191

产品描述 AP5191是一款PWM工作模式,高效率、外围简单、内置功率MOS管,适用于4.5-150V输入的高精度降压LED恒流驱动芯片。输出最大功率150W,最大电流6A。AP5191可实现线性调光和PWM调光,线性调光脚有效电压范围0.55-2.6V.AP5191 工作频率可以…

热烈祝贺金伯帆集团成功入选航天系统采购供应商库

经过航天系统采购平台的严审,上海金伯帆信息科技集团有限公司成功入选中国航天系统采购供应商库。航天系统采购平台是航天系统内企业采购专用平台,服务航天全球范围千亿采购需求,目前,已有华为、三一重工、格力电器、科大讯飞等企…

景联文科技:数据供应商在新一轮AI热潮中的重要性

景联文科技是AI基础行业的头部数据供应商,可协助人工智能企业解决整个人工智能链条中数据标注环节的相对应问题。 随着全球新一轮AI热潮来袭,大量训练数据已成为推动AI算法模型进步和演化的不可或缺的重要因素。数据的质量和数量直接影响了模型训练和性能…

C++QT 作业8

#include "mywind.h" #include "ui_mywind.h" #include <iostream> #include <QIcon> #include <QLabel> #include <QLineEdit> #include <QDebug>//信息调试类 用于输出数据 Mywind::Mywind(QWidget *parent): QWidget(pa…

Sectigo https证书

Sectigo&#xff08;前身为ComodoCA&#xff09;是全球在线安全解决方案提供商和全球最大的证书颁发机构。Sectigo为全球超过300万客户提供服务&#xff0c;并稳居SSL市场份额榜首。 其成功建立在两个关键要素之上&#xff1a;灵活的SSL产品范围和实惠的价格。Sectigo是第一家…

测试域: 流量回放-介绍篇

建设背景 测试人员回归耗时长&#xff0c;成本大。公司很多测试都进行手工测试&#xff0c;在集成测试中需要耗费一周时间进行全量测试&#xff0c;在各个环境(用户测试环境和预发布环境)回归测试时需要耗费三天左右。加上编写测试用例时间&#xff0c;理解需求时间等其他&…

学习vue3源码

&#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 1. 为什么要学习源码 阅读优秀的代码的目的是让我们能够写出优秀的代码 不给自己设限&#xff0c;不要让你周围人…

C++——模板,template

函数模板 我们经常会遇到一种情况&#xff1a;用相同的方法处理不同的数据。对于是函数&#xff0c;我们可以用函数重载来解决。虽然重载可以解决这种情况&#xff0c;但还是很繁琐。如果函数重载10次&#xff0c;有一天你突然发现有新的需求&#xff0c;函数需要修改&#xf…

Linux CentOS7 tree命令

tree就是树&#xff0c;是文件或文件名输出到控制台的一种显示形式。 tree命令作用&#xff1a;以树状图列出目录的内容&#xff0c;包括文件、子目录及子目录中的文件和目录等。 我们使用ll命令显示只能显示一个层级的普通文件和目录的名称。而使用tree则可以树的形式将指定…

管理类联考——数学——汇总篇——知识点突破——代数——等比数列——性质

下标和定理 在等比数列中&#xff0c;若 m &#xff0b; n p q ( m &#xff0c; n &#xff0c; p &#xff0c; q ∈ N &#xff0b; ) m&#xff0b;npq(m&#xff0c;n&#xff0c;p&#xff0c;q∈N_&#xff0b;) m&#xff0b;npq(m&#xff0c;n&#xff0c;p&#x…

面经学习三

目录 Java 与 C 的区别 面向对象和面向过程的区别 面向对象特性 Java的基本数据类型 深拷贝和浅拷贝 Java创建对象的几种方式 final, finally, finalize 的区别 Java 与 C 的区别 Java 是纯粹的面向对象语言&#xff0c;所有的对象都继承自 java.lang.Object&#xff0c…

mybatis学习记录(三)-----关于SQL Mapper的namespace

关于SQL Mapper的namespace 视频总结笔记&#xff1a; 在SQL Mapper配置文件中<mapper>标签的namespace属性可以翻译为命名空间&#xff0c;这个命名空间主要是为了防止SQL id 冲突的。 创建CarMapper2.xml文件&#xff0c;代码如下&#xff1a; CarMapper2.xml: <?…