redis集群配置

一、Redis集群的三种方式


Redis集群提供了三种分布式方案:
主从模式:一个主节点和一个或多个从节点,主节点负责写操作,从节点负责读操作,实现读写分离,分担主节点的压力。
哨兵模式:哨兵系统用于监控多个Redis服务器,当主服务器出现问题时,哨兵会自动进行故障迁移,选举一个新的主服务器。
集群模式:Redis Cluster通过将键空间分割为16384个槽位,每个主节点负责一部分槽位,实现数据的分布式存储和高可用性。

二、每种方式的优缺点和适用场景

  • 主从模式的优缺点
  1. 优点:实现读写分离,分担主节点的压力。
  2. 缺点:当主节点宕机时,需要手动切换或等待重启,不具备自动故障恢复功能。
  3. 适用场景:适用于对数据一致性和高可用性要求不高的场景。
  • 哨兵模式的优缺点
  1. 优点:自动故障迁移,实现高可用性。
  2. 缺点:配置复杂,需要部署哨兵系统。
  3. 适用场景:适用于对高可用性有较高要求的场景。
  • 集群模式的优缺点
  1. 优点:高可用性、高扩展性、数据自动分片和复制。
  2. 缺点:配置复杂,需要多个节点协同工作。
  3. 适用场景:适用于大规模、高并发、高可用的场景

三、主从复制

1.什么是主从复制?

主从复制是将一台Redis服务器的数据复制到其他Redis服务器,前者叫master/leader主节点,后
者成为从节点slave/follower,数据库的复制是单项的,只能由主–>从,master以写为主,slave以读为主,利用主从复制实现读写分离,最低配的主从复制也需要一主二从。主从复制中,从节点只能进行读操作,如果在从节点执行写命令则会报错,主节点可以执行读写操作,但我们网网规定主节点只能进行写操作,这样也是符合了读写分离;默认情况下,每个Redis服务器都为主节点,即master。

2.主从复制的作用

1. 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式
2. 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速故障恢复,实际上是一种服务的冗余

3. 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,从节点提供读,即写redis数据库时app连接主节点,读时连接从节点,分担服务器压力,尤其是写少读多场景下,通过多个从节点分担读的流量,可以大大提高redis服务器并发量
4. 高可用基石:主从复制还是哨兵和集群能够实施的基础,因此说主从复制是redis高可用的基础

四、 Redis主从复制搭建(一主二从)

分别命名6379、6380、6381,以6379为主机(就是把原来解压的Redis版本,我这个是Redis-x64-3.0.504,复制三份该一下名字,当然最好把这复制的三份再建一个文件夹放进去)

 主库6379(master),从库6380(slave),6381(slave)修改redis.windows.conf下端口号

 我这个是Redis-x64-3.0.504版本 修改相应的端口

 修改dump.rdb,该文件是redis的RDB方式持久化生成的数据文件(主要是三个不在同一个里面)

 注意,三个文件都要改

从库设置(这个要看清是从库的设置):

 修改从库redis.windows.conf

slaveof 主库IP 主库端口号

masterauth 主库密码(这个可以不设置)

启动主库,在启动从库(先主后从),进行测试,主库添加数据,从库同步

进入主库(可视化界面里进行就行),使用命令: info replication 查看是否主从复制

 复制的过程原理
1、 当从库和主库建立MS关系后,会向主数据库发送SYNC命令;
2、 主库接收到SYNC命令后会开始在后台保存快照(RDB持久化过程),并将期间接收到的写命令缓存起来;
3、 当快照完成后,主Redis会将快照文件和所有缓存的写命令发送给从Redis;
4、 从Redis接收到后,会载入快照文件并且执行收到的缓存的命令;
5、 之后,主Redis每当接收到写命令时就会将命令发送从Redis,从而保证数据的一致;
 无磁盘复制

