redis---主从复制及哨兵模式(高可用)

主从复制

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

主从负责的工作原理

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

主从复制实现数据的多机备份,以及读写分离(主服务器负责写,从服务器只负责读)
缺陷:故障无法自动恢复,需要人工干预,写操作的负载均衡

工作流程图

配置主从复制

主从架构服务器声明:
主:192.168.10.80
从:192.168.10.150
从:192.168.10.151

                                    主:192.168.10.80
*****************************************************************************************
systemctl stop firewalld
setenforce 0
#关闭三台机器的防火墙和安全机制主节点:
vim /etc/redis/6379.conf
70行
修改网段 0.0.0.0
bind 0.0.0.0
137行
daemonize yes
700行
开启aof模式
appendonly yes/etc/init.d/redis_6379 restart*****************************************************************************************
                                    从:192.168.10.150
*****************************************************************************************
从节点1:
vim /etc/redis/6379.conf
70行
修改网段 0.0.0.0
bind 0.0.0.0288行
replicaof <masterip> <masterport>
replicaof 20.0.0.26 6379
#指向主的ip和端口700行
开启aof模式
appendonly yes/etc/init.d/redis_6379 restart
#开启了指向后从节点将变为只读模式*****************************************************************************************
                                    从:192.168.10.151
*****************************************************************************************从节点1:
vim /etc/redis/6379.conf
70行
修改网段 0.0.0.0
bind 0.0.0.0288行
replicaof <masterip> <masterport>
replicaof 20.0.0.26 6379
#指向主的ip和端口700行
开启aof模式
appendonly yes/etc/init.d/redis_6379 restart
#开启了指向后从节点将变为只读模式*****************************************************************************************

哨兵模式:

基于主从模式实现主节点自动切换。

哨兵模式的原理:

哨兵:是一个分布式系统,用于在主从结构之间,对每台redisd的服务进行监控。
主节点出现故障时,从节点通过投票的方式选择一个新的master
哨兵模式至少需要三个节点。

哨兵模式的结构

哨兵节点:监控,不能存储数据
数据节点: 主节点和从节点,都是数据节点。
哨兵监控的是节点,每个哨兵节点每间隔一秒,通过ping命令的方式,检测主从之间的心跳线。
主节点在一定时间内没有回复或回复了错误的消息,这个时候,哨兵就会主观的认为任务节点已经下线,超过半数的哨兵节点任务主节点下线了,这个时候才会认为主节点是客观下线。
哨兵节点通过raft算法(选举算法),每个节点共同投票选举出一个新的master,然后新的master实现主节点转移和故障恢复通知。


主节点的选举过程:

1、已经下线的从节点,不会被选择
2、选择配置文件中,从节点优先级先最高的 replica-priority 100
3、选择一个负责数据最完整的从节点

哨兵监控的是redis服务,图示如下

哨兵配置实验

                                    主:192.168.10.80vim /opt/sentinel.conf
*****************************************************************************************取消注释
17行
protected-mode no21行
port 2637926行
daemonize yes36行
logfile "/var/log/sentinel.log"65行
dir "/var/lib/redis/6379"84行
sentinel monitor mymaster 192.168.10.80 6379 2*****************************************************************************************
                                    从:192.168.10.150vim /opt/sentinel.conf
*****************************************************************************************取消注释
17行
protected-mode no21行
port 2637926行
daemonize yes36行
logfile "/var/log/sentinel.log"65行
dir "/var/lib/redis/6379"84行
sentinel monitor mymaster 192.168.10.80 6379 2*****************************************************************************************
                                    从:192.168.10.151vim /opt/sentinel.conf
*****************************************************************************************取消注释
17行
protected-mode no21行
port 2637926行
daemonize yes36行
logfile "/var/log/sentinel.log"65行
dir "/var/lib/redis/6379"84行
sentinel monitor mymaster 192.168.10.80 6379 2*****************************************************************************************

配置完成后启动哨兵

先启主服务器,再启动从服务器
启动哨兵的命令:redis-sentinel sentinel.conf &
查看哨兵的信息:redis-cli -p 26379 info Sentinel

故障模拟

停止后主的redis服务
/etc/init.d/redis_6379 stop哨兵会在从的里面选出一个从的服务器,将其升为主服务器
新主会继承原主的读写权限
当原主重启后,
旧主将成为从,并将失去写的权限

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

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

相关文章

服务器模型、网络超时检测

服务器模型 循环服务器 每次只能处理一个客户端&#xff0c;当前客户端退出后&#xff0c;才能处理下一个客户端。 &#xff08;循环处理客户端&#xff0c;因此不能做耗时动作。&#xff09; 练习: 实现 TCP 全双工 利用进程实现 利用线程实现 并发服务器 同一时刻可以响…

