Redis宕机怎么办?哨兵机制?

宕机: 宕机是计算机术语,口语里面我们简单的把停掉机器叫做down机,转换为汉字是“宕机”,但很多人都叫做“当机”/“死机”。简单来说就是服务器停止服务。

redis一般在企业中做分布式缓存,可以大大的减小高并发的开销。企业中如果只有一台redis,肯定会造成数据丢失,无法挽救

redis集群: 两台为一组,一台主机一台备机 ,平时主机工作,备机不工作 ,备机每隔几秒就会给主机发送一个ping ,主机在正常工作的时候会发送一个peng 给备机 ,如果不返回pang,可能会连续ping三次,都不返回那么备机就会上,备机里有主机的全部内容,这个叫做心跳检测机制(高可用的作用),主从热备

redis中的slot槽值得范围是0-16383,一共是16384个槽值,可以将这些槽值分配给每组机器(目前在国内没有达到这么大集群的)

我们在存入redis数据的时候,使用key,value的键值对存值,那么存储前会将key使用crc16算法进行计算,会得出一个纯数字的值,使用这个数字除以16384取余数,余数落到那个slot槽值得范围内就将这个key,value存到对应的机器上,获取数据的时候也是如此。起到了一个负载均衡的作用,集群数越多越均匀,整体的容量要比单机版的容量要大,也就是扩容。

现在来说说多台reids或者是Redis集群,服务器宕机要怎么解决?

宕机则需要分为在主从模式下区分来看:
1、从的redis宕机怎么解决?
  配置主从复制的时候才配置从的redis, 从的会从主的redis中读取主的redis的操作日志,来达到主从复制。
    1.只要把从的redis重新启动,再和主的进行连接就可以
    2.如果从redis上面做数据的持久化,可以直接连接到主的上面,只要实现增量备份

2、主的redis宕机怎么解决?
  要先确认是否做持久化,若没有做持久化,重新启动主的redis就会造成数据丢失。
    1.先把从的redis升级为主的redis. 执行slave of one命令
    2.原来的主的可以重新启动,作为从的redis, 连接到主的redis上面做主从复 制

是不是上面的操作看起来很复杂,其实可以使用Redis 提供哨兵 机制来简化上面的操作。

哨兵是对Redis的系统的运行情况的监控,它是一个独立进程,功能有二个:

  • 监控主数据库和从数据库是否运行正常;
  • 主数据出现故障后自动将从数据库转化为主数据库;

单个哨兵的架构:
在这里插入图片描述
多个哨兵的架构:
在这里插入图片描述
高可用架构
在这里插入图片描述
在这里插入图片描述
哨兵的配置:

复制redis中sentinel.conf,根据情况进行配置

#当前Sentinel服务运行的端口
port 26379

#Sentinel服务运行时使用的临时文件夹
dir /tmp

#sentinel连接的主redis, 此redis连接端IP端口是172.17.0.1 6379
#将此redis判断为失效至少需要1个 Sentinel进程的同意, 只要同意Sentinel的数量不达标,自动failover就不会执行
sentinel monitor master 172.17.0.1 6379 1

#指定了在执行故障转移时,最多可以由多少个从Redis实例在同步新的主实例,在从Redis实例较多的情况下这个数字越小,同步的时间越长
#完成故障转移所需的时间就越长
sentinel parallel-syncs master 1

#如果未在18000ms内完成故障迁移,就默认未失败
sentinel failover-timeout master 180000

#redis的sentinel的日志
logfile "/var/log/sentinel_log.log"

可以使用哨兵搭建高可用服务器,哨兵模式还提供其他功能,比如监控、通知、为客户端提供配置等。

Redis为什么在线上部署的时候一般不设置密码?

在这里插入图片描述

图中可以看出客户在访问网址的时候是先进入域名解析器,域名解析器将网址解析成静态的ip,这个静态的ip其实就是负载均衡器(注:负载均衡器是即可以访问内网也可以访问外网),负载均衡器会根据需求来找到对应的项目模块服务器,再由项目模块的服务器找到对应的mysql集群或者是redis集群,tomcat和集群一般都在内网当中,所以不用将redis设置密码。

参考文章:
https://www.cnblogs.com/Infernal/p/11140633.html
https://blog.csdn.net/qq_42234033/article/details/82998653
https://blog.csdn.net/py_tamir/article/details/82555338

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
是的,作为Java领域的专家,我可以回答这些问题。 1. Redis集群了解吗? Redis集群是一种分布式Redis数据库解决方案,可以通过将多个Redis节点组合成一个逻辑上的整体来实现高可用性和可扩展性。Redis集群使用哈希分片算法将数据分散存储在不同的节点上,从而实现数据的分布式存储和负载均衡。 2. 如何处理宕机的情况? Redis集群使用主从复制机制来保证高可用性,即将一个节点设置为主节点,其他节点设置为从节点。当主节点宕机时,集群会自动选举一个从节点作为新的主节点,从而保证服务的持续可用性。 此外,Redis还提供了哨兵机制,可以监控Redis节点的健康状态,当主节点宕机时,哨兵会自动将其中一个从节点升级为主节点,从而保证服务的高可用性。 3. Redis的同步策略? Redis支持两种同步策略:全量复制和增量复制。 全量复制指的是从节点在开始复制时,需要将主节点上的所有数据全部复制一遍,然后才能进行增量同步。全量复制的缺点是耗时较长,但可以保证数据的一致性。 增量复制则是只复制主节点上的最新数据,从节点会记录自己已经同步的数据偏移量,然后从这个偏移量开始进行增量同步。增量复制的优点是速度快,但可能存在数据不一致的情况。为了解决这个问题,Redis引入了复制偏移量校验机制,可以在从节点和主节点之间进行数据一致性检查。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Apple_Web

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值