redis的集群,主从复制,哨兵

redis的高可用

在Redis中,实现高可用的技术主要包括持久化、主从复制、哨兵和集群,下面分别说明它们的作用,以及解决了什么样的问题。

  • 持久化: 持久化是最简单的高可用方法(有时甚至不被归为高可用的手段),主要作用是数据备份,即将数据存储在硬盘,保证数据不会因进程退出而丢失。
  • 主从复制: 主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份(和同步),以及对于读操作的负载均衡和简单的故障恢复。
  • 缺陷:故障恢复无法自动化;写操作无法负载均衡;存储能力受到单机的限制。
  • 哨兵: 在主从复制的基础上,哨兵实现了自动化的故障恢复。(主挂了,找一个从成为新的主,哨兵节点进行监控)
  • 缺陷:写操作无法负载均衡;存储能力受到单机的限制。
  • 集群: 通过集群,Redis解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现了较为完善的高可用方案。(6台起步,成双成对,3主3从)
     

redis的主从复制

主从复制是redis实现高可用的基础,哨兵模式和集群都是在主从复制的基础之上实现高可用。

主从复制实现数据的多机备份,以及读写分离(主服务器负责写,从服务器只能读)。

缺陷:故障无法自动恢复,需要人工干预,写操作的负载均衡。

主从复制的工作原理:

1.主节点(master) 从节点(slave组成)组成,数据复制是单向的,只能从主节点到从节点。

2.工作机制

redis 一主二从的工作原理

主从ip
master20.0.0.170
slave120.0.0.180
slave220.0.0.190

实验具体部署

修改master节点的配置文件 

systemctl stop firewalld
setenforce 0
修vim /etc/redis/6379.conf bind 0.0.0.0                      #70行,修改监听地址为0.0.0.0(生产环境中,尤其是多网卡最好填写物理网卡的IP)daemonize yes                     #137行,开启守护进程,后台启动 logfile /var/log/redis_6379.log   #172行,指定日志文件存放目录dir /var/lib/redis/6379           #264行,指定工作目录appendonly yes                    #700行,开启AOF持久化功能
​
/etc/init.d/redis_6379 restart     #重启redis服务

line70 ---所有网段都能通信

line137----开启进程守护

line264----指定工作目录

line700-----开启aof持久化

修改slave节点配置文件

#修改slave1的配置文件
vim /etc/redis/6379.conf bind 0.0.0.0                        #70行,修改监听地址为0.0.0.0(生产环境中需要填写物理网卡的IP)daemonize yes                       #137行,开启守护进程,后台启动logfile /var/log/redis_6379.log     #172行,指定日志文件目录dir /var/lib/redis/6379             #264行,指定工作目录replicaof 192.168.73.105 6379       #288行,指定要同步的Master节点的IP和端口appendonly yes                      #700行,修改为yes,开启AOF持久化功能
​
#将配置文件传给slave2
scp /etc/redis/6379.conf 20.0.0.190:/etc/redis/
​
/etc/init.d/redis_6379 restart  #重启redis
netstat -natp | grep redis      #查看主从服务器是否已建立连接
line288---指定同步的master的IP和端口

line700

分别重启服务后进日志查看

查看策略

redis-cli info replication

读写测试

主服务器创建并查看

从服务器可以查,但是从服务器有只读限制,所以无法写入

哨兵模式

主从切换技术的方法是:当服务器宕机后,需要手动一台从机切换为主机,这需要人工干预,不仅费时费力而且还会造成一段时间内服务不可用。为了解决主从复制的缺点,就有了哨兵机制。

主从复制即基础之上,实现主节点故障的自动切换  

哨兵的核心功能:在主从复制的基础上,哨兵引入了主节点的自动故障转移。

哨兵模式原理

哨兵:分布式系统,部署在每一个redis节点,用于在主从结构之间,对每台redis的服务进行监控。

主节点出现故障时,从节点通过投票的方式选择一个新的master。

哨兵模式需要至少三个节点

实验部署

主从IP哨兵点
master20.0.0.170Sentinel 1
slave120.0.0.180Sentinel 2
slave220.0.0.190Sentinel 3

修改哨兵节点的配置文件