通过前面的复制过程我们了解到,主库接收到SYNC的命令时会执行RDB过程,即使在配置文件中禁用
RDB持久化也会生成,那么如果主库所在的服务器磁盘IO性能较差,那么这个复制过程就会出现瓶颈,
庆幸的是,Redis在2.8.18版本开始实现了无磁盘复制功能(不过该功能还是处于试验阶段)。

原理:
Redis在与从数据库进行复制初始化时将不会将快照存储到磁盘,而是直接通过网络发送给从数据库,避免了IO性能差问题。
开启无磁盘复制:repl-diskless-sync yes

复制架构中出现宕机情况,怎么办?

如果在主从复制架构中出现宕机的情况,需要分情况看:
1、 从Redis宕机
a) 这个相对而言比较简单,在Redis中从库重新启动后会自动加入到主从架构中,自动完成同步数
据;
b) 问题? 如果从库在断开期间,主库的变化不大,从库再次启动后,主库依然会将所有的数据做
RDB操作吗?还是增量更新?(从库有做持久化的前提下)
i. 不会的,因为在Redis2.8版本后就实现了,主从断线后恢复的情况下实现增量复制。
2、 主Redis宕机
a) 这个相对而言就会复杂一些,需要以下2步才能完成
i. 第一步,在从数据库中执行SLAVEOF NO ONE命令,断开主从关系并且提升为主库继续服务;
ii. 第二步,将主库重新启动后,执行SLAVEOF命令,将其设置为其他库的从库,这时数据就能更新回来;
b) 这个手动完成恢复的过程其实是比较麻烦的并且容易出错,有没有好办法解决呢?当前有的,
Redis提高的哨兵(sentinel)的功能

五、哨兵

什么是哨兵

哨兵的作用就是对Redis的系统的运行情况的监控,它是一个独立进程。它的功能有2个:
1、 监控主数据库和从数据库是否运行正常;
2、 主数据出现故障后自动将从数据库转化为主数据库;
 
哨兵模式就是我们常讲的主从切换技术了,在哨兵模式没出来前,当我们的主服务器宕机了之后,需要人为的去将从机切换成主机去顶一下,在从机中输入命令:slaveof no one ,让 从机 篡位 成为 主机,而主从机的区别就是主机能”写、读“,而从机只能”读“,而人为干预主从切换会造成一段时间内服务不可以使用的问题,于是在Redis2.8之后正式的提供了Sentinel(哨兵模式)架构来解决这个问题,所以哨兵模式也可以理解为:当 某门派大佬驾崩的时候,根据门派内的投票数直接让新老大上位哨兵模式是一个独立的进程,做为进程,它会独立运行,原理就是通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis主从机

这个时候大家会想,如果在老大没了的时候,哨兵也没了咋整啊?整不下去了啊

一般来说,哨兵是不会出现事故的,那万一出现事故了呢?为了以防万一,那就再配一个哨兵的集群,让他们相互试探有没有挂掉,如果集群里的哨兵都挂了,那么恭喜你·,可以去买彩票了

单个哨兵的架构

 多个哨兵的架构

 多个哨兵,不仅同时监控主从数据库,而且哨兵之间互为监控

六、哨兵搭建(一主二从三哨兵)

在每个redis文件夹下创建 sentinel.conf 文件配置哨兵信息

编写配置信息

# 哨兵sentinel实例运行的端口 默认26379
port 26379
# 本地ip
bind 127.0.0.1
# 哨兵监听的主服务器 后面的1表示主机挂掉以后进行投票,只需要2票就可以从机变主机
sentinel monitor mymaster 127.0.0.1 6379 2
# 设置未得到主机响应时间,此处代表5秒未响应视为宕机
sentinel down-after-milliseconds mymaster 5000
# 设置等待主机活动时间,此处代表5秒主机未活动,则重新选举主机
sentinel failover-timeout mymaster 5000
# 设置主机的密码(无密码可以省略)
sentinel auth-pass mymaster 123456
#设置重新选举主机后,同一时间同步数据的从机数量,此处代表重新选举主机后,每次2台从机同步主机数
据,直到所从
#机同步结束
sentinel config-epoch mymaster 2
# 执行故障转移时, 最多有2个从服务器同时对新的主服务器进行同步
sentinel leader-epoch mymaster 2

