【redis】redis高可用 哨兵模式 一主二从三哨兵部署教程

news2024/9/23 15:25:40

哨兵模式:自动主从同步、自动选举主节点;基本可以满足大部分业务场景;
在针对大规模数据和高并发请求的场景、数据不能丢失,才需要用到集群模式。

本文教程基于redis3 , centos 8 stream操作系统,理论上来说 redis3也好 redis6也罢 ,centos和类centos系统都通用。

文章目录

  • 安装redis
  • 配置redis
    • 配置redis.conf
    • 配置sentinel.conf
  • 启动redis和哨兵
  • springboot项目整合
    • maven依赖
    • yml配置
  • 验证

安装redis

  1. 下载redis包、解压

    如果没有c++环境 需要先安装

    yum -y install gcc gcc-c++ make
    

    下载redis:

    wget http://download.redis.io/releases/redis-3.2.6.tar.gz
    

    解压redis:

    tar -zxvf redis-3.2.6.tar.gz
    

    进入redis的解压目录
    (假设当前在在 /app/redis/ 目录下)

    cd redis-3.2.6/
    

    编译redis

    make
    

    进入src目录

    cd src
    

    编译成功src目录下会有 redis-server 以及 redis-sentinel文件

配置redis

配置redis.conf

进入目录:

cd /app/redis/redis-3.2.6/

编辑配置文件:

vim redis.conf

核心修改地方:

主节点


# 表示redis允许所有地址连接。默认127.0.0.1,仅允许本地连接。
bind 0.0.0.0

# 允许redis后台运行
daemonize yes

# 设置redis日志存放路径 需要先手动touch创建该文件
logfile "/app/redis/log/redis_6379.log"

# 设置为no,允许外部网络访问
protected-mode no

# redis端口
port 6379

# 设置redis密码
requirepass 123456

# 主从同步master的密码
masterauth 123456

# appendonly 一般保持默认的no就可以 , 取决业务是否需要开启AOF
appendonly no

从节点1

(核心区别在于配置文件最后一行需要指定主节点)

tips:由于博主在同一台机器部署,所以port和logfile也有变动;
同一机器部署时,需要复制一个redis.tar包 解压,将改好的从节点配置文件复制过去,并编译


# 表示redis允许所有地址连接。默认127.0.0.1,仅允许本地连接。
bind 0.0.0.0

# 允许redis后台运行
daemonize yes

# 设置redis日志存放路径 需要先手动touch创建该文件
logfile "/app/redis/log/redis_6389.log"

# 设置为no,允许外部网络访问
protected-mode no

# redis端口 博主在同一台机器模拟部署,所以改了端口
port 6389

# 设置redis密码
requirepass 123456

# 主从同步master的密码
masterauth 123456

# appendonly 一般保持默认的no就可以 , 取决业务是否需要开启AOF
appendonly no

# 从节点核心配置:指定主节点地址 redis5以上为replicaof 
slaveof 192.168.0.1 6379

从节点2:
与从节点1相似,改了个port


# 表示redis允许所有地址连接。默认127.0.0.1,仅允许本地连接。
bind 0.0.0.0

# 允许redis后台运行
daemonize yes

# 设置redis日志存放路径 需要先手动touch创建该文件
logfile "/app/redis/log/redis_6399.log"

# 设置为no,允许外部网络访问
protected-mode no

# redis端口 博主在同一台机器模拟部署,所以改了端口
port 6399

# 设置redis密码
requirepass 123456

# 主从同步master的密码
masterauth 123456

# appendonly 一般保持默认的no就可以 , 取决业务是否需要开启AOF
appendonly no

# 从节点核心配置:指定主节点地址 redis5以上为replicaof 
slaveof 192.168.0.1 6379

注意: 哨兵模式不需要开启 cluster-enable!

配置sentinel.conf

主节点:

# 修改Sentinel监听端口
port 26379

# 设置为no,允许外部网络访问 (不能漏了)
protected-mode no

# 允许Sentinel后台运行
daemonize yes

# 设置Sentinel日志存放路径 同样需要手动touch创建
logfile "/app/redis/log/redis_6379_sentinel.log"


#  mymaster:master名称可自定义,127.0.0.1 6379 :redis主节点IP和端口,2 :表示多少个Sentinel认为redis主节点失效时,才算真正失效
sentinel monitor mymaster 127.0.0.1 6379 2

# 配置失效时间,master会被这个sentinel主观地认为是不可用的,单位毫秒   
sentinel down-after-milliseconds mymaster 10000

# 若sentinel在该配置值内未能完成master/slave自动切换,则认为本次failover失败。
sentinel failover-timeout mymaster 60000

# 在发生failover主备切换时最多可以有多少个slave同时对新的master进行同步。
sentinel parallel-syncs mymaster 2

# 设置连接master和slave时的密码,注意的是sentinel不能分别为master和slave设置不同的密码,因此master和slave的密码应该设置相同
sentinel auth-pass mymaster 123456

两个从节点配置都是和主节点一样的,由于博主是同机器模拟部署,所以改了个port

从节点1修改部分:

# 修改Sentinel监听端口
port 26389

