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

发布了134 篇原创文章 · 获赞 88 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/belongtocode/article/details/104325782
今日推荐