注意:
三个都需要修改port 分别是26379,26380,26381
sentinel monitor mymaster 127.0.0.1 6379 2 端口号6379不需要修改 三个文件都一样

在每个redis文件夹下创建 startup_sentinel.bat 文件用于运行 sentinel.conf
记事本打开bat文件文件,写入内容 redis-server.exe sentinel.conf --sentinel
运行redis三个服务,并使用命令检查是否主从复制 info replication

注意先启动主,在启动从
在启动 startup_sentinel.bat 三个都要启动

 

 哨兵测试

从机宕机

  • 使用命令 shutdown 关闭一个从机(或直接关闭)
  • 80宕机

 主机宕机

  • 使用命令 shutdown 关闭主机(或直接关闭)

 会发现哨兵在连接几次79失败后,选取80做为主机
注意:
此时如果79再次启动,将作为80的从机出现(因为79宕机了,80为主机,不修改80就是主机)

如果配错了就启动不起来要检查仔细

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

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

相关文章

【每日一题】LeetCode - 盛最多水的容器

给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。要求找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 输入示例: height [1,8,6,2,5,4,8,3,7]输出: 4…

Python依赖库的几种离线安装方法

Python依赖库的几种安装方法 python经常需要安装一些依赖库,但是有时候环境可以连通python源,有时不能连通需要离线安装(安装单个库包或者整个库环境),使用pip的如下方法可以相对简单解决问题。 一、如何copy一个pyt…

Linux 端口占用 kill被占用的端口 杀掉端口

1、yum install lsof 2、输入netstat -tln,查看系统当前所有被占用端口 3、根据端口查询进程,输入lsof -i :9555,切记不要忘了添加冒号 4、 既然知道进程号了,那杀死当前进程就简单多了,直接 kill -9 PID 回车

如何通过企业架构蓝图引导企业实现数字化转型:构建与实施的全方位指南

在当今迅速变化的商业环境中,企业进行数字化转型已成为提升竞争力、优化运营的必要手段。企业架构蓝图(EA Blueprint)作为指导企业数字化转型的战略工具,不仅提供了系统化的设计和规划路径,还帮助企业在技术与业务目标…

【读书笔记·VLSI电路设计方法解密】问题26:什么是漏电流问题

功耗现已成为半导体行业面临的主要技术难题。在当前基于CMOS的VLSI电路中,有两种主要的功耗来源:动态功耗和静态功耗。动态功耗来源于晶体管的切换以及芯片上数百万逻辑门输出端的电容反复充电和放电,是芯片为产生有效输出所消耗的能量。静态功耗则指即使在晶体管关闭时也会…

法治在沃刷积分-刷文章浏览数

最近有一个任务,需要通过浏览文章来获取积分,一个个手点文章太麻烦,专业的事情还得专业的来。 法1:模拟发包 抓包发现,是通过接口来使积分增长,那直接模拟发包即可。 至于info_id的获取,可以通…

2024年全球 MoonBit 编程创新赛-零基础早鸟教程-使用wasm4八小时开发井子棋小游戏

前言 本篇文章主要分享 “2024年全球 MoonBit 编程创新赛 游戏赛道”参赛过程中九宫棋游戏的开发技巧和心得。以此抛砖引玉。首先介绍下 MoonBit。 月兔语言 MoonBit 是一个用于云计算和边缘计算的 WebAssembly 端到端的编程语言工具链。 您可以访问 https://try.moonbitlang.…

文本预处理操作简述

自然语言处理 (NLP) 是数据科学的一个分支,主要处理文本数据。除了数值数据外,文本数据也广泛可用,用于分析和解决业务问题。然而,在使用数据进行分析或预测之前,处理数据非常重要。 我们执行文本预处理来准备用于模型…

mysql的卸载与安装

一、mysql的卸载 1、用管理员模式的打开cmd,我的服务名是mysql。 net stop 【你的服务名】 sc delete 【你的服务名】 2、将下图中有包含‘bin’目录,‘data’目录等等的这个总目录删掉 如图我的目录是:mysql-5.7.28-winx64 3、删除mysql的隐…

代码随想录算法训练营Day39 | 卡玛网-46.携带研究材料、416. 分割等和子集

目录 卡玛网-46.携带研究材料 416. 分割等和子集 卡玛网-46.携带研究材料 题目 卡玛网46. 携带研究材料(第六期模拟笔试) 题目描述: 小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成…

day3:管道,解压缩,vim

一,管道(|) 引入 当我们要将本次命令结果作为下次命令参数时就可以用到,极大的简化了操作。 比如:head -5 文件| tail -1:表示显示第五行这就是管道的魅力 概述 管道符:| 作用&#xff1a…

【论文阅读】ESRGAN+

学习资料 论文题目:进一步改进增强型超分辨率生成对抗网络(ESRGAN : FURTHER IMPROVING ENHANCED SUPER-RESOLUTION GENERATIVE ADVERSARIAL NETWORK)论文地址:2001.08073代码:ncarraz/ESRGANplus: ICASSP …

Android中的epoll机制

深入理解Android中的epoll机制 在Android系统中,epoll广泛用于高效管理网络和文件的I/O操作。它通过减少CPU资源消耗和避免频繁的内核态-用户态切换,实现了在多连接、多任务环境中的高性能。epoll的特性使其非常适合Android系统中网络服务器、Socket通信…

Android 15自定义设置导航栏与状态栏,EdgeToEdge适配

背景:android api 35,activity设置EdgeToEdge.enable((ComponentActivity) this)前提下 一、设置导航栏与状态栏颜色 设置的状态栏颜色,只需要设置fitsSystemWindows跟setOnApplyWindowInsetsListener xml设置: 代码:…

比例数据可视化(Python实现板块层级图绘制)——Instacart Market Basket Analysis

【实验名称】 实验一:绘制板块层级图 【实验目的】 1. 掌握数据文件读取 2. 掌握数据处理的方法 3. 实现板块层级图的绘制 【数据介绍】Instacart Market Basket Analysis 1. 数据说明 数据共有300 0000orders, 20 0000users, …

logback日志脱敏后异步写入文件

大家项目中肯定都会用到日志打印,目的是为了以后线上排查问题方便,但是有些企业对输出的日志包含的敏感(比如:用户身份证号,银行卡号,手机号等)信息要进行脱敏处理。 哎!我们最近就遇到了日志脱敏的改造。可…

使用text-embedding-3-small生成向量并将向量插入Mlivus Cloud用于语义搜索的深度解析与实战操作

使用text-embedding-3-small生成向量并将向量插入Mlivus Cloud用于语义搜索的深度解析与实战操作 在当今的大数据时代,文本数据的处理与分析显得尤为重要。如何高效地存储、查询和理解这些海量文本数据,成为了许多企业和研究机构面临的重大挑战。幸运的是,随着向量数据库技…

校园表白墙源码修复版

此校园表白墙源码基于thinkphp,因为时代久远有不少bug,经本人修复已去除大部分bug,添加了美化元素。 https://pan.quark.cn/s/1f9b3564c84b https://pan.baidu.com/s/1bb9vu9VV2jJoo9-GF6W3xw?pwd7293 https://caiyun.139.com/m/i?2hoTc…

用更多的钱买电脑而不是手机

如果,我们对自己的定义是知识工作者,那么在工作、学习相关的电子设备投入上,真的别舍不得花钱。 需要留意的是,手机,对于大部分在电脑前工作的人,不是工作设备。在我看来,每年投入到电脑的钱&…

【Java】java 集合框架(详解)

📃个人主页:island1314 ⛺️ 欢迎关注:👍点赞 👂🏽留言 😍收藏 💞 💞 💞 1. 概述 🚀 🔥 Java集合框架 提供了一系列用于存储和操作…