Redis 集群
是什么
Redis 集群是一种通过将多个 Redis 节点连接在一起以实现高可用性、数据分片和负载均衡的技术。它允许 Redis 在差别节点上同时提供服务,提高团体性能和可靠性。根据搭建的方式和集群的特点,Redis集群重要有三种模式:主从复制模式(Master-Slave)、哨兵模式(Sentinel)和 Cluste r模式
Redis集群的作用和优势
Master-Slave(主从复制模式)
工作原理
它通过将一个 Redis 节点(主节点)的数据复制到一个或多个其他 Redis 节点(从节点)来实现数据的冗余和备份
主节点负责处理客户端的写操作,同时从节点会实时同步主节点的数据。客户端可以从从节点读取数据,实现读写分离,提高体系性能
实现
在 redis.conf 添加 以下配置
- # 从节点设置端口号6380
- port 6380
- # replicaof 主节点IP 主节点端口
- replicaof 127.0.0.1 6379
复制代码 或者直接在从节点 Redis 下令行实行
- #replicaof 主节点地址 主节点端口
- replicaof 127.0.0.1 6379
复制代码 优点
- 配置简朴,易于实现
- 实现数据冗余,提高数据可靠性
- 读写分离,提高体系性能
缺点
- 主节点故障时,需要手动切换到从节点,故障恢复时间较长
- 主节点负担所有的写操作,大概成为性能瓶颈
- 无法实现数据分片,受单节点内存限定
Redis Sentinel(哨兵模式)
解决的题目
高可用性解决方案,用于监控和管理Redis实例,确保体系的可用性和故障恢复能力
工作原理
主从复制,通过周期性检查Rrdis实力的状态来监控各个节点。当主节点不可用时,Sentinel会自动选取一个从节点提升为新的主机点,保障体系的可用性
实现
- 配置主从复制:起首按照主从复制模式的配置方法,单间一个主从复制集群
- 配置哨兵节点:在哨兵节点上创建一个新的哨兵配置文件(如:sentinel.conf),并添加如下配置:
- # sentinel节点端口号
- port 26379
- # sentinel monitor 被监控主节点名称 主节点IP 主节点端口 quorum
- sentinel monitor mymaster 127.0.0.1 6379 2
- # sentinel down-after-milliseconds 被监控主节点名称 毫秒数
- sentinel down-after-milliseconds mymaster 60000
- # sentinel failover-timeout 被监控主节点名称 毫秒数
- sentinel failover-timeout mymaster 180000
复制代码 - 启动哨兵节点:使用如下下令启动哨兵节点:
- redis> redis-sentinel /path/to/sentinel.conf
复制代码 - 验证哨兵模式:手动停止主节点,观察哨兵节点是否自动选举出新的主节点,并通知其他从节点和客户端
特点
- 监控简朴:Sentinel的配置相对简朴,通过指定要监控的Redis实例即可启动监控
- 故障切换:当主节点发生故障时,Sentinel自动举行故障切换,将一个从节点提升为新的主节点
- 适用场景:得当小规模部署,对于中小型应用提供了简朴而有用的高可用性方案。可用于管理Redis Cluster集群中的节点,监控节点状态、配置变更和故障恢复等,它可以自动检测并处理节点的故障,并确保集群的稳固运行。
优点
- 自动故障转移,提高体系的高可用性
- 具有主从复制的所有优点,如数据冗余和读写分离
缺点
- 配置和管理相对复杂
- 依然无法实现数据分片,受单节点内存限定
Redis Cluster
解决的题目
分布式解决方案,旨在解决单个Redis实例的容量和性能瓶颈
工作原理
接纳了分布式架构,接纳哈希槽(Hash Slot)的概念,将数据分为16384个槽位。每个节点负责管理一部分槽位,并在集群中举行数据交互和协调。客户端根据Key通过哈希算法(使用CRC16算法盘算键的哈希值,然后对16384取模,得到槽位编号)来确定对应的槽位,然后负责该槽位的节点举行通信。实现高可用性和横向扩展。自动分片和节点故障切换是Cluster的两个关键特点。
实现
- 配置 Redis 节点:为每个节点创建 redis.conf 配置文件,并添加如下配置:
- # cluster节点端口号
- port 7001
- # 开启集群模式
- cluster-enabled yes
- # 节点超时时间
- cluster-node-timeout 15000
复制代码 像这样的配置,一共需要创建6个,我们做一个三主三从的集群:
- 1. 启动 Redis 节点:使用如下命令启动6个节点:
- redis> redis-server redis_7001.conf
- 2. 创建 Redis Cluster:使用 Redis 命令行工具执行如下命令创建 Cluster:
- redis> redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1
- cluster-replicas 表示从节点的数量,1地表每个主节点都有1个从节点。
复制代码
- 创建 Redis Cluster:使用 Redis 下令行工具实行如下下令创建 Cluster:
- 验证 Cluster 模式:向 Cluster 发送请求,观察请求是否准确路由到相应的节点
特点
- 分布式架构:Redis Cluster将数据分布在多个节点上,实现了负载均衡和横向扩展
- 自动分片:Cluster支持自动分片,实现了数据在各个节点的均匀分布
- 故障切换:当节点发生故障时,Cluster能够通过自动重新分配哈希槽(Hash Slot)和选举新的主节点来实现快速的故障切换
- 适用场景:Redis Cluster 适用于大规模部署,能够处理更大量级的数据和请求。比如:高并发读写(大规模数据存储),容量扩展,高可用性
优点
- 数据分片,实现大规模数据存储
- 负载均衡,提高体系吸能
- 自动故障转移,提高高可用性
缺点
总结
- 主从模式:适用于数据备份和读写分离场景,配置简朴,但在主节点故障时需要手动切换
- Sentinel(哨兵模式):在主从复制的基础上实现自动故障转移,提高高可用性,适用于高可用性要求较高的场景
- Cluster模式:通过数据分片和负载均衡实现大规模数据存储和高性能,适用于大规模数据存储和高性能要求场景
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |