redis 主从复制(读写分离)集群搭建(含错误处理)

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 1.概述当面临大流量时,redis可以采取集群的方式进行扩容,将压力分散到集群中的多个结点上去防止redis被打挂。redis的扩容方式有两种:垂直扩容,即读写分离。水平扩容,即分区。读写分离,将写请求和读请求分开来处理,写请求打到主结点上去,读请求打到从结点上去,主节点、从节点之间通过复制的方式进行数据同步。因为从节点中存放有全局数据,所以可以通过负载均衡的方式将读请求的流量打散,将压力分摊给各个从节点。在面对读多写少的大流量情景时,使用读写分离集群是很好的解决方式。

1.概述

当面临大流量时,redis可以采取集群的方式进行扩容,将压力分散到集群中的多个结点上去防止redis被打挂。redis的扩容方式有两种:

  • 垂直扩容,即读写分离。
  • 水平扩容,即分区。

读写分离,将写请求和读请求分开来处理,写请求打到主结点上去,读请求打到从结点上去,主节点、从节点之间通过复制的方式进行数据同步。


因为从节点中存放有全局数据,所以可以通过负载均衡的方式将读请求的流量打散,将压力分摊给各个从节点。在面对读多写少的大流量情景时,使用读写分离集群是很好的解决方式

3ad27d5619ff4187a8acc308409f0f66.png

能读?能写?问题:

能写的服务器能读,一般只拿来写。(主)

能读的服务器,不一定能写。(从)

宕机重新上线问题:

  1. 从服务器down机后,重连以后不会自动成为从服务器,需要手动配置。
  2. 无论从服务器接入的早晚,从服务器的数据一定会和主机一致。
  3. 主机down机以后,从机原地待命,等待主机上线。

2.搭建

集群IP规划:

IP 角色
192.1668.31.10 主节点
192.1668.31.20 从节点
192.1668.31.30 从节点

2.1.安装配置

redis的安装配置教程可以看博主的另一篇文章,里面有详细的安装步骤和错误处理:

Linux安装redis(含报错解决)__BugMan的博客-CSDN博客

2.2.认主

主从复制的关键点就在于从节点的手动认主。在未进行认主的时候,每个redis结点都默认为自己就是一个主节点,自己玩儿自己的:

使用info Replication命令查看主从关系

c245d41195db4ba1b6f97df7836f951b.png

在从节点上使用slaveof ip地址 端口号,进行认主:

6b3ab11956aa465b9bc37b6bfd77f9a0.png

认主成功后会在master上可以看到:

92bf3845313e44088d42c6482f5de256.png

2.3.错误处理

从节点认主后可能会出现主节点连不上的问题:

Error condition on socket for SYNC: Connection reset by peer

c73d2a36d0b44d22b76d42461cc6e47f.png 这个问题是由于主节点的保护模式造成的,将主节点的保护模式关掉,并且将bind ip修改为0.0.0.0让任意ip都可以连接,或者修改为从节点的ip,直接注释掉bind ip是无效的!!!

3.原理

主从复制的原理很简单,是采用RDB进行数据的复制的,每次从机联结都会给主机发送sync指令,告诉主机自己已经上线并且准备好进行数据同步了,然后主机会发送RDB文件给从机,从机收到RDB后会使用RDB进行数据的加载

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
20天前
|
存储 NoSQL 算法
09- Redis分片集群中数据是怎么存储和读取的 ?
Redis分片集群使用哈希槽分区算法,包含16384个槽(0-16383)。数据存储时,通过CRC16算法对key计算并模16383,确定槽位,进而分配至对应节点。读取时,根据槽位找到相应节点直接操作。
54 12
|
20天前
|
NoSQL Linux Redis
06- 你们使用Redis是单点还是集群 ? 哪种集群 ?
**Redis配置:** 使用哨兵集群,结构为1主2从,加上3个哨兵节点,总计分布在3台Linux服务器上,提供高可用性。
325 0
|
28天前
|
负载均衡 监控 NoSQL
Redis的集群方案有哪些?
Redis集群包括主从复制(基础,手动故障恢复)、哨兵模式(自动高可用)和Redis Cluster(官方分布式解决方案,自动分片和容错)。此外,还有如Codis、Redisson和Twemproxy等第三方工具用于代理和负载均衡。选择方案需考虑应用场景、数据规模和并发需求。
275 2
|
4天前
|
NoSQL 安全 Redis
聊聊Redis主从复制
聊聊Redis主从复制
26 0
|
5天前
|
存储 NoSQL 算法
Redis 搭建分片集群
Redis 搭建分片集群
14 2
|
22天前
|
监控 NoSQL Redis
redis主从复制
redis主从复制
|
28天前
|
NoSQL Java 测试技术
面试官:如何搭建Redis集群?
**Redis Cluster** 是从 Redis 3.0 开始引入的集群解决方案,它分散数据以减少对单个主节点的依赖,提升读写性能。16384 个槽位分配给节点,客户端通过槽位信息直接路由请求。集群是无代理、去中心化的,多数命令直接由节点处理,保持高性能。通过 `create-cluster` 工具快速搭建集群,但适用于测试环境。在生产环境,需手动配置文件,启动节点,然后使用 `redis-cli --cluster create` 分配槽位和从节点。集群动态添加删除节点、数据重新分片及故障转移涉及复杂操作,包括主从切换和槽位迁移。
33 0
面试官:如何搭建Redis集群?
|
2月前
|
存储 NoSQL 前端开发
【Redis深度专题】「核心技术提升」探究Redis服务启动的过程机制的技术原理和流程分析的指南(集群指令分析—实战篇)
【Redis深度专题】「核心技术提升」探究Redis服务启动的过程机制的技术原理和流程分析的指南(集群指令分析—实战篇)
11 0
|
2月前
|
存储 NoSQL 算法
【Redis深度专题】「核心技术提升」探究Redis服务启动的过程机制的技术原理和流程分析的指南(集群指令分析—上篇)(二)
【Redis深度专题】「核心技术提升」探究Redis服务启动的过程机制的技术原理和流程分析的指南(集群指令分析—上篇)
30 0
|
2月前
|
存储 监控 NoSQL
【Redis深度专题】「核心技术提升」探究Redis服务启动的过程机制的技术原理和流程分析的指南(集群指令分析—上篇)(一)
【Redis深度专题】「核心技术提升」探究Redis服务启动的过程机制的技术原理和流程分析的指南(集群指令分析—上篇)
26 0