Airtest结合Poco对控件实施精准截图,学起来!

1.前言 最近在Q群内发现有个小伙伴提出了一个很有趣的脚本需求&#xff0c;想要实现“通过选择器获取到了控件&#xff0c;然后截图这个控件范围”&#xff0c;根据我们的Airtest的局部截图接口以及poco控件的属性查询接口是可以很快实现的~ 2.接口查找 首先我们需要知道我们…

电脑序列号查询

电脑序列号是厂商给每台电脑分配的一个产品识别码&#xff0c;也称为S/N&#xff08;Serial Number&#xff09;。主要用来查询电脑的出厂日期、保修状态、生产产地、产品配置等信息。电脑序列号查询有以下几种方法&#xff1a; 1、电脑机箱外壳&#xff1b; 2、系统信息/命令…

【QML】StackView上层页面半透明,显示下层页面

1、 应用场景 有时候需要模拟弹窗效果&#xff0c;需要下层的页面半透明显示。仅仅将上层页面背景设置为透明并不能实现这个效果&#xff0c;下层的页面依然被覆盖。Qt帮助文档中有如下代码&#xff0c;经测试有效果。 2、 代码 重点标记&#xff1a; 下层页面需要设置这个…

C#winfrom端屏幕截图功能的简单实现(修改了屏幕的缩放比例后,截图功能异常,慎用!!!)

文章目录 1 主要文件1.1 FrmScreenShot.cs1.2 FrmScreenShot.Designer.cs1.1 Utility.cs 在发现有一款播放软件禁止截图功能后&#xff0c;使用了其他的截图工具发现都会被播放软件禁用掉截图功能&#xff0c;想了下试着自己做一个截图工具&#xff0c;也可以方便将截图工具添加…

【VRTK】【VR开发】【Unity】8-可交互对象

【概述】 之前我们只是用了一个简单方块作为可交互对象。其实可交互对象可以有许多细节设置,包括具体抓握物体的哪个点,指定抓握的方向,指定Secondary Action允许两手互换抓握,双手抓握,用两手改变物体大小等。 【拾取物体】 要让一个物体能够被拾取,必须设置它为可互…

诊断0x27服务解密文件DLL制作与使用

DLL文件在CANoe的使用方法 DLL文件在诊断里面可以用在0x27秘钥服务里面&#xff0c;对解密有帮助&#xff0c;在下图位置加载。 DLL文件制作 vector公司本来就给了我们一个demo&#xff0c;先拷贝一份下来&#xff0c;别把原来的文件给改坏了。我这个是CANoe12&#xff0c;de…

35的程序员被辞了可以自己接外包啊?为什么都那么悲观呢?

35的年纪&#xff0c;上有老下有小&#xff0c;即将步入中年危机&#xff0c;在这个节骨眼上被辞&#xff0c;能不悲观吗&#xff1f; 在这个年纪人们往往追求的是稳定的工作和生活&#xff0c;而进入一个自己不熟悉的行业并不是一个好的选择。 况且&#xff0c;你认为的外包…

PHP众筹系统源码+支持报名众筹+商品众筹+无偿众筹+市面上所有的众筹模式 附带完整的搭建教程

大家好啊&#xff0c;罗峰今天来给大家分好用的源码系统了。今天要给大家分享的是一款PHP众筹系统源码。众筹作为一种新型的融资方式&#xff0c;逐渐在市场上占据了重要的地位。从公益众筹到商品众筹&#xff0c;再到股权众筹&#xff0c;各种众筹模式层出不穷。然而&#xff…

SELinux refpolicy详解(1)

本文部分内容参考&#xff1a; SELinux - ArchWiki SELinux_百度百科 一、SELinux介绍 1. SELinux简介 SELinux&#xff08;Security-Enhanced Linux&#xff0c;安全增强型Linux&#xff09;是美国国家安全局&#xff08;NSA&#xff09;对于强制访问控制的实现&#xff0…

element-plus的el-dropdown去除鼠标悬浮或点击时的黑边框

设置为outline:unset;或者outline:none;即可 :deep(.el-tooltip__trigger:focus-visible) {outline: unset;}

flutter 输入框组件 高度问题

使用的组件名字为 TestField 组件 TestField 配置 占位文字 设置 decoration 属性 InputDecoration 中hintText去掉输入到 输入框的间距 InputDecoration 中contentPadding EdgeInsets.zero去掉边框中的间距 InputDecoration 中 使用 isDense:true设置输入框内文字的颜色 …