美文网首页
HA & 负载均衡—keepalived(vrrp部分)

HA & 负载均衡—keepalived(vrrp部分)

作者: alex_man | 来源:发表于2018-06-25 00:27 被阅读0次

    VRRP介绍

    协议介绍:虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议(摘自百度百科)
    • ipv4协议字段:

      • Source Address:vrrp组播报文的源ip地址
      • Destination Address:vrrp组播报文的目的ip地址,IANA分配给vrrp的地址为224.0.0.18
      • TTL:固定为255,如果vrrp接收端程序收到的TTL不为255,将丢弃这个包
      • Protocol:vrrp协议的协议号是112
    • vrrp协议字段,如图:

      • version:vrrp协议版本,keepalived用的是版本2
      • type:vrrp包的类型,目前只有一种类型(ADVERTISEMENT),值为1
      • Virtual Rtr ID (VRID):虚拟路由id的值(1-255),无默认值,主备机进行高可用对外提供的虚拟路由器的id(主备机虚一致)
      • Priority:虚拟路由器的优先级(8bit),更高的值表示更高的优先级
      • Count IP Addrs:vrrp通告报文中通告的ip数量
      • Authentication Type:认证类型
      • Advertisement Interval (Adver Int):通告间隔,默认是1s
      • Checksum:校验和
      • Authentication Data:认证的数据
      • IP Address(es):虚ip(1个或者多个)


        vrrp报文字段
        wireshark抓包vrrp报文
    协议状态机
    • 状态描述,如图:


      vrrp状态描述
      vrrp状态描述2

    Keepalived介绍

    什么是keepalived?

    这个项目的主要目标是为Linux系统和基于Linux的基础设施提供简单、健壮的负载平衡和高可用性。负载平衡框架依赖于众所周知的和广泛使用的Linux虚拟服务器(IPVS)内核模块,它提供了Layer4负载均衡。Keepalived实现了一组动态的、自适应地维护和管理负载平衡服务器池的检查器。另一方面,高可用性是通过VRRP协议实现的。VRRP是路由器故障转移的基础。此外,Keepalived基于VRRP有限状态机,提供低级别和高速的协议交互。Keepalived框架可以单独使用或全部使用,以提供弹性的基础结构。

    Keepalived软件架构,如图:
    Keepalived软件架构
    • Configure file parser:配置文件检测,主进程负责分析配置文件
    • I/O Multiplexer :io多路复用
    • watchdog : 监控两个进程健康状态,负责启动,重启两个子进程
    • 两个子进程:真正工作的子进程
      • Checkers:自身的IPVS的后端服务器的健康状态
      • VRRP
    Keepalived中vrrp模块工作原理
    • vrrp状态

    VRRP路由器在运行过程中有三种状态:

    * Initialize状态: 系统启动后就进入Initialize,此状态下路由器不对VRRP报文做任何处理,可以理解为初始化
    * Master状态: 路由器会发送VRRP通告,发送免费ARP报文。
    * Backup状态: 接受VRRP通告。
    

    一般主路由器处于Master状态,备份路由器处于Backup状态

    • vrrp选举机制

      • VRRP组中IP拥有者。如果虚拟IP地址与VRRP组中的某台VRRP路由器IP地址相同,则此路由器为IP地址拥有者,这台路由器将被定位主路由器。
      • 比较优先级。如果没有IP地址拥有者,则比较路由器的优先级,优先级的范围是0~255,大的作为主路由器
      • 比较IP地址。在没有Ip地址拥有者和优先级相同的情况下,IP地址大的作为主路由器。
        如下图所示: 虚拟IP为10.1.1.254,在VRRP组中没有IP地址拥有者,则比较优先级,很明显RB和RA的优先级要大于RC,则比较RA和RB的IP地址,RB的IP地址大。所以RB为组中的主路由器。


        路由器组
    • vrrp定时器

      • VRRP通告报文时间间隔定时器

        • VRRP备份组中的Master路由器会定时发送VRRP通告报文,通知备份组内的路由器自己工作正常
        • 用户可以通过设置VRRP定时器来调整Master路由器发送VRRP 通告报文的时间间隔
        • 如果Backup路由器在等待了3个间隔时间后,依然没有收到VRRP 通告报文,则认为自己是Master路由器,并对外发送VRRP通告报文,重新进行Master路由器的选举
      • VRRP抢占延迟时间定时器

        • 为了避免备份组内的成员频繁进行主备状态转换,让Backup路由器有足够的时间搜集必要的信息(如路由信息),Backup 路由器接收到优先级低于本地优先级的通告报文后,不会立即抢占成为Master
        • 而是等待一定时间——抢占延迟时间后,才会对外发送VRRP通告报文取代原来Master路由器
    • VRRP工作过程总结

      • 路由器使能VRRP 功能后,会根据优先级确定自己在备份组中的角色。优先级高的路由器成为Master 路由器,优先级低的成为Backup 路由器。Master 路由器定期发送VRRP告报文,通知备份组内的其他设备自己工作正常;Backup 路由器则启动定时器等待通告报文的到来。

      • 抢占方式下,当Backup 路由器收到VRRP 通告报文后,会将自己的优先级与通告报文中的优先级进行比较。如果大于通告报文中的优先级,则成为Master 路由器;否则将保持Backup状态

      • 在非抢占方式下,只要Master 路由器没有出现故障,备份组中的路由器始终保持Master 或Backup 状态,Backup 路由器即使随后被配置了更高的优先级也不会成为Master 路由器

      • 如果Backup 路由器的定时器超时后仍未收到Master 路由器发送来的VRRP 通告报文,则认为Master 路由器已经无法正常工作,此时Backup 路由器会认为自己是Master 路由器,并对外发送VRRP 通告报文。备份组内的路由器根据优先级选举出Master 路由器,承担报文的转发功能

    keepalived做单点故障的HA(实验)

    实验环境介绍
    • 两台Centos7.4作为路由器备份组,如图,master端和backup端的ens37、ens38接口都配置有ip(<font color="#dd0000">在keepalived-3.x版本中已经不支持接口没有ip的情况</font><br /> )。master端管理口ip(ens33):192.168.137.140,backup端管理口ip(ens33):192.168.137.141


      实验环境
      实验环境master
      实验环境standby
    • 配置、编译、安装到/root/keepalived_install


      安装
    抢占模式下的HA
    • master端配置如图:


      master
    • backup端配置如图:


      backup
    • master端和backup端分别启动keepalived:


      启动keepalived
      启动keepalived
    • 查看master端和backup端的vip信息:


      master vrrp log
      standby vrrp log
    • down掉master端的ens37接口,查看master端和backup端的vip信息,此时backup端变成了master状态,master端进入fault状态:


      down mater接口
      master状态
      standby状态
    • up掉master端的ens37接口,查看master端和backup端的vip信息,此时backup端变成了backup状态,master端抢占为master状态:


      up mater接口
      master状态
      standby状态
    非抢占模式下的HA
    • master端的配置如图3-3-1:


      master配置
    • backup端的配置如图:


      standby配置
    • 分别运行keepalived后如图:


      master vrrp log
      standby vrrp log
    • down掉master端的ens37接口,查看master端和backup端的vip信息,此时backup端变成了master状态,master端进入fault状态:


      down master接口
      master vrrp log
      standby vrrp log
    • up掉master端的ens37接口,查看master端和backup端的vip信息,此时backup还是master状态,master端成为backup状态:


      up mater接口
      master vrrp log
      standby vrrp log

    总结

    keepalived这款开源程序能够自动实现将用户访问的ip转移的方法,故障重启,故障,恢复切换,故障报警。此外keepalived还能基于lvs实现服务级别的负载均衡,keepalived也可以结合HAproxy、nginx、httpd实现高可用解决方案。

    相关文章

      网友评论

          本文标题:HA & 负载均衡—keepalived(vrrp部分)

          本文链接:https://www.haomeiwen.com/subject/blkeyftx.html