向爬虫而生---Redis 探究篇4<Redis主从复制(1)>

前言:

当涉及到Redis的高可用性和数据冗余时,主从复制是一个非常重要的概念。

在现代应用程序的开发中,数据的可靠性和高可用性是至关重要的当涉及到数据冗余和故障恢复时,Redis主从复制成为一个必不可少的工具和技术。Redis主从复制是一种强大而灵活的架构设计,可以为分布式系统提供一系列优势和解决方案

理解Redis主从复制的重要性和优势,了解如何应用它来提高系统的可靠性和数据冗余。它对于构建现代化的高可用系统具有重要的作用!

正文:

基本原理

主从复制架构的工作原理

Redis主从复制采用了一种异步复制的方式,基于主节点(Master)将数据复制到一个或多个从节点(Slave)的思想

  • 主节点是数据的源头,负责处理客户端的写操作
  • 从节点则复制主节点上的数据,并可以处理客户端的读操作

主从复制的工作原理如下:当主节点接收到写操作时,它将该操作记录在自己的命令日志中,并通过网络将该命令发送给所有从节点。从节点接收到命令后,执行相同的操作,将数据同步到自己的数据集中。这样,主节点和从节点的数据保持一致。

主节点(Master)和从节点(Slave)之间的关系

在主从复制架构中,主节点和从节点之间建立了一种特殊的关系。主节点可像平常一样与客户端进行读写交互,而从节点主要用于读操作。即使主节点宕机,从节点仍可以顺利继续提供读服务

从节点的数据完全复制自主节点的数据,因此它们之间是存在一定延迟的。但是,主节点会实时将写操作发送给从节点,并追赶主节点的进度。这种异步复制的机制确保了数据的最终一致性。

复制过程中的数据同步和传播机制

复制过程中的数据同步和传播机制包括以下步骤:

  1. 主节点将写操作记录在命令日志中(AOF日志或RDB文件)。
  2. 主节点将记录的命令发送到所有从节点。
  3. 从节点接收到命令后,在自己的数据集中执行相同的操作。
  4. 从节点将执行结果反馈给主节点,并广播给其他从节点。
  5. 其他从节点接收到广播后,更新自己的数据集。

案例情境:

考虑一个电子商务网站,主节点实时记录商品的库存和销售数据。从节点能够及时复制主节点的数据,并用于展示给用户。如果主节点处理一次销售操作,将其记录在命令日志中,它会将相同的操作发送给多个从节点。从节点会按照主节点的顺序执行相同的操作,确保所有节点上的数据始终保持一致。

例如,当主节点记录一次库存减少的操作时,它会将相同的操作发送给所有从节点。从节点接收到该操作后,同样将库存减少并更新自己的数据集。这样,主节点和从节点之间的数据保持同步,并能提供准确的库存信息给用户。

通过这个案例,可以更好地理解Redis主从复制架构的工作原理和数据同步机制,以及主节点和从节点之间的关系。这种复制机制确保了数据的高可用性和一致性,使得Redis主从复制在构建可靠的分布式系统中扮演着重要的角色。

配置和设置

如何配置Redis主从复制

步骤:
  1. 配置主节点:打开主节点的配置文件,通常为redis.conf。确保以下配置项正确设置:

    • 设置bind配置为主节点的IP地址。
    • 设置port配置为主节点的监听端口。
    • 启用持久化机制,可以选择使用AOF(Append Only File)或RDB(Redis Database)方式记录命令日志。
    • 若要允许从节点进行连接,并进行数据复制,将slave-read-only配置项设置为no
  2. 配置从节点:打开从节点的配置文件,同样是redis.conf。确保以下配置项正确设置:

    • 设置bind配置为从节点的IP地址。
    • 设置port配置为从节点的监听端口。
    • 配置replicaof指令为主节点的IP地址和端口,将从节点设置为指定主节点的从节点。
  3. 启动Redis服务器:先启动主节点,然后启动从节点。

    • 启动主节点:在命令行中运行 redis-server /path/to/redis.conf
    • 启动从节点:在命令行中运行 redis-server /path/to/redis.conf

主节点和从节点都需要配置一个独立的Redis配置文件

