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.hqwc.cn/news/209744.html

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

相关文章

【Flask使用】全知识md文档,4大部分60页第3篇:Flask模板使用和案例

本文的主要内容:flask视图&路由、虚拟环境安装、路由各种定义、状态保持、cookie、session、模板基本使用、过滤器&自定义过滤器、模板代码复用:宏、继承/包含、模板中特有变量和函数、Flask-WTF 表单、CSRF、数据库操作、ORM、Flask-SQLAlchemy…

企业微信身份验证

本篇主要是在上一篇获取第三方凭证基础上,用户通过三方网站自定义授权登录后获取用户信息,以实现用户绑定登录功能。 构造第三方应用授权链接 如果第三方应用需要在打开的网页里面携带用户的身份信息, 第一步需要构造如下的链接来获取授权c…

单片机调试技巧--栈回溯

在启动文件中修改 IMPORT rt_hw_hard_fault_exceptionEXPORT HardFault_Handler HardFault_Handler PROC; get current contextTST lr, #0x04 ; if(!EXC_RETURN[2])ITE EQMRSEQ r0, msp ; [2]0 > Z1, get fault context from h…

9.华为OD技术面手撕代码实录:旋转矩阵

旋转矩阵 给你一幅由 N N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。 示例 1: 给定 matrix = [[1,2,3],[4,5,6],[7,8,9] ],原地旋转输入矩阵,使其变为: [[7,4,1],[8,5,2],[9,6,3] ]示例 2: 给定 matrix = [[ 5, 1, 9,11],[ 2, 4…

VSCode 使用

目录 文章目录 目录插件配置设置代码不显示 git 提示 "xxx months ago | 1 author"设置打开项目不自动选择 CMakeLists 插件 以下插件为 C 开发偏好设置。 C/CCMakeCMake ToolsGitLensRemote DevelopmentRemote Explorer 配置 设置代码不显示 git 提示 “xxx mon…

【项目管理】甘特图(1)——认识甘特图

哈喽,大家好,我是雷工! 今天学习下甘特图的绘制,以下为学习笔记。 一、什么是甘特图 甘特图是可以直观展示项目进展随时间走势和联系的条状图。是一种常见的项目管理工具。 项目的时间用横轴表示,项目的进度用纵轴表…

Dubbo框架

1:简介 Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架 Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题 这是Dubbo官网的介绍,下面是我对这dubbo的理解 首先介绍下什么是RPC: 常…

PHP 正则式 全能匹配URL(UBB)

PHP 正则式 全能匹配URL(UBB) 语言:PHP 注明:正则式 无语言限制(js、PHP、JSP、ASP、VB、.net、C#...)一切皆可。 简介:PHP UBB 正则式 全能匹配URL 自动加超级链接。网上找了很多都不匹配或…

Qt 符号表下载路径

Qt 符号表下载路径 以Qt6.4.2版本为例: 1、选择版本 2、选择编译工具链 3、选择要下载的模块符号表

网络安全等级保护收费标准?

不同省份价格会略有不同,二级等保一般不低于5万元;三级等保不低于9万元,个别省份也可能7万也能办理,根据企业实际情况和省市选定的代理机构确定。 等级保护二级? 第二级等保是指信息系统受到破坏后,会对公民、法人和其他组织的合…

脸爱云一脸通智慧管理平台未授权访问

声明 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 一、漏洞概述 脸爱云一脸通智慧管理平台存在严重漏洞,允许…

京东大数据(京东数据采集):2023年Q3线上投影仪品类销售数据分析报告

11月初,某知名投影仪企业发布了2023年三季度财报。数据显示,今年第三季度,公司营收依然不客观,连续第五个季度业绩持续下滑。 从鲸参谋数据也可以看出,今年Q3,京东平台上该品牌的销量环比下滑约35%&#x…