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

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实现高可用解决方案。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容