从节点2修改部分:

# 修改Sentinel监听端口
port 26399

启动redis和哨兵

cd /app/redis/

先启动redis主节点

./redis-3.2.6/src/redis-server ./redis-3.2.6/redis.conf

再启动redis两个从节点 (注意将路径和配置文件名 改成自己的)

./redis_s1/src/redis-server ./redis_s1/redis_s1.conf
./redis_s2/src/redis-server ./redis_s2/redis_s2.conf

先启动sentinel哨兵主节点

./redis-3.2.6/src/redis-sentinel ./redis-3.2.6/sentinel.conf

再启动sentinel哨兵两个从节点 (注意将路径和配置文件名 改成自己的)

./redis_s1/src/redis-sentinel ./redis_s1/sentinel_s1.conf
./redis_s2/src/redis-sentinel ./redis_s2/sentinel_s2.conf

springboot项目整合

maven依赖

       <!-- Spring Data Redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        
        <!-- Lettuce Core, 用于Redis客户端连接 -->
        <dependency>
            <groupId>io.lettuce</groupId>
            <artifactId>lettuce-core</artifactId>
        </dependency>

yml配置

特别注意:nodes配置的是哨兵的端口,所以这也是为什么我们在sentinel.conf里面也要关闭protected mode的原因

spring:

  redis:
    sentinel:
      master: mymaster
      nodes: 192.168.0.1:26379,192.168.0.1:26380,192.168.0.1:26381
    ##redis 单机环境配置
    #    port: 6379
    #    host: 192.168.0.1
    #    password: 123456
    password: 123456
    database: 1

验证

  1. 我们可以通过可视化图形界面来验证, 在主节点增加一个key,我们打开从节点 发现key自动同步过去了,说明自动同步成功; 回到服务器将主节点kill -9 杀掉,在从节点1新增一个key, 从节点2能自动同步 ; 重新启动主节点 主节点也能拉取到从节点新增的数据 ,则表明集群正常运转。
    在这里插入图片描述
  2. 可以通过redis自带的cli 检验:
cd /app/redis/redis-3.2.6/src
./redis-cli 

输入密码

auth 123456

查看集群

info replication

按照教程步骤 6379端口对应的redis 本来是主节点,博主将主节点kill -9,并重启6379。
如下图:成功选举了6389为主节点,6379变成了slave
在这里插入图片描述

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

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

相关文章

利用 Python 制作图片轮播应用

在这篇博客中&#xff0c;我将向大家展示如何使用 xPython 创建一个图片轮播应用。这个应用能够从指定文件夹中加载图片&#xff0c;定时轮播&#xff0c;并提供按钮来保存当前图片到收藏夹或仅轮播收藏夹中的图片。我们还将实现退出按钮和全屏显示的功能。 C:\pythoncode\new\…

http协议深度解析——网络时代的安全与效率(1)

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆云计算学堂 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 目录 写在前面&#xff1a; 本章目的&#xff1a; …

【Python学习手册(第四版)】学习笔记11.1-赋值语句(分解赋值、序列赋值、解包等)及变量命名规则详解

个人总结难免疏漏&#xff0c;请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。 本文主要对赋值语句的各种形式做详解&#xff0c;以非常通俗易懂的语言、循序渐进的方式&#xff0c;分别对单个、元组及列表分解、序列赋值、序列解包、多重目标…

LinuxCentos中ELK日志分析系统的部署(详细教程8K字)附图片

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f427;Linux基础知识(初学)&#xff1a;点击&#xff01; &#x1f427;Linux高级管理防护和群集专栏&#xff1a;点击&#xff01; &#x1f510;Linux中firewalld防火墙&#xff1a;点击&#xff01; ⏰️创作…

Android发布Library至mavenCentral遇到 Received status code 401

一、由于我的AppUpdate 库最新的版本还是去年发布的&#xff0c;所以想着发布一个版本&#xff0c;可没想到什么都没有改动的情况下竟然返回401&#xff1b;检查了半天发现用户名和密码也没有错&#xff0c;百思不得解&#xff01; 二、最后没想到竟然是sonatype那边改了&#…

常见的Markdown编辑器推荐!

工欲善其事&#xff0c;必先利其器。一款好用的 Markdown 编辑器能极大地提高我们的写作体验&#xff0c;本篇博客就来介绍一些好用的编辑器。 ‍ ‍ Markdown 编辑器的分类 根据 Markdown 编辑器的使用环境&#xff0c;可以简单分为四类&#xff1a; 在线编辑器&#xff…

类和对象(中 )C++

默认成员函数就是用户不显示实现&#xff0c;编译器会自动实现的成员函数叫做默认成员函数。一个类&#xff0c;我们在不写的情况下&#xff0c;编译器会自动实现6个默认成员函数&#xff0c;需要注意&#xff0c;最重要的是前4个&#xff0c;其次就是C11以后还会增加两个默认成…

SpringBoot 优雅实现超大文件上传

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 前言 文件上传是一个老生常谈的话题了&#xff0c;在文件相对比较小的情况下&#xff0c;可以直接把文件转化为字节流上传到服务器&#xff0c;但在文件比较大的情况下&#xff0c;用普通的方式进行上传&…

