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

news2024/9/23 5:24:35

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.coloradmin.cn/o/1244627.html

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

相关文章

京东大数据分析:2023年10月手机行业销量同比增长249%

今年双11,手机仍是竞争极为激烈的产品品类,各大手机厂商均在双11之前做足了准备,10月下旬,各电商平台双十一预售正式开启。而在双11大促节的参与下,10月份手机市场的整体销售也呈现增长趋势。 根据鲸参谋平台的数据显示…

mybatis 基本操作 删除 插入 更新 查询

根据主键删除数据 插入数据 -- 插入 insert into emp(username, name, gender, image, job, entrydate, dept_id, create_time, update_time) values (tom,塔姆,tom,1 , 1.png ,now(),1,now(),now() Options(keyProperty "id",useGeneratedKeys true) Insert(&quo…

[译]JavaScript中Base64编码字符串的细节

本文作者为 360 奇舞团前端开发工程师 本文为翻译 原文标题:The nuances of base64 encoding strings in JavaScript 原文作者:Matt Joseph 原文链接:https://web.dev/articles/base64-encoding Base64编码和解码是一种常见的将二进制内容转…

将对象转成URL参数

背景 有的时候前端跳转到其他平台的页面需要携带额外的参数,需要将对象转成用 & 连接的字符串拼接在路径后面。 实现方法

SquareCTF-2023 Web Writeups

官方wp:CTFtime.org / Square CTF 2023 tasks and writeups sandbox Description: I “made” “a” “python” “sandbox” “”“” nc 184.72.87.9 8008 先nc连上看看,只允许一个单词,空格之后的直接无效了。 flag就在当…

河北专升本(微机原理)

目录 第一章:计算机基础与数制转化 1. 进制运算基础 2. 常用编码形式 3. 计算机系统的组成及其工作原理 4. 微机系统主要技术指标 第二章:8086微处理器及其系统 1. 8086微处理器(CPU) 2. 8086的存储器及I/O组织 3. 8086系…

TikTok历史探秘:短视频中的时间之旅

在数字时代的浪潮中,TikTok崭露头角,成为社交媒体领域的一颗耀眼新星。这款短视频应用以其独特的创意、时尚和娱乐性质,吸引了全球数以亿计的用户。 然而,TikTok并非一夜之间的奇迹,它背后蕴藏着丰富而有趣的历史故事…

Course1-Week2-多输入变量的回归问题

Course1-Week2-多输入变量的回归问题 文章目录 Course1-Week2-多输入变量的回归问题1. 向量化和多元线性回归1.1 多维特征1.2 向量化1.3 用于多元线性回归的梯度下降法 2. 使梯度下降法更快收敛的技巧2.1 特征缩放2.2 判断梯度下降是否收敛2.3 如何设置学习率 3. 特征工程3.1 选…

管理时间的四象限法则

在管理工作和生活中,我们经常面临着各种各样的任务和事务。为了更好地处理这些任务,可以借鉴“重要紧急”、“重要不紧急”、“不重要紧急”以及“不重要不紧急”这四个象限的概念。 重要紧急:这类任务需要立刻行动,因为它们对目…

PPT思维导图怎么做?这2个思维导图工具墙裂推荐!

在日常学习和工作中,我们常常会面临需要处理大量信息的情况,这时候,一种叫做思维导图的工具可能会成为你的救星。 不同于传统的线性记录方式,思维导图以其独特的视觉表现力和结构化的信息处理方式,使得人们能够更加有…

实时截留抖音询价的用户:10个合规方法,让你的业务迅速增长!

先来看实操成果,↑↑需要的同学可看我名字↖↖↖↖↖,或评论888无偿分享 一、引言 随着抖音的普及度越来越高,越来越多的商家开始关注抖音询价用户。这些潜在客户对于企业的发展至关重要,如何实时截留这些用户成为商家关注的重点…

Python 基础【四】--数据类型-字符串【2023.11.23】

1 .定义 字符串是 Python 的一种数据类型,它可以通过单引号 ‘、双引号 "、三引号 ‘’’ 或 “”"来定义。 aabcd bacsdcd c"""accsfv""" print(a) print(b) print(c)2 .基本操作 访问单个字符 注意:从0开始…

detectron2安装

目录 macos安装windows安装提前准备下载detetron2文件激活你要安装的环境运行安装代码 windows下可能出现的问题 macos安装 建议直接照着官方文档,我当时记得是一步安装成功 网站 windows安装 略微麻烦,听我娓娓到来 提前准备 安装git 下载detetro…

C语言--三目运算符

一.介绍⭐ <表达式1>&#xff1f;<表达式2>&#xff1a;<表达式3> 它的含义是&#xff1a;如果表达式1的值为真&#xff08;非零&#xff09;&#xff0c;则整个表达式的值为表达式2的值&#xff1b;否则&#xff0c;整个表达式的值为表达式3的值。 三目运算…

网络异常检测

随着社交网络、视频流、点对点技术、云计算和 SaaS 的出现&#xff0c;可以肯定地说&#xff0c;现代企业的好坏取决于他们的网络&#xff0c;尤其是在它们提供的带宽和安全性方面。无论是银行保护其数据免遭盗窃&#xff0c;还是商业组织保护其网络免受安全威胁和攻击&#xf…

Javascript每天一道算法题(十四)——合并数组区间_中等

文章目录 1、问题2、示例3、解决方法&#xff08;0&#xff09;方法0——双指针&#xff08;错误思路&#xff09;&#xff08;1&#xff09;方法1——双指针&#xff08;正确&#xff09; 总结 1、问题 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 inte…

openGL之纹理 :第二课

#include "glew.h" #include "glfw3.h" #include "SOIL2.h"//如何解析输入的数据流 0&#xff0c;1,2 分三部分 GLchar * vertextSrc " #version 330 core \n \layout (location 0) in vec3 position; \layout (location 1) in vec3 col…

MySQL-进阶

存储引擎 MySQL体系结构 连接层&#xff1a; 最上层是一些客户端和连接服务&#xff0c;主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限。服务层&#xff1a; 第二层架构主要完成大多数的核心服务功能&…

新的centos7.9安装jenkins(二)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 接上一节文章。 这个版本默认git也安装好了&#xff0c;所以全局配置这个不需要了。 maven安装3.9.3版本…

C++基础(4)——类与对象(默认成员函数)

目录 1.拷贝构造函数&#xff1a; 1.1 为什么要引入拷贝构造&#xff1a; 1.2 拷贝构造函数的定义及特性&#xff1a; 1.3 什么类可以不用编写拷贝构造&#xff1a; 2. 赋值运算符重载&#xff1a; 2.1 为社么要引入运算符重载&#xff1a; 2.2运算符重载的定义以及特性…