一个网络中的主机如果想向其他网络上的主机发送数据,必须经过主机所在网络的默认网关。随着网络的发展,网络中越来越多的机器需要和外界进行通信的时候,如果网关出现单点故障,那么整个网络都和外界断开的联系。
在分布式网络中,Master-Slave架构常用于解决单点故障,VRRP也是类似的思想。
虚拟路由冗余协议VRRP(Virtual Router Redundancy Protocol)是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议,是一种用于提高网络可靠性的容错协议。通过VRRP,可以在主机的下一跳设备出现故障时,及时将业务切换到备份设备,从而保障网络通信的连续性和可靠性。
使用VRRP的网络拓扑如下图所示。其中,选择RTA作为Master,RTB作为Slave,图中圆形代表两个路由器组成了一个逻辑路由器,共同作为一个逻辑的网关,提供服务。
举个例子,在这个网络中,RTA和RTB共同组成逻辑网关,对外提供服务。椭圆区域作为逻辑网关,会有一个共同的vip(此处为1.1.1.1)和vmac。网络中的主机的网关都设置为1.1.1.1。
当IP数据包到达交换机Switch A的时候,Switch A需要知道应该把这个数据包转发到哪条链路去,Switch A会广播一个ARP请求,看看哪条链路会响应这个ARP请求。
此时,Master相应这个ARP请求,从而Switch A就知道了应该把数据包从自己的eth0对应的这条链路转发出去。此时,Master是真正负责整个网络对外通信的路由器。
在Master刚选举出来的时候,也会发送一个免费ARP报文,将虚拟MAC地址通知给与它连接的设备或者主机,从而承担报文转发任务。
采用类似心跳的形式进行主的故障感知与切换。
当VRRP设备处于Master状态时,会承担虚拟路由设备的所有转发工作,并定期向其他backup的设备发送VRRP通告报文,报文主要包括其配置信息(优先级等)和工作状况等。
多个VRRP会根据配置的优先级选举Master设备。如果backup的优先级高于Master了,也可以选择抢占模式(开启preempt)或非抢占模式,决定是否重新选举。
除了利用VRRP屏蔽单点故障之外,还可以实现负载均衡。
在上面的例子中,backup路由器是空转的,并不负责路由工作。如果让backup的路由器也跟着进行转发任务,可以降低一定的成本。
在配置过程中,可以将两台路由器互配为主备的模式,形成两台虚拟路由器,网络中的主机可以选择任意一个虚拟路由器作为默认网关。
比如由3台路由器,分别是R1,R2和R3,用这3台路由器可以组成3台虚拟路由器:
一台以R1为Master,R2和R3为Backup路由器
一台以R2为Master,R1和R3为Backup路由器
一台以R3为Master,R1和R2为Backup路由器
选择任意一台作为网关,进行负载均衡即可。