hadoop学习笔记2-hdfs

3.HDFS 3.1HDFS两类节点 namenode&#xff1a;名称节点datanode&#xff1a;数据节点 1.namenode 1&#xff09;namenode用来存储元数据&#xff0c;接收客户端的读写请求&#xff0c;namenode的元数据会分别保存在磁盘和内存中&#xff0c;保存到内存是为了快速查询数据信…

一文让你学会python:面向对象

面向对象编程&#xff08;OOP&#xff09; 一.类与实例 1.类&#xff1a; 是对现实世界描述的一种类型&#xff0c;是抽象的&#xff0c;是实例的模板&#xff0c;类名采用大驼峰&#xff0c;定义方式为 class 类名: pass 。 2.实例&#xff1a; 根据类创建的具体对象&…

昇思25天学习打卡营第25天 | Pix2Pix实现图像转换

Pix2Pix实现图像转换 Pix2Pix概述 Pix2Pix是一种基于条件生成对抗网络&#xff08;cGAN, Condition Generative Adversarial Networks&#xff09;的图像转换模型&#xff0c;由Phillip Isola等人在2017年提出。它能够将语义/标签图像转换为真实图片、灰度图转换为彩色图、航空…

永劫无间:排位赛游戏攻略大全!VMOS云手机辅助攻略!

在《永劫无间》中&#xff0c;排位赛和金乌玩法是提升实力和展示技巧的绝佳途径。以下是详细的攻略建议&#xff0c;帮助玩家在游戏中取得更好的成绩。 排位赛 英雄们齐聚“聚窟洲”&#xff0c;为争夺“不朽面具”展开激烈的战斗。排位赛是玩家展示实力的重要平台&#xff0c…

六方云笔试总结

1. &#xff08;1&#xff09;题目 外部变量&#xff0c;指的是处于函数外部的全局静态变量&#xff0c;所以选c &#xff08;2&#xff09;知识点 1. static &#xff08;1&#xff09;函数外部的全局变量 当一个变量在函数外部定义并使用static关键字修饰时&#xff0c;这…

函数的学习(二)

1.函数嵌套 在C语言中&#xff0c;函数的嵌套是指在一个函数内部调用另一个函数。通过函数的嵌套&#xff0c;可以将程序的功能细化&#xff0c;提高代码的可读性和可维护性。函数的嵌套可以是直接嵌套&#xff0c;也可以是间接嵌套。 直接嵌套是指一个函数直接在另一个函数内…

华彩38载 同心筑未来—中华财险客户节盛大启幕!

活动主题&#xff1a;华彩38载 同心筑未来—中华财险客户节金融知识有奖问答 活动时间&#xff1a;2024年7月26日至9月15日 参与方式&#xff1a;① 微信搜索并关注公众号“中华财险宁波分公司”进入答题活动页面&#xff0c;点击“开始答题”即可开始答题&#xff1b;②规定…

ComfyUI-MuseTalk部署依赖mmcv

ComfyUI-MuseTalk部署依赖mmcv ComfyUI-MuseTalk是MuseTalk基于ComfyUI的自定义节点插件。MMPose 是一款基于 PyTorch 的“人体姿态”分析的开源工具箱&#xff0c;是 OpenMMLab 项目的成员之一。OpenMMLab 团队致力于构建了深度学习时代最具影响力的开源计算机视觉算法系统&am…

【C++标准库】介绍及使用string类

string 一.string类介绍二.string类的静态成员变量三.string类的常用接口1.构造函数&#xff08;constructor&#xff09;2.析构函数&#xff08;destructor&#xff09;3.运算符重载&#xff08;operator&#xff09;1.operator2.operator[]3.operator4.operator 4.string的四…

SecureCrt设置豆沙绿

绿豆沙色能有效的减轻长时间用电脑的用眼疲劳&#xff01; 色调&#xff1a;85&#xff0c;饱和度&#xff1a;123&#xff0c;亮度&#xff1a;205&#xff1b;RGB颜色红&#xff1a;199&#xff0c;绿&#xff1a;237&#xff0c;蓝&#xff1a;204&#xff1b; 十六进制颜色…

3步阐述搜索框做了什么事情

搜索功能是几乎每个产品的通用标配功能&#xff0c;一个看似简单的搜索框背后&#xff0c;其实隐含了大量的设计思考和技术壁垒。本文将从三个部分阐述&#xff0c;为何搜索框并不简单。 本文将从搜索场景的思考、基于步骤的搜索设计以及搜索数据的追踪3个部分&#xff0c;对产…

今日arXiv最热大模型论文:北京大学最新综述:视觉大模型中的漏洞与攻防对抗

近年来&#xff0c;视觉语言大模型&#xff08;LVLM&#xff09;在文本转图像、视觉问答等任务中大放异彩&#xff0c;背后离不开海量数据、强大算力和复杂参数的支撑。 但是&#xff01;大模型看似庞大的身躯背后却有一颗脆弱的“心脏”&#xff0c;极易受到攻击。攻击者可以…