主节点的配置文件(redis.conf):
# 绑定的IP地址和端口号
bind 127.0.0.1
port 6379# 启用持久化机制
appendonly yes
# 或者
save 900 1
save 300 10
save 60 10000# 允许从节点连接并进行数据复制
slave-read-only no# 主节点的密码(可选)
requirepass YourPassword# 主节点的名称(可选)
# 设置一个唯一的名称以便在主从复制中进行识别
# 若未设置,则默认为随机生成的40个字符的字符串
# 可以使用命令 CONFIG SET masterauth YourPassword 来设置主节点的密码
# 从节点连接主节点时需要提供密码
# masterauth YourPassword
从节点的配置文件(redis.conf):
# 绑定的IP地址和端口号
bind 127.0.0.1
port 6380# 设置为从节点并指定主节点的IP地址和端口号
replicaof 127.0.0.1 6379# 从节点的密码(可选,与主节点密码相同)
masterauth YourPassword

根据实际情况进行修改。比如,将bindport配置为正确的IP地址和端口号,以及适当配置appendonlysave选项来启用持久化。

在实际部署中,可以根据具体需求和实际环境来调整其他配置项,如内存限制、日志记录等。确保主节点和从节点的配置文件中相应的配置项保持一致,并使用正确的设置可以确保主从复制的正常运行。

复制过程中的身份验证和安全性设置


在Redis主从复制中,数据的传输和复制过程中可以通过设置身份验证和安全性措施来保护数据的安全。

在Redis主从复制中,可以通过以下方式来设置身份验证和安全性保护:

1.使用密码进行身份验证:

可以在主节点和从节点的配置文件中设置一个密码,以限制对Redis实例的访问。在配置文件中,使用requirepass选项来设置主节点密码,使用masterauth选项来设置从节点连接主节点所需的密码。

例如,在主节点的配置文件中设置密码:

requirepass YourPassword

在从节点的配置文件中设置密码:

masterauth YourPassword

通过设置密码,只有提供了正确密码的节点才能连接到主节点或复制数据。

2.启用SSL加密传输:

为了保护数据在传输过程中的安全性,可以启用SSL(Secure Sockets Layer)加密功能。通过配置Redis实例使用SSL证书,可以确保数据在传输过程中是安全的。

要启用SSL加密传输,需要准备SSL证书,并在配置文件中设置以下选项:

sslenabled yes
sslcert /path/to/cert.crt
sslkey /path/to/private.key

在启用SSL加密后,Redis实例之间的通信将会被加密,提供更高的安全性。

3.配置防火墙规则:

为了进一步加强数据的安全性,可以通过配置防火墙规则来限制对Redis实例的访问。只允许受信任的IP地址或网络访问Redis服务器,可以减少潜在的攻击风险。

根据不同的操作系统和防火墙软件,具体的配置方法可能会有所不同。一般来说,可以通过操作系统的防火墙工具,如iptables、ufw等,在主节点和从节点上配置允许访问的IP地址或网络段。

例如,使用iptables配置允许特定IP地址访问Redis:

iptables -A INPUT -s <trusted-ip> -p tcp --dport <redis-port> -j ACCEPT

通过配置防火墙规则,只有被允许的IP地址才能连接到Redis服务器。

通过设置密码进行身份验证、启用SSL加密传输和配置防火墙规则等措施,可以增加Redis主从复制过程中数据的安全性,并保护数据不易被未授权的访问和攻击。同时,还建议定期更新密码和SSL证书,并密切关注安全漏洞和更新,以保持系统的安全性。

案例:

示例情境: 考虑一个银行应用程序,主节点存储用户的交易记录,而从节点用于生成报告和数据分析。为了确保数据的安全性,您可以在主节点和从节点的配置文件中进行身份验证设置。

在主节点的配置文件中,您可以使用requirepass指令设置一个密码,以限制对主节点的访问。在从节点的配置文件中,您可以使用masterauth指令设置一个与主节点密码相符的密码,以确保从节点只能连接到正确的主节点。