vim /opt/redis-5.0.7/sentinel.conf
......
protected-mode no                #17行,取消注释,关闭保护模式
port 26379                       #21行,Redis哨兵默认的监听端口
daemonize yes                    #26行,指定sentinel为后台启动
logfile "/var/log/sentinel.log"  #36行,指定日志文件存放路径
dir "/var/lib/redis/6379"        #65行,指定数据库存放路径
sentinel monitor mymaster 192.168.73.105 6379 2  #84行,修改
#指定该哨兵节点监控192.168.73.105:6379这个主节点,该主节点的名称是mymaster。
#最后的2的含义与主节点的故障判定有关:至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移
​
sentinel down-after-milliseconds mymaster 3000  #113行,判定服务器down掉的时间周期,默认30000毫秒(30秒)
sentinel failover-timeout mymaster 180000  #146行,同一个sentinel对同一个master两次failover之间的间隔时间(180秒)
​
#传给两外2个哨兵节点
scp /opt/redis-5.0.7/sentinel.conf  20.0.0.180:/opt/redis-5.0.7/
scp /opt/redis-5.0.7/sentinel.conf  20.0.0.190:/opt/redis-5.0.7/

line17  

line 21
哨兵模式的默认端口--26379

line 26
哨兵模式是否后台运行------>yes

line 36
日志位置

line 65
工作目录,和redis放一起

line 84
指定初始的主服务器, ip指向初始的主服务器

**2:哨兵模式中至少需要两台服务器,认为主已经下线才会进行主从切换

先启动主,再启动从节点
redis-sentinel sentinel.conf &
//在redis源码包下面启动

redis-cli -p 26379 info sentinel
查看哨兵模式

tail -f /var/log/sentinel.log

故障模拟

ps -elf | grep redis
kill -9 15347

杀死进程和关闭服务都可以(关闭服务要等一分钟左右),然后两个从开启日志等待查看

由此看出,20.0.0.190变成了新主

下面进行读写测试

由此看来

旧主变成从后,会在配置文件自动加入这行配置文件,让旧主无法写入

旧主的配置文件也被自动修改

实验结束

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

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

相关文章

2019年9月26日: Go生态洞察:发布Go模块

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

mac解压gz文件

我发现一个问题,比如我从GSE144136里下载的文件 这个结果是这样的,直接双击是没有用的 因此需要使用命令行 gzip -d GSE144136_GeneNames.csv.gz

猜数字游戏

需求目标 这个游戏窗口要求玩家猜一个1到100之间的数字。玩家可以在文本框中输入自己的猜测,并点击提交按钮进行验证。游戏会给出相应的提示,直到玩家猜中正确的数字为止。 效果 源码 /*** author lwh* date 2023/11/28* description 猜数字游戏**/ i…

C语言——输入 10 个数,分别统计其中正数、负数、零的个数

#include <stdio.h> int main() {int numbers[10]; // 存储输入的10个数int positive_count 0; // 正数计数器int negative_count 0; // 负数计数器int zero_count 0; // 零计数器// 输入10个数printf("请输入10个数&#xff1a;\n");for (int i 0; i …

AMP State Evolution的计算:以伯努利-高斯先验为例

AMP State Evolution (SE)的计算 t 1 t1 t1时&#xff0c; E ( t ) E [ X 2 ] \mathcal E^{(t)} \mathbb E [X^2] E(t)E[X2]&#xff0c;SE的迭代式为 τ r ( t ) σ 2 1 δ E ( t ) E ( t 1 ) E ∣ η ( t ) ( X Z ) − X ∣ 2 , Z ∼ N ( 0 , τ r ( t ) ) \begin{a…

历时三个月,我发布了一款领取外卖红包小程序

近几年&#xff0c;推广外卖红包爆火&#xff0c;各种推广外卖红包的公众号层出不穷。于是&#xff0c;我就在想外卖红包究竟是怎么一回事。就这样&#xff0c;我带着问题开始了关于外卖红包的研究。 在研究的过程中&#xff0c;我开始了解隐藏优惠券、cps等一系列相关的术语。…

9个AI视频后期处理神器——Runway 全功能超详细使用教程(3)

前面2期内容&#xff0c;主要给大家重点介绍了Runway视频生成技术的核心产品功能板块Gen1、Gen2、FI使用教程&#xff0c;还没有看过的小伙伴可以回看往期文章。除了视频生成AI技术外&#xff0c;Runway还具有图片、视频后期处理30多项单个功能&#xff0c;例如视频修复、视频主…

用Elasticsearch搜索匹配功能实现基于地理位置的查询

1.Redis,MongoDB,Elasticsearch实现地理位置查询比较 1.1 Redis: 优点&#xff1a;Redis提供了地理空间索引功能&#xff0c;可以通过Geo数据类型进行地理位置查询。这使得Redis在处理地理位置查询时非常高效。 缺点&#xff1a; Redis的地理空间索引功能相对简单&#xff0…

融云筑基,移动云加速构建高性能智能算力底座

自2022年11月以来&#xff0c;全球大模型数量迅速增加&#xff0c;以ChatGPT为代表的大模型已经成为世界数字科技领域新热点。大模型带来的算力需求迅速增长&#xff0c;未来智算场景将会有非常大的突破空间。 在“十四五”规划的指引下&#xff0c;各地政府积极投入智算中心建…

