redis 主从复制薪火相传 哨兵sentinel配置以及底层原理

本文主要是介绍redis 主从复制薪火相传 哨兵sentinel配置以及底层原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

薪火相传

我们知道redis的主从复制还有一个常见的架构  ---薪火相传

使用这种结构可以有效减轻master节点的复制数据同步压力

注意这里的6380节点仍然是slave节点

可以理解为一个中间节点,仍然是不可以写只可以读取的

我们只需要使用

slaveof ip port 

这里可能访问节点的时候出现问题,这是在节点变化期间

多次尝试即可

当然我们还可以让其自立门户

slaveof no one

直接当老大

前言

复制的原理和流程

这里复制首先由slave来进行同步

1.首次连接是使用的全量复制

salve本身的数据也会被直接覆盖   主从复制的时候会触发rdb 将rdb发送给从库完成复制的初始化

2.后面就是保持持续通信

每隔10s发送一个心跳包

3.进入平稳,增量复制

后续slave增量同步master的信息

4.从机下线 断点续传

这时候是有一个offset

master会检查backlog的偏移量

会将对应复制的偏移量传送给从机,类似与断点续传

前面我们说到了redis的主从复制

我们知道这里主机可以读写

从机只能读取

如果主机宕机,从机则会无限时间的等待

这样当然是我们不想看到的

所以这里引入了哨兵集群

主要负责监控master节点是否宕机

负责选举出新的master节点

配置哨兵

由于博主的机器原因

这里是在6379节点开启了三个哨兵集群

因为机器内存不够,但是鼓励各位小伙伴使用六台虚拟机来完成任务

首先我们配置master分支的conf文件

这里我们需要和上一篇一样配置对应的访问master节点的密码

架构如下

我们需要配置三个sentinel的配置文件

bind 0.0.0.0
daemonize yes
protected-mode no
port 26380
logfile "/myredis/sentinel26380.log"
pidfile /var/run/redis-sentinel26380.pid
dir "/myredis"
sentinel monitor mymaster 192.168.111.169 6379 2
sentinel auth-pass mymaster 111111

对应配置即可

注意最后两行的含义

需要配置master的名称 ip 端口 法定票数

这里的法定票数就是多少个哨兵认为master挂了就真的挂了

这里有两个概念

主观下线:一个节点在默认超时时间内(30s)没有感受到master的存在

客观下线:超过法定票数的哨兵都这样认为master挂了

然后使用这样的方式可以成功启动哨兵集群

使用ps -ef来查看对应的哨兵服务是否成功启动

后面我们可以尝试手动断开原来的master节点

我们会发现redis会自动选举新的master节点

对应如何选举的咱们下面慢慢说 

注:原来的master节点即使回归之后,也只能当小弟了,不会出现对应的master冲突

两个小错误

可能刚刚断开连接还没完全恢复,是正常的异常警告

不影响后续的操作

注意这里重新选举之后新的sentinel文件也会进行对应的配置 

对应的redis配置文件也会进行对应的动态更新

对应的从节点会将对应的主节点进行对应的配置

也会进行对应的增量更新

那么选举节点的原理是什么样的呢?

选举兵王

首先我们使用有三个哨兵节点的

三个哨兵节点首先会使用raft算法进行选举一个哨兵之王(leader)

然后由哨兵节点去进行操作对应的redis节点

raft算法

本质上还是一个先到先得的原则

假设现在是abc三个节点

a向bc发生对应的申请

同理b也是发送申请

c也是同理

a先接受到谁的申请就把自己的票投送给谁

投票最多的则作为兵王

选举master

这里我们所有的master的对应的操作是由兵王来操作的

我们按照三个评判标准来进行评价

这三个评判标准的优先级和文章顺序一样

1.根据权限大小

在redis配置文件设置的权限大小

默认是100 可以手动配置

2.偏移量

我们知道每个节点的网络情况不同

slave节点可能复制的量不同

复制量大的优先

3.根据runid

runid根据字典序  小的优先

选举出来之后由leader哨兵来进行对应的先让选出来的slave进行一个

slaveof no one 

在对其他的slave节点进行对应的

slaveof ip port操作

让其他节点成为自己的小弟

注意这里的源master节点也被加在小弟列表中了

这篇关于redis 主从复制薪火相传 哨兵sentinel配置以及底层原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1012013

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。