----------可以看到在Redis主从复制架构中,通过适当的配置和设置,可以确保数据的安全性和正确的复制。这种安全性措施保护了敏感数据的传输和复制,确保只有具有正确身份验证和权限的节点才可以访问和进行复制操作。

  1. 配置主节点:
    • daemonize:设置Redis以守护进程方式运行,即在后台运行Redis服务器。
    • appendonly:启用AOF模式,将写操作以日志的形式追加到硬盘上的AOF文件中。
    • appendfilename:定义AOF文件的名称。
    • appendfsync:设置AOF文件的同步策略,可以选择always、everysec或no。
    • save:配置RDB持久化的规则,设置保存数据库快照的条件(如多长时间内有多少次写操作)。
  2. 配置从节点:
    • bind:指定从节点的IP地址,用于监听和接收连接。
    • port:指定从节点的监听端口。
    • daemonize:设置Redis以守护进程方式运行。
    • replicaof:指定主节点的IP地址和端口,将当前节点设置为指定主节点的从节点进行复制。
  3. 身份验证:

    • masterauth:在主节点配置文件中设置用于从节点连接的密码。
    • requirepass:在从节点配置文件中设置用于主节点连接的密码。
  4. 安全性设置:

    • requirepass:设置用于连接Redis服务器的密码,以保护访问服务器的权限。
    • masterauth:设置主节点进行连接的密码,以防止未经授权的复制。

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

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

相关文章

蓝桥杯-单片机组基础5——外部中断与LED的控制(附小蜜蜂课程代码)

蓝桥杯单片机组备赛指南请查看这篇文章&#xff1a;戳此跳转蓝桥杯备赛指南文章 本文章针对蓝桥杯-单片机组比赛开发板所写&#xff0c;代码可直接在比赛开发板上使用。 型号&#xff1a;国信天长4T开发板&#xff08;绿板&#xff09;&#xff0c;芯片&#xff1a;IAP15F2K6…

自学软件测试怎么学?

软件测试是一个变得越来越受欢迎的行业&#xff0c;在IT行业里面&#xff0c;也是初学比较容易的。但对小白而言&#xff0c;怎样学习才能做到快速入门&#xff0c;少走弯路呢&#xff1f; 步骤一&#xff1a;初学学软件测试&#xff0c;要先搞懂这种问题 要想进入到软件测试…

Android Duplicate class 排除重复类

一、起因&#xff1a; 在迭代开发的时候&#xff0c;发现2个ijk很多类重复。但又2个库实现的功能是不一样&#xff0c;目前不能合并。但又想保留2个功能。需要排除其中一个库。 二、报错如何下图&#xff1a; 三、解决方法&#xff1a; 3.1 在terminal 也就是命令行处输入 …

Golang 并发机制 CSP模型

Golang 并发机制 CSP模型 1 前言 go语言的最大两个亮点&#xff0c;一个是 goroutine &#xff0c;一个就是 chan 了。二者合体的典型应用CSP&#xff0c;基本就是大家认可的并行开发神器&#xff0c;简化了并行程序的开发难度&#xff0c;我们来看一下CSP。 2 CSP是什么 C…

在Windows 11中运行磁盘清理工具的9种方法,总有一种适合你

自Windows98以来,微软在操作系统中包含了一个内置的清理工具。当用户转向第三方清理应用程序时,这个值得信赖的实用程序站稳了脚跟。微软甚至宣布,第三方应用程序几乎毫无用处,删除注册表项不是一个好主意。 磁盘清理工具可以帮助删除临时文件、旧的更新日志、缩略图缓存和…

git安装与使用4.3

一、git的安装 1、下载git包 下载git包url&#xff1a;https://git-scm.com/download/win 下载包分为&#xff1a;64位和32位 2、点击安装包 2、选择安装路径 3、 点击下一步 4、点击next 5、点击next 6、点击next 7、 8、 9、 10、 11、 12、在桌面空白处&#xff0c;右键…

【SpringBoot】测试单元使用多线程

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;SpringBoot ⛺️稳重求进&#xff0c;晒太阳 问题产生 今天学习了乐观锁&#xff0c;但在测试单元执行多线程的时候出现了问题&#xff0c;多线程并没有直接结果 在控制台没有任何输出…

KubeSphere平台安装系列之二【Linux单节点部署KubeSphere】(2/3)

**《KubeSphere平台安装系列》** 【Kubernetes上安装KubeSphere&#xff08;亲测–实操完整版&#xff09;】&#xff08;1/3&#xff09; 【Linux单节点部署KubeSphere】&#xff08;2/3&#xff09; 【Linux多节点部署KubeSphere】&#xff08;3/3&#xff09; **《KubeS…

RocketMQ学习笔记一

课程来源&#xff1a;002-MQ简介_哔哩哔哩_bilibili &#xff08;尚硅谷老雷&#xff0c;时长19h&#xff09; 第1章 RocketMQ概述 1. MQ是什么&#xff1f; 2. MQ用途有哪些&#xff1f; 限流削峰&#xff1b;异步解耦&#xff1b;数据收集。 3. 常见MQ产品有哪些&对比…

Kaggle竞赛之Titanic存活预测2

提高代码规范性&#xff0c;基于上一个 baseline 的提高 import pandas as pd from sklearn.preprocessing import LabelBinarizer from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split#数据划分方法 from sklearn.ensem…

哪个超声波清洗机品牌值得入手?销量榜品牌值得选购!

在科技日益发展的今天&#xff0c;超声波清洗技术以其高效、便捷和深度清洁的特点&#xff0c;已经深入到生活的诸多领域&#xff0c;从精密仪器到珠宝首饰&#xff0c;从眼镜框到假牙&#xff0c;甚至是厨房用品的日常护理&#xff0c;都能见到超声波清洗机的身影。面对市场上…

无人机两次飞行的图像数据配准与几何校正方法研究

标题: 无人机两次飞行的图像数据配准与几何校正方法研究 摘要: 本文研究了利用无人机获取的两次飞行的图像数据进行配准与几何校正的方法。无人机航拍技术在地理信息获取和空间数据应用中具有重要意义,但由于飞行条件、摄影设备和环境等因素的影响,同一区域的不同飞行任务…

【基频提取算法-YIN】

本文对基频提取算法 YIN 做以介绍。如有表述不当之处欢迎批评指正。欢迎任何形式的转载&#xff0c;但请务必注明出处。 文章目录 1. 引言2. YIN 各模块代码讲解2.1. 差分函数的实现2.2. 累积均值归一化差分函数的实现2.3. 绝对阈值2.4. 抛物线插值2.5. 最优局部估计 3. 总结 1…

免杀实战-EDR对抗

文章目录 杀软分析BOF.NET 杀软分析 x64dgb简单调试发现该edr在r3环对ntdll.dll和kernel32.dll关键函数均存在hook&#xff0c;这里硬盘读取原来的dll进行重新加载&#xff0c;原理如图 loader // dllmain.cpp : 定义 DLL 应用程序的入口点。 #include "pch.h" #in…

DSI2协议之BTA行为理解

概念: DSI协议spec支持总线控制权在master和slave之间发生交换,即通过bus turn around来实现; BUS TURN AROUND: BTA 的实现是通过controller—>cdphy的turnrequest信号来实现; 关于控制器发出turnrequest给phy,phy通过lvds/trio线输出turnaround sequence如下图中…

LeetCode刷题笔记之二叉树(四)

一、二叉搜索树的应用 1. 700【二叉搜索树中的搜索】 题目&#xff1a; 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和一个整数值 val。你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在&#xff0c;则返回 null 。代码&a…

BUGKU 本地管理员

打开环境&#xff0c;先F12查看看到一串代码。Base64解码一下&#xff0c;得到的应该是密码&#xff0c;然后输入admin | test123试一下 使用BP抓包&#xff0c;修改XFF&#xff0c;得到flag

将镜像上传到私有镜像仓库Harbor

首先你需要安装Harbor服务&#xff1a; https://blog.csdn.net/qq_50247813/article/details/136388229 客户端已经安装docker&#xff1a; https://docs.docker.com/engine/install/centos/ 在docker客户端登录 Harbor 我的Harbor 服务器地址&#xff1a; 192.168.44.161 账号…

关于编写测试用例的一些思考

测试用例是QA同学的基本功&#xff0c;每个人都有一套编写测试用例的体系&#xff0c;本文是作者结合自身的工作经验以及阅读一些测试相关的书籍后的一些看法&#xff0c;欢迎大家一起讨论学习。 测试设计 测试用例格式 面试中一些常见的问题 1.APP测试与服务端测试的区别&am…

微服务中的Feign:优雅实现远程调用的秘密武器(二)

本系列文章简介&#xff1a; 本系列文章将深入探讨Feign的特点、原理以及在微服务中的应用场景&#xff0c;帮助读者更好地理解和使用这个优秀的远程调用工具。无论您是初学者还是有经验的开发人员&#xff0c;本文都将为您揭示Feign的秘密&#xff0c;并带您一起走进微服务的世…