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.mzph.cn/news/163068.shtml

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

相关文章

VUE+element可以为空不为空时只能为(正整数和0)的验证

rule{ 变量: [ { required: true, validator: validateparamPosition, trigger: blur }] } ​​​​​​​ ​​​​​​​ ​​​​​​​ var validateparamPosition (rule, value, callback) > { if (!value) { //先判断空可以过 ca…

【HarmonyOS】JSON格式化解析Map数据失败

【关键字】 数据转换、JSON.stringify、Object.fromEntries 【问题背景】 将数组转换成Map对象&#xff0c;然后调用let str JSON.stringify(newMap)&#xff0c;将Map转换成字符串&#xff0c;转换出来的结果是{} 问题代码&#xff1a; let data [{ key: where, value: …

python数据结构与算法-13_高级排序算法-快速排序

快速排序 快速排序名字可不是盖的&#xff0c;很多程序语言标准库实现的内置排序都有它的身影&#xff0c;我们就直奔主题吧。 和归并排序一样&#xff0c;快排也是一种分而治之(divide and conquer)的策略。归并排序把数组递归成只有单个元素的数组&#xff0c;之后再不断两两…

docker安装mysql挂着目录和mysql备份和恢复

第一&#xff0c;镜像拉取&#xff0c;运行镜像并挂载目录&#xff0c;尝试挂bin下&#xff0c;启动不了&#xff0c;不知为啥 docker run --privilegedtrue -itd --namevmysql -p 3306:3306 -v /home/vmysql:/home/vmysql -e MYSQL_ROOT_PASSWORD123456 mysql&#xff08;图…

Nancy (二)

最近做CS项目&#xff0c;一直在使用TCPSocket 做数据传输&#xff0c;不太爽&#xff0c;砸门可是多年BS的开发&#xff0c;这样开发接口出去比较费劲&#xff0c;但是又不想用asp.net mvc webapi,要按照IIS&#xff0c;有些工控机的系统环境也是很尴尬的&#xff0c;那么也可…

用好说 AI 玩转奥特曼表情包,居然还能和他们聊个天

你喜欢奥特曼吗&#xff1f;你相信光吗&#xff1f; 如果你已经追完了特摄剧、刷完了大电影、用滥了那几个表情包&#xff0c;那不如来试试用 AI 给自己整点活儿新 “物料”。 不管是和奥特曼 “面对面” 聊天还是 “无中生有” 表情包&#xff0c;AI 都能做&#xff01; (※…

spring boot 热部署

相信小伙伴们在日常的开发中&#xff0c;调试代码时&#xff0c;免不了经常修改代码&#xff0c;这个时候&#xff0c;为了验证效果&#xff0c;必须要重启 Spring Boot 应用。 频繁地重启应用&#xff0c;导致开发效率降低&#xff0c;加班随之而来。有没有什么办法&#xff0…

宏电股份受邀参加中国联通战新共创启航大会,共筑产业生态,链通数智未来

11月21日&#xff0c;由中国联通举办的主题为“共筑产业生态&#xff0c;链通数智未来”的网络安全现代产业链共链行动计划暨战新共创启航大会“5G工业互联网”专题供需对接会在北京顺利召开&#xff0c;宏电股份董事长左绍舟应邀出席活动。 会议现场&#xff0c;中国联通雁飞…

Rust开发——数据对象的内存布局

枚举与Sized 数据 一般数据类型的布局是其大小&#xff08;size&#xff09;、对齐方式&#xff08;align&#xff09;及其字段的相对偏移量。 1. 枚举&#xff08;Enum&#xff09;的布局&#xff1a; 枚举类型在内存中的布局通常是由编译器来确定的。不同的编译器可能有不…

centos7 系统keepalived 定时执行脚本

安装keepalived yum install -y keepalived 修改配置文件 配置文件路径 /etc/keepalived 配置文件内容 global_defs {router_id localhost.localdomain # 访问到主机&#xff0c;本机的hostname&#xff0c;需要修改 }vrrp_script chk_http_port {script "/etc/kee…

INFLOW:用于检测隐藏服务器的反向网络流水印

文章信息 论文题目&#xff1a;INFLOW: Inverse Network Flow Watermarking for Detecting Hidden Servers 期刊&#xff08;会议&#xff09;&#xff1a;IEEE INFOCOM 2018 - IEEE Conference on Computer Communications 级别&#xff1a;CCF A 文章链接&#xff1a;https:…

Docker 安装 Apache

目录 拉取官方 Apache 镜像 查看本地镜像 列出正在运行的容器 运行 Apache 容器 创建一个 HTML 文件&#xff1a;index.html 访问 Apache 拉取官方 Apache 镜像 查找 Docker Hub 上的 httpd 镜像。 可以通过 Tags 查看其他版本的 httpd&#xff0c;默认是最新版本 httpd…

SpringMVC 基础知识

学习目标 掌握基于 SpringMVC 获取请求参数与响应 json 数据操作熟练应用基于 REST 风格的请求路径设置与参数传递能够根据实际业务建立前后端开发通信协议并进行实现基于 SSM 整合技术开发任意业务模块功能 1 SpringMVC 简介 1.1 概述 1.1.1 web程序开发流程 【执行过程】…

从入门到精通!Python数据分析畅销书《利用Python进行数据分析》第三版中文版助你成为数据分析师!

Python数据分析畅销书《利用Python进行数据分析》第三版中文版助你成为数据分析师&#xff01; 个人简介什么是数据分析如何自学数据分析书籍推荐作译者简介作者简介译者简介 主要变动导读视频&#xff1a;购书链接&#xff1a;参与方式往期赠书回顾 个人简介 &#x1f3d8;️&…

【好玩的开源项目】Linux系统之部署proxx扫清黑洞小游戏

【好玩的开源项目】Linux系统之部署proxx扫清黑洞小游戏 一、proxx小游戏介绍1.1 proxx小游戏简介1.2 开源地址 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本 四、部署Node.js环境4.1 下载Node.js安装包4.…

动态规划求二维网格中从左上角到右下角的最短路径( 每次只能向下、向右、向右下走 ) java 实现

dp[i][j] 表示在以点(0,0)作为左上角&#xff0c;点(i,i) 作为右下角的二维网格中 左上角到右下角的最短路径&#xff0c; 动态转移方程为&#xff1a;dp[i][j] min{ dp[i][j-1],dp[i-1][j],dp[i-1][j-1] }.distance weight[i][j] ImageUtils.java&#xff1a; import java.a…

三十分钟学会Shell(上)

Shell ​ Shell 本身并不是内核的一部分&#xff0c;它只是站在内核的基础上编写的一个应用程序&#xff0c;是用户和Linux文件系统之间的桥梁。Shell 有自己的特殊性&#xff0c;就是开机立马启动&#xff0c;并呈现在用户面前&#xff1b;用户通过 Shell 来使用 Linux&#x…

Windows日常故障自我排查:用工具eventvwr.msc(事件查看器)分析问题故障

windows故障排查方法一&#xff1a; 工具用法 系统故障问题时&#xff0c;找不到解决方法 首先&#xff0c; 在搜索栏输入&#xff1a; 事件查看器(eventvwr.msc) 打开程序 根据程序找到程序运行的LOG 根据程序Operational筛选出错误日志&#xff1a; 日志中找错误原因&…

假期宅家不无聊,用极米投影仪H6 Pro 4K解锁宅家多样玩法

不知道大家平时的假期是怎么度过的&#xff0c;是选择出门游玩?还是要在家好好安排自己的学习充电计划?平日工作这么累&#xff0c;不如趁假期好好休息一下&#xff0c;把以前落下的番剧补回来。不过手机的屏幕太小&#xff0c;电脑又不能躺在床上看&#xff0c;只有够大尺寸…

Lora学习资料汇总

目录 LoRa联盟 Semtech lora网关供应商: LoRaMAC API文档 论坛 开发板 主流技术对比分析 LoRa网络距离模拟测试方法 LoRa应用 Lora LoraWAN教程 LoRa联盟 LoRa联盟&#xff1a;LoRaWAN规范的制定组织 https://www.lora-alliance.org/ LoRa技术白皮书&#xff1a;htt…