保姆教程系列二、Redis高可用(主从同步+哨兵模式)

news2024/11/17 21:26:47

系列文章目录

!!!是的没错,胖友们,保姆教程系列又更新了!!!

保姆教程系列一、Redis部署 so easy
保姆教程系列二、Redis高可用(主从同步+哨兵模式)
保姆教程系列三、Redis高可用(Cluster集群模式)

文章目录

  • 系列文章目录
  • 前言
  • 一、主从同步
    • 什么是主从复制
    • 主从复制的作用
    • 主从复制的原理
    • 第一步、环境准备
    • 第二步、主从复制
      • 2.1 redis环境配置
      • 2.2 启动redis服务
      • 2.3 查看主从状态
    • 第三步、主从测试
      • 3.1 主节点
      • 3.2 从节点
  • 二、哨兵模式
    • 什么是哨兵模式
    • 哨兵模式的原理
    • 第一步、搭建哨兵
      • 1.1 哨兵配置
      • 1.2 启动哨兵
      • 1.3 哨兵状态
      • 1.4 容灾切换
    • 哨兵模式的优缺点
  • 三、下篇预告
  • 总结


前言

请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i、


上篇我们介绍到 保姆教程系列一、Redis部署 so easy

提示:以下是本篇文章正文内容,下面案例可供参考

一、主从同步

什么是主从复制

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave),数据的复制是单向的,只能由主节点到从节点。master以写为主,slave以读为主

主从复制的作用

  • 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
  • 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
  • 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
  • 读写分离:可以用于实现读写分离,主库写、从库读,读写分离不仅可以提高服务器的负载能力,同时可根据需求的变化,改变从库的数量;
  • 高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。

主从复制的原理

  • Slave 启动成功连接到 master 后会发送一个sync同步命令
    master 接到命令,启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,并完成一次完全同步
  • 全量复制:slave
    服务在接收到数据库文件数据后,将其存盘并加载到内存中
  • 增量复制:master
    继续将新的所有收集到的修改命令依次传给slave,完成同步,但是只要是重新连接master,一次完全同步(全量复制)将被自动执行!主机的数据一定可以在从机中看到

redis主从

第一步、环境准备

先准备四台服务器,并安装好redis服务,友情链接:Centos下安装redis

注意:我们需要设置一下防火墙,否则主从机之间无法同步数据,命令如下,这里根据自己设置的端口进行更改。或者关闭防火墙也可以

#查看防火墙是否开启
firewall-cmd --state 结果:not running没有运行

#关闭防火墙
systemctl stop firewalld.service

第二步、主从复制

2.1 redis环境配置

注意:修改四台机器redis安装路径下的配置文件redis.conf

#修改redis.conf
bind  0.0.0.0  #限定redis访问网卡
port 6739 # 绑定端口号
daemonize yes #用来指定redis是否要用守护进程的方式启动,默认为no
protected-mode no #设置为后台启动
logfile /usr/local/redis/log/redis_6379.log #redis日志文件
pidfile  /usr/local/redis/log/redis_6379.pid #redis以守护进程方式运行
replicaof  192.168.248.128 6379 #绑定主节点的方法,注意:主节点不需要这个配置,只配置从节点!!!
requirepass admin123  #本地redis密码
masterauth  admin123  #主节点redis密码 注意:主节点也要配置,后边哨兵容灾切换用到
slaveof 192.168.248.128 6379 #从节点所依赖的主节点ip+端口,注意:主库不需要这个配置,只配置从库!!!

2.2 启动redis服务

注意:确保四台redis进程及端口存在

#启动redis服务
redis-server /usr/local/redis/conf/redis.conf & 
#连接客户端
redis-cli -p 6379 -h 127.0.0.1
#验证密码
127.0.0.1:6379> auth admin123  
OK

redis进程

2.3 查看主从状态

info replication

主从同步
详解:

role:master/slave # 当前角色是主/从节点
master_host:192.168.248.128 #主机信息
slave0:ip=从节点0ip和端口
slave1:ip=从节点1ip和端口
slave2:ip=从节点2ip和端口

第三步、主从测试

3.1 主节点

192.168.248.128:6379> set key 123456 
OK

3.2 从节点

192.168.248.129:6379> keys *
1) "key"
192.168.248.130:6379> get key
"123456"
192.168.248.131:6379> get key
"123456"

