关山初度尘未洗,策马扬鞭再奋蹄!这篇文章主要讲述Redis 进阶 -- 搭建主从复制及哨兵模式集群相关的知识,希望能为你提供帮助。
文章图片
一、什么是主从复制?
主从复制,是指将一台Redis服务器的数据 ,复制到其他的Redis服务器I前者称为主节点(master/leader),??主从复制的作用
后者称为从节点(slave/follower)数据的复制是单向的,只能由主节点到从节点,Master以写为主, Slave
以读为主。
- 读写分离:主节点写,从节点读,提高服务器的读写负载能力
- 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
- 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复; 实际上是一种服务的
- 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写
的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
- 高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis
?主从复制流程图注意:?
?主节点可写可读,从节点只能读取数据!?
??文章图片
主节点挂掉后,从节点可以通过命令行的方式?
?谋权篡位?
??直接称王,从而当上主节点!二、为什么要搭建集群?在真实项目开发中,仅仅使用一台单机Redis是万万不行的,数据量会很大,所以说以搭建集群的方式来缓解服务器的压力,从而实现系统的高可用性,提高并发能力!
从结构上,单个Redis服务器会发生单点故障,并且一台服务器需要处理所有的请求负载,压力较大;
从容量上,单个Redis服务器内存容量有限,就算一台Redis服务器内存容量为256G ,也不能将所有内存用作Redis存储内存, 一般来说 ,单台Redis最大使用内存不应该超过20G。电商网站上的商品,一般都是一次上传,无数次浏览的,说专业点也就是"多读少写"
均匀分配服务器的读写压力,从而提高系统的并发能力,提高可用性!
三、搭建主从复制集群?环境准备进入redis 配置文件目录
cd /usr/local/redis/redis-5.0.7/bin/conf
复制3份配置文件,并修改文件内容
cp redis.conf redis79.conf
cp redis.conf redis80.conf
cp redis.conf redis81.conf
查看配置文件
ll
文章图片
修改配置文件信息
- 修改 端口号
- 修改 pid
- 修改log文件
- 修改dump文件
连接集群新开3个链接启动集群,回到bin目录
cd ..
./redis-server /config/redis79.conf
./redis-cli -p 6379 # 启动客户端并监听6379端口
# 新开连接
cd /usr/local/redis/redis-5.0.7/bin
./redis-server /config/redis80.conf
./redis-cli -p 6380 # 启动客户端并监听6379端口
# 新开连接
cd /usr/local/redis/redis-5.0.7/bin
./redis-server /config/redis81.conf
./redis-cli -p 6381 # 启动客户端并监听6379端口
在监听端口的客户端输入命令查看信息
info replication# 查看信息,为主机或从机
文章图片
默认都是主机,我们修改 其它两个机为?修改端口为6380为从机,并连接主机6379?从机?
?
文章图片
修改端口为6381为从机,并连接主机6379
文章图片
回到主机6379查看信息
文章图片
??测试集群
测试主从复制集群在6379主机存入一个key-value,其它从机都可以读到响应的key
文章图片
从机读取key
文章图片
如果从机要设置key,那么是不可以设置的,?
?从机只能读取主机的key?
??文章图片
假设主机6379宕机了,那么其它从机依然连接着主机6379,直至等到主机恢复这样可不行,如果一直不恢复,会影响系统的可用性!,?
?为解决此问题,我们可以手动设置一个从机为主机,也可以通过哨兵模式自动选举主机?
?首先需要将6381从机连接上6380主机,这样形成链表得方式,以防一个主机挂掉,还可以快速恢复另一个从机为主机,从而保证数据得完整性手动设置主机
SLAVEOF no one
文章图片
这样6380端口就成了新的主机,可以进行添加数据和获取数据
四、什么是哨兵模式?
Sentinel(哨兵模式)是Redis的高可用性解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。
文章图片
五、哨兵模式的优缺点优点
- 哨兵集群,基于主从复制模式,所有的主从配置优点,它都有
- 主从可以切换,故障可以转移,高可用性的系统
- 哨兵模式就是主从模式的升级,手动到自动,更加健壮
- Redis 不好在线扩容,集群容量一旦到达上限,在线扩容就十分麻烦
- 实现哨兵模式的配置很麻烦,配置复杂
?心跳机制可自动检测服务是否在线,从而切换主机,来保证服务的可用性与健壮性?
?!六、搭建哨兵模式集群?搭建集群在这里启动上面的一主二从,启动3个redis端口,一个主机,二个从机
新建 哨兵配置文件 sentinel.conf 写入配置
# 进入配置文件目录
cd /usr/local/redis/redis-5.0.7/bin/config
# 新建哨兵配置文件
vim sentinel.conf
写入如下配置
# 监控本地端口为6379 作为主机,投票+1
sentinel monitor myredis 127.0.0.1 6379 1
启动哨兵监控
# 退回 bin 目录
cd ..
#启动哨兵模式
./redis-sentinel config/sentinel.conf
文章图片
??测试集群成功启动哨兵集群后,将主机服务停止,模拟宕机,观测哨兵模式的分配主机
shutdown # 停止6379主机
等一小会哨兵检测到主机下线,则会分配新的主机上位
文章图片
去查看端口为6381的详细信息,可以发现,6380自动连接上了6381主机
文章图片
再次将6379主机恢复,查看该服务变化,哨兵模式会将6379直接变为从机,并连接6381主机
查看端口为6379的信息
文章图片
再次查看6381的信息
文章图片
至此,哨兵模式自动分配主机模式完结!
?小结以上就是【小王 Java】对Redis 进阶 -- 搭建主从复制及哨兵模式集群简单的概述,主从复制,哨兵模式搭建集群是企业中必不可少的技术,在高并发情况下可以均匀的分配请求数量,能够承受更加强的并发能力,搭建集群不要想的很难,其实不难,认真去思考,并去实践,终究会学会的,加油~
【Redis 进阶 -- 搭建主从复制及哨兵模式集群】 如果这篇【文章】有帮助到你,希望可以给【Bug 终结者】点个赞
推荐阅读
- redis优化系列Redis主从原理主从常用配置
- 数据结构之堆(优先级队列)
- [OpenCV实战]19 使用OpenCV实现基于特征的图像对齐
- 你真的会用K折交叉吗( 对于K折交叉的思考| 防止K折交叉踩坑)
- [OpenCV实战]20 使用OpenCV实现基于增强相关系数最大化的图像对齐
- Unity3D-UGUI篇Unity3D中UGUI的屏幕适配
- 图解transformer
- Unity3D日常开发实现角色移动行走之CharacterController组件
- 数据分析之特征创造——降维算法