基于vue框架的美团类药品点单系统

基于VUE框架的美团类药品点单管理系统 摘要&#xff1a; 2019年12月以来&#xff0c;中国湖北省武汉市爆发新型冠状病毒引发的肺炎疫情&#xff0c;并通过人传人的感染方式快速向全国其他地区扩散。全国上下万众一心抗击病毒&#xff0c;湖北广东浙江等24省市启动重大卫生突发…

运动耳机哪个好?跑步耳机哪个好?蓝牙运动耳机十大名牌排行榜

​相信很多人都喜欢在运动的过程中佩戴着耳机一边锻炼一边听音乐享受过程。在选择运动耳机的时候一定要重点去关注以下几点&#xff0c;佩戴时要绝对稳固舒适、音质表现不差、防水防尘效果要好等&#xff0c;这样就不会容易损伤耳朵。很多朋友还不知道运动耳机该怎么选&#xf…

idea创建spring boot项目,java版本只能选择17和21

1.问题描述 java版本为"11.0.20"&#xff0c;idea2023创建spring boot项目时&#xff08;File->Project->Spring Initializr&#xff09;&#xff0c;java版本无法选择11&#xff0c;导致报错&#xff0c;如下图所示&#xff1a; 2.原因 spring2.X版本在2023…

无效的目标发行版: 21 和springboot爆错

目录 问题描述 原因分析&#xff1a; 问题描述 springboot爆红 调整一下这个&#xff1a;把这里的version调低一点应该就可以了 无效的目标发行版: 21 调整一下这个把这里的Java version调整一下&#xff0c;我是调整到1.8&#xff08;其他没有试过&#xff09; 原因分析&a…

GPT还远远不是真正的智能

GPT是一个基于深度学习的自然语言处理模型&#xff0c;它可以生成逼真的文本。虽然GPT在生成文本方面取得了显著的进展&#xff0c;但它并不具备真正的智能。GPT是通过训练模型来学习语言模式&#xff0c;它不具备理解、推理、判断和主动学习的能力。它只是根据已有的语料库生成…

create-vue 生成式脚手架源码解析

文章目录 命令交互输出渐变标题解析命令行参数命令行交互国际化提示prompts 库实现命令行交互 生成模版创建项目输出文件夹生成 packge.json查找预设的模版文件根据路径生成模块文件render 生成模版填充 ejs 模版数据根据生成项目是 ts 还是 js 后置处理根据需要的模块生成所有…

【算法】七大经典排序(插入,选择,冒泡,希尔,堆,快速,归并)(含可视化算法动图,清晰易懂,零基础入门)

​ 目录 一、排序的概念及其运用1.1 排序的概念1.2 排序的应用1.3 常见的排序算法 二、常见排序算法的实现2.1 插入排序2.1.1 直接插入排序2.1.2 希尔排序2.1.3 直接插入排序和希尔排序的性能对比 2.2 选择排序2.2.1 直接选择排序2.2.2 堆排序2.2.3 直接选择排序和堆排序的性能…

Mysql锁实战详细分析

1.mysql回表查询 在这里提起主要是用于说明mysql数据和索引的结构&#xff0c;有助于理解后续加锁过程中的一些问题。 mysql索引结构和表数据结构是相互独立的&#xff0c;根据索引查询&#xff0c;只能找到索引列和主键聚簇索引。如果select语句中不包含索引列&#xff0c;m…

陪诊系统|沈阳陪诊系统定制|陪诊软件保障患者安全与便利

陪诊系统是一种以专业医疗服务为核心的综合性陪同体系。它涵盖了医院前线咨询、专业陪诊、医后关怀等多个环节&#xff0c;提供全方位的医疗咨询服务和专业的医疗陪同服务。通过陪诊系统&#xff0c;患者可以获得更加便捷、高效、安全的医疗服务体验。陪诊系统的出现&#xff0…

多类场景、遍布各地,融云 IM 支撑多款应用全球增长

&#xff08;全网都在找的《社交泛娱乐出海作战地图》&#xff0c;点击获取&#x1f446;&#xff09; 无论是面向企业场景的工作流协同还是消费场景的网络效应形成&#xff0c;商务社交还是陌生人社交&#xff0c;IM 都是必备组件。IM 遍布互联网各角落&#xff0c;出现在所有…

【c++|SDL】开始使用之---demo

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 SDL 记录 1. hello word #include<SDL2/SDL.h>SDL_Window* g_pWindow 0; SDL_Renderer* g_pRenderer 0;int main(int argc, char* args[]) {//…