至此redis互为主从同步已经搭建完成

主从同步说明

1、主机可以写,从机不能写,只能读。主机中的所有数据都会保存到从机中去。

2、主机断开连接,从机依旧连接到主机的,但是没有写操作,这个时候,主机如果回来了,从机依旧可以直接获取到主机写的信息!

3、如果是使用命令行,来配置的主从,这个时候如果重启了,就会变回主机!只要变为从机,立马就会从主机中获取值!

思考
此时redis主从同步只是起到了数据灾备效果,当主机挂掉,从节点只能读取数据,不能写数据。这就导致当有新数据需要写入redis存储时,redis没有主机可写导致服务不可用,如何让redis实现真正高可用呢?这就引申出redis的哨兵模式


二、哨兵模式

什么是哨兵模式

Redis Sentinel是Redis 的高可用性解决方案,由一个或多个Sentinel(哨兵)实例组成。它可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,它的主要功能如下:

监控(Monitoring):Sentinel会不断地检查你的主服务器和从服务器是否运作正常。

通知(Notification):当被监控的某个 Redis 服务器出现问题时, Sentinel可以通过API向管理员或者其他应用程序发送通知。

故障迁移:当主服务器不能正常工作时,Sentinel会自动进行故障迁移,也就是主从切换

统一的配置:管理连接者询问sentinel取得主从的地址。

哨兵模式的原理

Sentinel 使用的算法核心是 Raft算法,主要用途就是用于分布式系统,系统容错,以及Leader选举,每个Sentinel都需要定期的执行以下任务:

每个 Sentinel会自动发现其他 Sentinel 和从服务器,它以每秒钟一次的频率向它所知的主服务器、从服务器以及其他Sentinel实例发送一个 PING 命令

如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds选项所指定的值, 那么这个实例会被Sentinel标记为主观下线。 有效回复可以是: +PONG 、 -LOADING 或者 -MASTERDOWN

如果一个主服务器被标记为主观下线, 那么正在监视这个主服务器的所有Sentinel要以每秒一次的频率确认主服务器的确进入了主观下线状态。

如果一个主服务器被标记为主观下线, 并且有足够数量的Sentinel(至少要达到配置文件指定的数量)在指定的时间范围内同意这一判断,
那么这个主服务器被标记为客观下线。

在一般情况下, 每个Sentinel会以每 10 秒一次的频率向它已知的所有主服务器和从服务器发送 INFO 命令。当一个主服务器Sentinel标记为客观下线时,Sentinel向下线主服务器的所有从服务器发送 INFO 命令的频率会从 10秒一次改为每秒一次。

当没有足够数量的Sentinel同意主服务器已经下线, 主服务器的客观下线状态就会被移除。 当主服务器重新向Sentinel的 PING命令返回有效回复时, 主服务器的主管下线状态就会被移除。
哨兵模式原理

第一步、搭建哨兵

1.1 哨兵配置

注意:在部署redis服务器上分别部署哨兵,每台服务器一个哨兵,配置方式相同,如下:

#创建工作路径
mkdir -p /usr/local/redis/sentinel

#进入安装包存放路径
cd /usr/local/redis/conf

#创建哨兵配置文件
vim sentinel.conf

sentinel.conf内容:

#端口默认为26379
port 26379
#关闭保护模式,可以外部访问。
protected-mode no
#设置为后台启动。
daemonize yes
#指定服务器IP地址和端口,并且指定当有3台哨兵认为主机挂了,则对主机进行容灾切换。  注意:三台哨兵这里的ip配置均为主节点ip和端口
sentinel monitor mymaster 192.168.248.128 6379 3
#当在Redis实例中开启了requirepass,这里就需要提供密码。
sentinel auth-pass mymaster admin123
#这里设置了主机多少秒无响应,则认为挂了。
sentinel down-after-milliseconds mymaster 3000
#主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的snetinel parallel-syncs mymaster 1
#故障转移的超时时间,这里设置为三分钟。
sentinel failover-timeout mymaster 180000
#进程文件
pidfile "/usr/local/redis/redis-sentinel_26379.pid"
# log日志保存位置
logfile "/usr/local/redis/log/redis-sentinel.log"
# 工作目录
dir "/usr/local/redis/sentinel"

1.2 启动哨兵

注意:分别在三台从服务器上启动各自的哨兵

