keepalive详解

image-20240101122141708

一、简介

  • 介绍:Keepalived是Linux下一个轻量级别的高可用解决方案。中文名称:存活检测机制。起初针对LVS进行研发,专门用来监控集群系统中各个服务节点的状态。如果负载调度器出现故障,keepalive检测到以后将故障点直接从集群中剔除。
  • 作用:支持故障自动切换、支持节点健康状态检查
  • 原理:心跳检测

二、VRRP协议(虚拟路由冗余协议)

VRRP是一种容错协议,它通过把几台路由设备联合组成一台虚拟的路由设备,并通过一定的机制来保证当主机的下一跳设备出现故障时,可以及时将业务切换到其它设备,从而保持通讯的连续性和可靠性。

VRRP将局域网内的一组路由器划分在一起,称为一个备份组。备份组由一个Master路由器和多个Backup路由器组成,功能上相当于一台虚拟路由器。局域网内的主机只需要知道这个虚拟路由器的IP地址,并不需知道具体某台设备的IP地址,将网络内主机的缺省网关设置为该虚拟路由器的IP地址,主机就可以利用该虚拟网关与外部网络进行通信。

VRRP将该虚拟路由器动态关联到承担传输业务的物理路由器上,当该物理路由器出现故障时,再次选择新路由器来接替业务传输工作,整个过程对用户完全透明,实现了内部网络和外部网络不间断通信。

三、keepalive的工作流程

  • Initialize模式

    • 设备启动时进入此状态,当收到接口Startup的消息,将转入Backup或Master状态(IP地址拥有者的接口优先级为255,直接转为Master)。在此状态时,不会对VRRP报文做任何处理。
  • Master模式

    • 定期发送 VRRP 报文
    • 以虚拟 MAC 地址响应对虚拟 IP 地址的 ARP 请求
    • 转发目的标MAC 地址为虚拟 MAC 地址的 IP 报文
    • 如果它是这个虚拟 IP 地址的拥有者,则接收目的 IP 地址为这个虚拟 IP 地址的 IP 报文。否则,丢弃这个 IP 报文
    • 如果收到比自己优先级大的报文则转为 Backup 状态
    • 如果收到优先级和自己相同的报文,并且发送端的 IP 地址比自己的 IP 地址大,则转为 Backup 状态
    • 当接收到接口的 Shutdown 事件时,转为Initialize(初始状态)
  • Backup模式

    • 接收 Master 发送的 VRRP 报文,判断 Master 的状态是否正常
    • 对虚拟 IP 地址的 ARP 请求,不做响应
    • 丢弃目的 MAC 地址为虚拟 MAC 地址的 IP 报文
    • 丢弃目的 IP 地址为虚拟 IP 地址的IP报文
    • Backup 状态下如果收到比自己优先级小的报文时,丢弃报文,立即切换为 Master( 仅在抢占模式下生效 )
    • 如果收到优先级和自己相同或者比自己高的报文,则重置定时器,不进一步比较 IP 地址
    • 当接收到接口的 Shutdown 事件时,转为 Initialize
    • 如果 MASTER_DOWN_INTERVAL 定时器超时,则切换为 Master

四、脑分裂及其解决方案

  • 原因:、

    • 硬件----连接线、网卡或相关驱动、连接线间的设备(交换机)、
    • 防火墙
    • 配置的网卡信息不正确
  • 方案

    • 使用串口线进行连接,避免线路问题。
    • 使用特殊设备进行支撑,当备份节点成为主节点时主动杀死另一台keeepalive
    • 对iptables进行设置,开放环境中使用的IP
    • 通过zabbix对keepalive进行监测

五、keepalive的各项功能

  • 后端节点健康状态检测

    • 目的:搭配LVS使用,当后端节点出现故障时。主动剔除出集群,使集群后端节点出现故障时用户可以较为畅通的访问相应的资源
  • 脚本调用

    • 脚本所在目录:/etc/keepalive/script/

    • 服务检测脚本:

      • 当keepalive对其他服务(非LVS)进行高可用时,使服务器出现故障时可迅速切换至从节点,使用户仍可以正常访问后端真实服务器
      • 切换至主节点脚本:当从节点承当负载调度器的角色时,需获取一些资源,比如目录的挂载
      • 切换至关闭状态脚本:当该服务器需要关闭时,需释放一些资源,以免多台调度器同时写入某文件以致文件损坏
  • 非抢占模式

    • 在主节点和备份节点性能相差不大时采用非抢占模式,可减少资源的浪费和提升用户体验(减少用户不能使用的时间)
    • 在非抢占模式中,配置文件中应都为备份模式

相关推荐

  1. keepalive 理解

    2024-01-05 16:08:03       13 阅读
  2. Netty空闲检测&Keepalive

    2024-01-05 16:08:03       17 阅读
  3. vue keepAlive的使用

    2024-01-05 16:08:03       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-05 16:08:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-05 16:08:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-05 16:08:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-05 16:08:03       20 阅读

热门阅读

  1. Eureka工作原理超详细讲解介绍

    2024-01-05 16:08:03       31 阅读
  2. Eureka工作原理

    2024-01-05 16:08:03       35 阅读
  3. 回归和分类区别

    2024-01-05 16:08:03       34 阅读
  4. 暴力破解的基础知识和Burpsuite基础知识

    2024-01-05 16:08:03       40 阅读
  5. SQL效率-查询条件需避免使用函数处理索引字段

    2024-01-05 16:08:03       36 阅读
  6. xcode-开发相关

    2024-01-05 16:08:03       36 阅读
  7. Nuxt3重构问题总结

    2024-01-05 16:08:03       40 阅读
  8. MySQL中的临键锁:深入理解与案例解析

    2024-01-05 16:08:03       41 阅读
  9. Git提交规范详解

    2024-01-05 16:08:03       39 阅读
  10. C++day4

    C++day4

    2024-01-05 16:08:03      32 阅读
  11. Unity3D 如何实现多玩家语音聊天详解

    2024-01-05 16:08:03       39 阅读
  12. c++ move,可变参数模板,折叠表达式,...

    2024-01-05 16:08:03       31 阅读
  13. 见路不走1

    2024-01-05 16:08:03       34 阅读
  14. 聊聊PowerJob的DispatchStrategy

    2024-01-05 16:08:03       34 阅读
  15. Python 面向对象(3)

    2024-01-05 16:08:03       54 阅读