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个或者多个)
协议状态机
-
状态描述,如图:
Keepalived介绍
什么是keepalived?
这个项目的主要目标是为Linux系统和基于Linux的基础设施提供简单、健壮的负载平衡和高可用性。负载平衡框架依赖于众所周知的和广泛使用的Linux虚拟服务器(IPVS)内核模块,它提供了Layer4负载均衡。Keepalived实现了一组动态的、自适应地维护和管理负载平衡服务器池的检查器。另一方面,高可用性是通过VRRP协议实现的。VRRP是路由器故障转移的基础。此外,Keepalived基于VRRP有限状态机,提供低级别和高速的协议交互。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
-
配置、编译、安装到/root/keepalived_install
抢占模式下的HA
-
master端配置如图:
-
backup端配置如图:
-
master端和backup端分别启动keepalived:
-
查看master端和backup端的vip信息:
-
down掉master端的ens37接口,查看master端和backup端的vip信息,此时backup端变成了master状态,master端进入fault状态:
-
up掉master端的ens37接口,查看master端和backup端的vip信息,此时backup端变成了backup状态,master端抢占为master状态:
非抢占模式下的HA
-
master端的配置如图3-3-1:
-
backup端的配置如图:
-
分别运行keepalived后如图:
-
down掉master端的ens37接口,查看master端和backup端的vip信息,此时backup端变成了master状态,master端进入fault状态:
-
up掉master端的ens37接口,查看master端和backup端的vip信息,此时backup还是master状态,master端成为backup状态: