Redis主从复制、哨兵机制服务器搭建及实现原理

追求适度,才能走向成功;人在顶峰,迈步就是下坡;身在低谷,抬足既是登高;弦,绷得太紧会断;人,思虑过度会疯;水至清无鱼,人至真无友,山至高无树;适度,不是中庸,而是一种明智的生活态度。

导读:本篇文章讲解 Redis主从复制、哨兵机制服务器搭建及实现原理,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、Redis主从复制

1. 基本概念:

单个Redis如果因为某种原因宕机的话,可能会导致Redis服务不可用,可以使用主从复制实现一主多从,主节点负责写的操作,从节点负责读的操作,主节点会定期将数据同步到从节点中,保证数据一致性的问题。
在这里插入图片描述

2. 搭建主从服务器

现有三台redis服务器,服务器ip分别为
192.168.1.100
192.168.1.103
192.168.1.105
现在将100配置成主服务器,103、105为从服务器
在这里插入图片描述

1.在103服务器中的redis.conf配置文件中搜索# replicaof <masterip> <masterport>
在这里插入图片描述
2.在下方添加slaveof 192.168.1.100 6379masterauth root
在这里插入图片描述
3.105服务器修改为slaveof 192.168.1.103 6379masterauth root
在这里插入图片描述

4.输入命令systemctl stop firewalld分别关闭100、103、105服务器防火墙
在这里插入图片描述
5. 分别重启103、105服务器
在这里插入图片描述
6.在100服务器中,输入命令./redis-cliauth rootinfo replication查看主从服务器配置结果
在这里插入图片描述
7.在103服务器中,输入命令./redis-cliauth rootinfo replication查看主从服务器配置结果
在这里插入图片描述

在这里插入图片描述
该主从同步方式存在 如果从节点非常多的话,会导致对主节点同步多个从节点压力非常大
可以采用树状类型解决该问题

3. 主从复制数据同步的过程

1.Redis从节点向主节点建立socket连接
2.Redis采用全量或者增量的形式将数据同步给从节点

从Redis2.8版本以后 过程采用增量和全量同步
全量复制:一般用于在初次的复制场景(从节点与主节点一次建立)
增量复制:网络出现问题,从节点再次连接主节点时,主节点补发缺少的数据,每次数据增量同步

4. 主从复制存在哪些缺陷

如果主节点存在了问题,整个Redis环境是不可以实现写的操作,需要人工更改配置变为主操作
如何解决该问题:使用哨兵机制可以帮助解决Redis集群主从选举策略。


二、Redis哨兵机制

Redis的哨兵机制就是解决我们以上主从复制存在缺陷(选举问题),解决问题保证我们的Redis高可用,实现自动化故障发现与故障转移。

在这里插入图片描述


三、哨兵机制原理

  1. 哨兵机制每个10s时间只需要配置监听我们的主节点就可以获取当前整个Redis集群的环境列表,采用info 命令形式。
  2. 哨兵不建议是单机的,最好每个Redis节点都需要配置哨兵监听。
  3. 哨兵集群原理是如何:多个哨兵都执行同一个主的master节点,订阅到相同都通道,有新的哨兵加入都会向通道中发送自己服务的信息,该通道的订阅者可以发现新哨兵的加入,随后相互建立长连接。
  4. Master的故障发现 单个哨兵会向主的master节点发送ping的命令,如果master节点没有及时的响应,哨兵会认为该master节点为“主观不可用状态”会发送给其他都哨兵确认该Master节点是否不可用,当前确认的哨兵节点数>=quorum(可配置),会实现重新选举。

四、配置哨兵集群

现有三台redis服务器,服务器ip分别为
192.168.1.100、192.168.1.103、192.168.1.105
其中100为主服务器,其余为从服务器

1.将redis安装包中的哨兵配置文件复制到redis的安装目录中

cp /usr/redis-5.0.6/sentinel.conf    /usr/redis/bin
cd  /usr/redis/bin

在这里插入图片描述
2.在我们的三台服务器的哨兵配置文件中搜索daemonize ,将daemonize 后的值修改为yes(后台启动)搜索sentinel monitor mymaster,设置主服务器、密码、确认机制(sentinel monitor mymaster 192.168.1.100 6379 2,2表示宕机后需要2个哨兵确认是否宕机)

vi sentinel.conf
daemonize yes
sentinel monitor mymaster 192.168.1.100 6379 2
sentinel auth-pass mymaster root

在这里插入图片描述
在这里插入图片描述
3.分别启动个服务器的哨兵

./redis-sentinel ./sentinel.conf

在这里插入图片描述
其他配置:
sentinel down-after-milliseconds mymaster 3000#sentinel心跳检测主3秒内无响应,视为挂掉,开始切换其他从为主
sentinel parallel-syncs mymaster 1#每次最多可以有1个从同步主。一个从同步结束,另一个从开始同步。
sentinel failover-timeout mymaster 18000#主从切换超时时间

五、哨兵集群效果验证

1.在100主服务器中进入./redis-cliauth rootinfo replication查看一下主从关系
在这里插入图片描述
2.在103主服务器中进入./redis-cliauth rootinfo replication查看一下主从关系
在这里插入图片描述
3.关闭100服务器
在这里插入图片描述
4.在103服务器中再次查看主从配置info replication,发现103已经变成主服务器
在这里插入图片描述
5.再次启动100服务器,并查看主从关系,100服务器已经变成从服务器
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/131225.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!