<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <p></p>
讯享网
主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。
哨兵模式优缺点
优点:
- 哨兵集群,基于主从复制模式,所有主从复制的优点,它都有
- 主从可以切换,故障可以转移,系统的可用性更好
- 哨兵模式是主从模式的升级,手动到自动,更加健壮
缺点:
- Redis不好在线扩容,集群容量一旦达到上限,在线扩容就十分麻烦
- 实现哨兵模式的配置其实是很麻烦的,里面有很多配置项
单机单个哨兵
哨兵的作用:
- 通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
- 当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。
多哨兵模式
1、环境准备
三台centos7虚拟机
默认已经都安装好redis了,redis默认安装路径在,我分别在三台服务器的redis安装目录下,创建了一个文件夹存放、

2、配置sentinel.conf配置文件
- 按照主从复制模式,搭建一主两从
- 192.168.3.131 为主服务器,192.168.3.137、192.168.3.138 为从服务器,在上一篇文章中,已搭建好主从模式
- 一主二从都分别搭建哨兵节点
1)禁止保护模式

2) sentinel monitor mymaster 127.0.0.1 6379 2
其中mymaster为监控对象起的服务器名称,可以自定义,ip地址:监控的主服务,端口为master 服务器port, 2表示至少有多少个哨兵同意迁移的数量,即2个以上哨兵认为主服务器不可以用事,才进行客观下线。单个哨兵监测到主服务不可用,仅仅只是主观下线,需要客观下线才算数

- 修改sentinel.conf 将 默认的 改为
3)sentinel auth-pass mymaster
由于我们的主服务器设置了密码,所以需要手动配置一下
讯享网
3、启动哨兵&测试
此处默认已经部署,同时redis已经开启
1)分别启动所有节点的哨兵

可以看到哨兵监听到主服务器
2)关闭主服务器,查看哨兵信息


我们可以发现主服务不可用了,过了30秒,哨兵模式 投票 将 从服务器 选举为主服务器
这里面的有一个时间间隔,实际上是服务下线修复的时间,可以在sentinel.conf配置文件里配置
讯享网
3)重启原本宕机的主服务


由于137已经成为了,重新回来的131,只能当了
但是原本宕机,现在重新加入的节点,还无法同步最新的状态

131继续宕机,也只是作为slave宕机,137哨兵会监测到,并主观下线131

在Redis的哨兵模式下,当一个主服务器宕机后重新开启,并且成为一个从服务器(slave),它不会自动同步新的主服务器(master)的状态,这是因为Redis的复制机制是单向的。换句话说,一个从服务器只能复制主服务器的数据,而不能向主服务器发送数据。
当一个主服务器重新启动后成为从服务器,它会尝试连接之前的主服务器(即它断开连接之前的主服务器),并尝试从该主服务器那里进行同步。如果之前的主服务器仍然可用并且数据没有被清除,那么重新启动的从服务器会尝试复制之前的主服务器的数据,而不会连接到新的主服务器。
要解决这个问题,可以通过以下步骤来手动配置重新启动的从服务器以连接到新的主服务器:
- 在重新启动的从服务器上,修改配置文件,将新的主服务器的地址和端口更新为主服务器的地址和端口。
- 重启从服务器,使其连接到新的主服务器并开始同步数据。
- 确保重新启动的从服务器可以与新的主服务器建立连接并成功同步数据。可以通过监视从服务器的日志文件或使用Redis命令检查同步状态。
- 如果有必要,可以重新配置哨兵以将重新启动的从服务器纳入监控,并在必要时进行故障转移。
通过执行以上步骤,重新启动的从服务器应该能够成功连接到新的主服务器并同步数据,从而与新的主服务器保持同步状态。
4) 完整的哨兵模式配置文件 sentinel.conf

4、SpringBoot测试哨兵模式故障转移功能
先关闭所有的redis主从节点和哨兵节点,重启发现,137依然还是master,说明故障转移后,主从关系确定下来后,将不再发生变化

初始状态,键值对情况

1)application.yml
讯享网
2)controller
3)写入键值对



4)当137master宕机,测试是否可以故障转移,并保证可用


删掉刚写入的键值对

再次请求,写入


5)读取一下键值对

至此redis-哨兵模式搭建与测试功能完毕

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/142155.html