#进入redis解压缩包内
cd /opt/redis-6.2.6/bin

#开启哨兵,指定哨兵配置文件
redis-sentinel /usr/local/redis/conf/sentinel.conf 

1.3 哨兵状态

#连接客户端,注意端口!!!
redis-cli -p 26379

#查看哨兵
info sentinel

哨兵已经监听到主节点IP端口和运行状态,并且有3个从节点,3个哨兵
哨兵状态

1.4 容灾切换

(1)模拟主机宕机,将主机 redis 服务关闭,来查看哨兵的作用
(2)关闭主节点之后,我们去查看哨兵日志
(3)在其它节点中查看哨兵主从切换是否成功
(4)重新连接挂掉的主节点(当主节点连接回来之后自动变成了从节点,并且成功连上了主机)
(5)再去主节点确认一下节点信息

哨兵模式的优缺点

优点

  1. 哨兵集群,基于主从复制模式,所有的主从配置优点,它全有
  2. 主从可以切换,故障可以转移,系统的可用性就会更好
  3. 哨兵模式就是主从模式的升级,手动到自动,更加健壮!

缺点

  1. Redis不好在线扩容,集群容量一旦到达上限,在线扩容就十分麻烦
  2. 哨兵模式的配置繁琐

三、下篇预告

敬请关注下篇保姆教程系列三、Redis高可用(Cluster集群模式)

总结

我是南国以南i记录点滴每天成长一点点,学习是永无止境的!转载请附原文链接!!!

参考链接、参考链接

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

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

相关文章

2008-2020年上市公司环境治理费用

2008-2020年上市公司环境治理费用 1、时间区间为:2008-2020年 2、指标包括:统计截止日期、证券代码、证券简称、本期金额、上期金额、上市公司排污费、环保费、绿化费、环保支出等有关环境治理费用 3、指标说明: EndDate [统计截止日期] …

ArcGIS基础实验操作100例--实验22NoData数据处理

本实验专栏来自于汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 基础编辑篇--实验22 NoData数据处理 目录 一、实验背景 二、实验数据 三、实验步骤 方法一&#xff1…

Linux网络协议之以太网协议(数据链路层)

Linux网络协议之以太网协议(数据链路层) 文章目录Linux网络协议之以太网协议(数据链路层)1.数据链路层解决的问题2.以太网协议2.1 认识以太网2.2 以太网帧格式2.3 认识MAC地址2.4 MAC地址与IP地址的区别3.ARP协议3.1 ARP协议的作用3.2 ARP数据报格式3.3 ARP协议工作流程3.4 ARP…

数据结构——基本术语

数据 数据能输入且被被计算机处理的符号集合。数据包括数值型数据和非数值型数据。非数值类型包括图,文字等 数据项和数据元素 数据元素时数据的基本单位,在计算机中通常被当作一个整体处理 也简称为元素,或者记录 数据元素又可以被若干个…

LaTeX环境的安装和配置 (vscode版)

目录下载Latex镜像文件安装镜像检验是否安装成功第一个Latex文件在vscode中使用latex支持中文编译引用下载Latex镜像文件 访问清华镜像网站,进行latex2022的下载 网站地址如下:latex_清华镜像 选择后缀名为.iso的文件进行下载即可 安装镜像 下载完成之…

CloudCanal对Online DDL 工具 GH-OST 和 PT-OSC 的支持

简介 CloudCanal 实现了对 Online DDL 工具如 GH-OST 和 PT-OSC 的支持,保证了对端实时同步源端的 Online DDL 操作。 本文以 MySQL -> MySQL 同步链路使用 GH-OST 为例,介绍 CloudCanal 是如何支持实时同步 GH-OST 产生的 DDL 的。 Online DDL 技…

CentOS7版本中mysql卸载和安装步骤问题汇总记录--2020-12-29

目录一、如何卸载1.1 查询系统是否安装了MySQL1.2 关闭MySQL服务1.3 删除MySQL安装的服务1.4 删除MySQL相关的文件夹二、如何安装2.1 下载MySQL5.7安装包2.2 安装MySQL2.3 配置MySQL2.3.1 初始化数据库2.3.2 配置开机自启2.3.3 启动MySQL服务2.3.4 登录MySQL进行初始化参考文献…

【开源项目】消息队列XXL-MQ源码解析

消息队列XXL-MQ源码解析 项目介绍 XXL-MQ是一款轻量级分布式消息队列,拥有 “水平扩展、高可用、海量数据堆积、单机TPS过10万、毫秒级投递” 等特性, 支持 “并发消息、串行消息、广播消息、延迟消息、事务消费、失败重试、超时控制” 等消息特性。现已开放源代码…

专栏目录总览

文章目录摘要1. Backbone2. Neck3. Bottleneck4. Head5.GAP或者avgpool:6.Embedding摘要 梳理了一些长见的名词,方便大家够好的理解论文和Ai方向的文章。 1. Backbone 骨干网络或者说是主干网络,指的是提取特征的网络,其作用就…

Bean 作用域,Bean生命周期,Bean执行原理

Spring 是⽤来读取和存储 Bean,因此在 Spring 中 Bean 是最核⼼的操作资源,所以接下来我们深⼊学习⼀下 Bean 对象. 1.通过⼀个案例来看 Bean 作⽤域的问题 假设现在有⼀个公共的 Bean,提供给 A ⽤户和 B ⽤户使⽤,然⽽在使⽤的…

线程池的原理和使用

ThreadPoolExecutor 为什么用线程池 线程池做的主要工作就是控制运行的线程的数量,处理过程中,将任务放入到队列中,然后线程创建后,启动这些任务,如果线程数量超过了最大数量的线程排队等候,等其它线程执…

7.移动端笔记-less基础

1.css的弊端 CSS需要书写大量的看似没有逻辑的代码,冗余度高不方便维护,不利于复用没有很好的计算能力 2.Less介绍 简单说:Less是CSS预处理语言,扩展了CSS的动态性 CSS的扩展语言,也成为CSS的预处理器。在CSS基础上…

论文精读:Centernet:Objects as Points

论文地址:https://arxiv.org/pdf/1904.07850.pdf 代码地址:https://github. com/xingyizhou/CenterNet. Abstract 基于anchor的目标检测算法通常会列举大量可能存在对象位置的列表,这是浪费的、低效的。作者采用了一种不同的方法。将一个对象建模为单个点——其边…

魔术小游戏

魔术游戏一、问题描述二、基本流程三、具体步骤1.在集合中随机生成起始牌2.菜单栏3.找到包含[选中牌]的一组牌在大集合中的索引4.洗牌5.发牌四、完整代码五、效果展示一、问题描述 这是一个魔术游戏,将15张牌分为三组,每组5张,让玩家从中任选…

填鸭表单|2022年度总结功能发布

自从我们在2020年发布了开源版本以来,我们结识了许多社区伙伴。在和这些社区伙伴的接触中,我们深刻地感受到了“做产品的感觉,令人振奋且充满激情”。 我们认为,专注于做一件事情,持续深耕,时间自然会给出…

C#语言实例源码系列-实现对文件进行加密保护

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 👉关于作者 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中…

jmeter压测使用实践

环境搭建篇见https://blog.csdn.net/weixin_42498050/article/details/12847945 参考Jmter压测使用实践 jmeter压测实战总结 搭建 Apache Jmeter 分布式压测与监控 Jmeter常用断言 1. 添加线程组 测试计划 (右键->添加->Threads(Users&#x…

做了这么久的自动化测试现在才知道API 接口测试还能...

接口测试作为最常用的集成测试方法的一部分,通过直接调用被测试的接口来确定系统在功能性、可靠性、安全性和性能方面是否能达到预期,有些情况是功能测试无法覆盖的,所以接口测试是非常必要的。首先需要对接口测试的基本信息做一些了解&#…

Linux如何安装BeyondCompare

博客主页:https://tomcat.blog.csdn.net 博主昵称:农民工老王 主要领域:Java、Linux、K8S 期待大家的关注💖点赞👍收藏⭐留言💬 目录安装yumtar.gz使用示例BeyondCompare是一款广受好评的文本对比工具。本…

文件上传漏洞渗透与攻防(一)

目录 前言 文件上传漏洞原理 Webshell介绍 一句话木马: 小马: 大马: Webshell集合: 网站控制工具 文件上传漏洞危害 文件上传漏洞靶场练习 Pass-01 Pass-02 Pass-03 Pass-04 Pass-06 Pass-07 Pass-08 Pass-09 Pass-10 Pas…