因工作中使用Keepalived配置Nginx代理和MySQL代理的高可用,而Keepalived是VRRP协议在linux上的软件实现。因此了解了下VRRP的基础。

1. VRRP技术的引入

随着Internet的发展,人们对网络的可靠性的要求越来越高。对于局域网用户来说,能够时刻与外部网络保持联系是非常重要的。

我们知道,为了实现不同子网之间的设备通信,需要配置路由。

目前常用的指定路由方法有两种:

  1. ​ 第一种是通过路由协议 :RIP、OSPF动态学习
  2. ​ 第二种是通过静态路由: 对终端PC机配置静态路由。

这两种路由各有各的优缺点:

第一种路由可以自动寻找最优路径,邻居路由也可以通过学习来获得路由表,但是动态路由占用线路带宽和CPU处理时间。

第二种路由是不需要CPU处理时间同样也不占用线路带宽,但是这个路由需要对终端的PC机进行配置网关来实现,工作量是比较大的。内部网络中的所有主机都设置一条相同的缺省路由,指向出口网关,实现主机与外部网络的通信。

对于以上的两种路由在现在来说都是广泛应用的。我们现在只来分析静态路由的缺点,因为VRRP技术就是使用在静态路由上,而不是动态路由上。

对于静态路由来说,对终端PC机配置默认网关。如果作为默认网关的路由器出现故障,所有使用该网关为下一跳的主机的通信是要中断的。如下图所示;

在上图中,主机A—D都配置了一个默认的网关:10.1.1.1,网关路由的下一跳指向主机所在网段内的一个路由器RouterA,RouterA将报文发送到外网,但是如果现在RouterA坏掉了,那么所有的主机将无法与其他网段进行通信了。

配置多个出口网关是提高系统可靠性的常见方法,但局域网内的主机设备通常不支持动态路由协议,如何在多个出口网关之间进行选路是个问题。

为了解决以上的问题,将可以承担网关功能的路由器加入到备份组中,形成一台虚拟路由器,由VRRP的选举机制决定哪台路由器承担转发任务,局域网内的主机只需将虚拟路由器配置为缺省网关。我们可以加一个路由器RouterB,当RouterA坏掉时,所有的PC机将网关切换到RouterB上的网关。这样就实现了路由器的备份。这个技术就是VRRP技术—虚拟路由器冗余协议。

2. VRRP简介

VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议,IETF(Internet Engineering Task Force,因特网工程任务组)推出,用来解决局域网主机访问外部网络的可靠性问题。VRRP协议的实现有VRRPv2和VRRPv3两个版本,VRRPv2于IPv4,VRRPv3基于IPv6。Vrrp协议在linux上的实现(软件实现)是keepalived。

VRRP是一种容错协议,它通过把几台路由设备联合组成一台虚拟的路由设备,并通过一定的机制来保证当主机的下一跳设备出现故障时,可以及时将业务切换到其它设备,从而保持通讯的连续性和可靠性。使用VRRP的优势在于:既不需要改变组网情况,也不需要在主机上配置任何动态路由或者路由发现协议,就可以获得更高可靠性的缺省路由。如下图所示: 有两个路由器,从两个路由器中选举出一个路由器作为主路由器,其他的都是备份路由器,主路由器负责发转发数据报,而备份路由器处于空闲状态,当主路由器出现故障后,备份路由器会成为主路由器,代替主路由器实现转发功能。

3. VRRP相关概念

概念 解释
VRRP路由器(VRRP Router 所有运行VRRP协议的路由器就叫做VRRP路由器,它可能属于一个或多个虚拟路由器。
虚拟路由器(Virtual Router) 虚拟路由器是VRRP备份组中所有路由器的集合,它是一个逻辑概念,并不是正真存在的。从备份组外面看备份组中的路由器,感觉组中的所有路由器就像一个 一样,你可以理解为 在一个组中: 主路由器+所有备份路由器=虚拟路由器。虚拟路由器有一个虚拟的IP地址和MAC地址。如果虚拟IP和备份组中的某台路由器的IP相同的话,那么这台路由器称为IP地址拥有者,并且作为备份组中的主路由器。
虚拟IP地址(Virtual IP Address) 虚拟路由器的IP地址,一个虚拟路由器可以有一个或多个IP地址,由用户配置。
IP地址拥有者(IP Address Owner) 如果一个VRRP路由器将虚拟路由器的IP地址作为真实的接口地址,则该设备是IP地址拥有者。 当这台设备正常工作时,它会响应目的地址是虚拟IP地址的报文,如ping、TCP连接等。
虚拟MAC地址 是虚拟路由器根据虚拟路由器ID生成的MAC地址。 一个虚拟路由器拥有一个虚拟MAC地址,格式为:00-00-5E-00-01-{VRID}。 VRID为VRRP组的编号,范围是0~255. 当虚拟路由器回应ARP请求时,使用虚拟MAC地址,而不是接口的真实MAC地址。
主IP地址(Primary IP Address) 虚拟路由器的 IP 地址可以是备份组所在网段中未被分配的IP 地址,也可以和备份组内的某个路由器的接口IP 地址相同。从接口的真实IP地址中选出来的一个主用IP地址,通常选择配置的第一个IP地址。 VRRP广播报文使用主IP地址作为IP报文的源地址。
Master路由器(Virtual Router Master) 是承担转发报文或者应答ARP请求的VRRP路由器,转发报文都是发送到虚拟IP地址的。 如果IP地址拥有者是可用的,通常它将成为Master。
Backup路由器(Virtual Router Backup) 一组没有承担转发任务的VRRP路由器,当Master设备出现故障时,它们将通过竞选成为新的Master。
抢占模式 在抢占模式下,如果Backup的优先级比当前Master的优先级高,将主动将自己升级成Master。

如下图所示: RA、RB和RC都是VRRP路由器,他们构成了一个VRRP备份组,RA为主路由器,RB和RC为备份路由器,这三台路由器从外界来看就像一台一样,这样构成一个虚拟路由器Router Group,虚拟路由器有一个虚拟的IP地址为10.1.1.1(RA主路由器的IP)。RA是IP地址拥有者,也是主路由器。

4. VRRP的工作过程和原理

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

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

如图所示,虚拟路由器的组网环境如下:

  • RouterA、RouterB和RouterC属于同一个VRRP组,组成一个虚拟路由器,这个虚拟路由器有自己的IP地址10.110.10.1。虚拟IP地址可以直接指定,也可以借用该VRRP组所包含的路由器上某接口地址。
  • 物理路由器RouterA、RouterB和RouterC的实际IP地址分别是10.110.10.5、10.110.10.6和10.110.10.7。
  • 局域网内的主机只需要将缺省路由设为10.110.10.1即可,无需知道具体路由器上的接口地址。

4.1 VRRP的状态

VRRP协议中定义了三种状态机:初始状态(Initialize)、活动状态(Master)、备份状态(Backup)。其中,只有处于活动状态的设备才可以转发那些发送到虚拟IP地址的报文。

Initialize

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

Master

当路由器处于Master状态时,它将会做下列工作:

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

Backup

当路由器处于Backup状态时,它将会做下列工作:

  • 接收Master发送的VRRP报文,判断Master的状态是否正常。
  • 对虚拟IP地址的ARP请求,不做响应。
  • 丢弃目的MAC地址为虚拟MAC地址的IP报文。
  • 丢弃目的IP地址为虚拟IP地址的IP报文。
  • Backup状态下如果收到比自己优先级小的报文时,丢弃报文,不重置定时器;如果收到优先级和自己相同的报文,则重置定时器,不进一步比较IP地址。
  • 当Backup接收到MASTER_DOWN_TIMER定时器超时的事件时,才会转为Master。
  • 当接收到接口的Shutdown事件时,转为Initialize。

4.2 VRRP工作过程

  1. 路由器使能VRRP 功能后,会根据优先级确定自己在备份组中的角色。优先级高的路由器成为Master 路由器,优先级低的成为Backup 路由器。Master 路由器定期发送VRRP 通告报文,通知备份组内的其他设备自己工作正常;Backup 路由器则启动定时器等待通告报文的到来。
  2. 在抢占方式下,当Backup 路由器收到VRRP 通告报文后,会将自己的优先级与通告报 文中的优先级进行比较。如果大于通告报文中的优先级,则成为Master 路由器;否则将保持Backup状态
  3. 在非抢占方式下,只要Master 路由器没有出现故障,备份组中的路由器始终保持Master 或Backup 状态,Backup 路由器即使随后被配置了更高的优先级也不会成为Master 路由器
  4. 如果Backup 路由器的定时器超时后仍未收到Master 路由器发送来的VRRP 通告报文,则认为Master 路由器已经无法正常工作,此时Backup 路由器会认为自己是Master 路由器,并对外发送VRRP 通告报文。一个VRRP组里有多台备份路由器时,短时间内可能产生多个Master,此时,路由器将会将收到的VRRP报文中的优先级与本地优先级做比较。从而选取优先级高的设备做Master。备份组内的路由器根据优先级选举出Master 路由器,承担报文的转发功能
  5. 虚拟路由器状态切换时,Master路由器由一台设备切换为另外一台设备,新的 Master路由器只是简单地发送一个携带虚拟路由器的 MAC 地址和虚拟 IP地址信息的免费 ARP报文,这样就可以更新与它连接的主机或设备中的ARP 相关信息。网络中的主机感知不到Master路由器已经切换为另外一台设备。

4.3 VRRP选举机制

VRRP使用选举机制来确定路由器的状态,运行VRRP的一组路由器对外构成了一个虚拟路由器,其中一台路由器处于Master状态,其他处于Backup状态。所以主路由器又叫做Master路由器,备份路由器又叫做Backup路由器。

优先级选举:

  1. 1.VRRP组中IP拥有者。如果虚拟IP地址与VRRP组中的某台VRRP路由器IP地址相同,则此路由器为IP地址拥有者,这台路由器将被定位主路由器。
  2. 比较优先级。如果没有IP地址拥有者,则比较路由器的优先级,优先级的范围是0~255,大的作为主路由器。
  3. 比较IP地址。在没有Ip地址拥有者和优先级相同的情况下,IP地址大的作为主路由器。

如下图所示: 虚拟IP为10.1.1.254,在VRRP组中没有IP地址拥有者,则比较优先级,很明显RB和RA的优先级要大于RC,则比较RA和RB的IP地址,RB的IP地址大。所以RB为组中的主路由器。

4.4. VRRP报文格式

VRRP只使用VRRP通告报文。

VRRP通告报文使用Ip组播数据包进行封装,组播地址为223.0.0.18,IANA给其分配的协议号为112。

VRRP通告报文的TTL值必须是255,如果VRRP路由器接受到TTL值不为255的VRRP通告报文,必须丢弃。

VRRP组中的主路由器会定期发送通告报文,备份路由器接受,他们通过这种方式来交流选举

5.负载均衡

在一组VRRP组中,主路由器承担数据转发任务的同时,备份路由器的链路将处于空闲状态,这必然造成了带宽资源的浪费。为了避免这种浪费,使用VRRP负载均衡。

 VRRP并不具备对流量进行监控的机制,它的负载均衡只是通过使用多个VRRP组来实现的。VRRP负载均衡是通过实现将路由器加入到多个VRRP组实现的,使VRRP路由器在不同的组中担任不同的角色。

如上图所示:RA为组35的主路由器,同时又是组36的备份路由器。 RB为组36的主路由器,同时又是组35的备份路由器。

在正常状态下,PC1和PC2走RA,PC3和PC4走RB,但是两个路由器一旦出现故障,就将网关切换到备份路由器。RA和RB可以说是相辅相成的。

负载分担方式具有以下特点。

  • 每个备份组都包括一个Master设备和若干Backup设备。
  • 各备份组的Master可以不同。
  • 同一台路由器可以加入多个备份组,在不同备份组中有不同的优先级。

如图所示:

  • 配置两个备份组:组1和组2;

  • RouterA在备份组1中作为Master,在备份组2中作为Backup;

  • RouterB在备份组1和2中都作为Backup;

  • RouterC在备份组2中作为Master,在备份组1中作为Backup。

  • 一部分主机使用备份组1作网关,另一部分主机使用备份组2作为网关。

这样,以达到分担数据流,而又相互备份的目的。

6. VRRP的安全功能

对于安全程度不同的网络环境,可以在报头上设定不同的认证方式和认证字。

VRRP提供了三种认证方式:

1.无认证:不进行任何 VRRP 报文的合法性认证,不提供安全性保障。一般不要用这种。

2.简单字符认证:在一个有可能受到安全威胁的网络中,可以将认证方式设置为简单字符认证。发送 VRRP 报文的路由器将认证字填入到
VRRP 报文中,而收到 VRRP 报文的路由器会将收到的 VRRP 报文中的认证字和本地配置的认证字进行比较。如果认证字相同,则认为接收到的报文是合法的 VRRP 报文;否则认为接收到的报文是一个非法报文。

一般用的就是这种。

  1. MD5 认证:在一个非常不安全的网络中,可以将认证方式设置为 MD5 认证。发送 VRRP 报文的路由器利用认证字和 MD5 算法对
    VRRP 报文进行加密,加密后的报文保存在 Authentication Header(认证头)中。收到
    VRRP报文的路由器会利用认证字解密报文,检查该报文的合法性。MD5比较麻烦,有一些路由设备不支持。

7. 其他VRRP功能

监视接口状态

VRRP可以监视所有接口的状态。当被监视的接口Down或Up时,该路由器的优先级会自动降低或升高一定的数值,使得备份组中各设备优先级高低顺序发生变化,VRRP路由器重新进行Master竞选。

虚拟IP地址Ping开关

RFC3768并没有规定虚拟IP地址应不应该Ping通。不能Ping通虚拟IP地址,会给监控虚拟路由器的工作情况带来一定的麻烦,能够Ping通虚拟IP地址可以比较方便的监控虚拟路由器的工作情况,但是带来可能遭到ICMP攻击的隐患。控制Ping通虚拟IP地址的开关命令,用户可以选择是否打开。

VRRP定时器

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

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

② VRRP抢占延迟时间定时器

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

8. VRRP基本配置(略)

总结

VRRP简单的讲,就是利用心跳信息实现高可用。主节点不断的向备用节点广播信息,信息包含自己的心跳和优先级。不光如此,还可以在主节点上安装一个监控,来监控其他资源,如果这些资源运行正常,就可以给其他客户端发送心跳信息(包含优先级),一旦监控的资源出现问题了,就降低自己的优先级(降低后的优先级要低于备用节点的优先级,自己设置)。这时候,备用节点可以在主节点未出现故障的时候,就抢占主节点的资源(工作在抢占模式的备用节点)。备用节点发现自己的优先级比主节点的优先级高,就触发一次选举。将主节点变为备用节点,备用节点变为主节点。主节点拥有VIP.

参考

虚拟路由器冗余协议【原理篇】VRRP详解

Virtual Router Redundancy Protocol

Virtual Router Redundancy Protocol (VRRP) Version 3 for IPv4 and IPv6

VRRP(Virtual Router Redundancy Protocol) 虚拟路由器冗余协议简介的更多相关文章

  1. 架构-虚拟路由器冗余协议【原理篇】VRRP详解

    转自:http://zhaoyuqiang.blog.51cto.com/6328846/1166840/ 为什么要使用VRRP技术 我们知道,为了实现不同子网之间的设备通信,需要配置路由.目前常用的 ...

  2. (转)虚拟路由器冗余协议【原理篇】VRRP详解

    原文:http://blog.51cto.com/zhaoyuqiang/1166840 为什么要使用VRRP技术 我们知道,为了实现不同子网之间的设备通信,需要配置路由.目前常用的指定路由方法有两种 ...

  3. 华为路由器vrrp(虚拟路由器冗余协议)基本配置命令

    vrrp(虚拟路由器冗余协议)基本配置 int g0/0/0 vrrp vrid 1 virtual-ip 172.16.1.254 创建VRRP备份组,备份组号为1,配置虚拟IP为172.16.1. ...

  4. VRRP虚拟路由器冗余协议

    VRRP(VirtualRouterRedundancyProtocol,虚拟路由冗余协议)是一种容错协议.通常,一个网络内的所有主机都设置一条缺省路由,这样,主机发出的目的地址不在本网段的报文将被通 ...

  5. 理解 OpenStack 高可用(HA)(2):Neutron L3 Agent HA 之 虚拟路由冗余协议(VRRP)

    本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...

  6. 虚拟路由冗余协议VRRP

    一.VRRP简介 虚拟路由冗余协议VRRP(Virtual Router Redundancy Protocol)通过把几台路由设备联合组成一台虚拟的路由设备,将虚拟路由设备的IP地址作为用户的默认网 ...

  7. 虚拟路由冗余(VRRP)协议

    1. 前言 VRRP(Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,最新协议在RFC3768中定义,原来的定义RFC2338被废除,新协议相对还 ...

  8. K8S学习心得 == 安装虚拟路由器RouterOS

    使用RouterOS, 搭建虚拟路由器,并且配置多个网关互通.配置步骤如下.   基础配置 1. RouterOS 服务器,设置如下             2. VM 不同网段的设置 == 192. ...

  9. Amazon Virtual Private Cloud(虚拟专有网络)官方文档通读

    一.什么是Amazon VPC? 参考资料: 官网文档 https://docs.aws.amazon.com/zh_cn/AmazonVPC/latest/UserGuide/VPC_Introdu ...

随机推荐

  1. ASP Net Core – CORS 预检请求

    CORS(跨源资源共享)是一种机制,它允许同一个来源运行的Web应用程序从在另一个来源运行的服务器访问资源.同源策略是一种非常严格的措施,因为它只允许与服务器起源于同一源的应用程序访问其资源.很多时候 ...

  2. Go - httpclient 常用操作

    httpclient 模块介绍 httpclient 是基于 net/http  封装的 Go HTTP 客户端请求包,支持常用的请求方式.常用设置,比如: 支持设置 Mock 信息 支持设置失败时告 ...

  3. Android事件分发机制四:学了事件分发有什么用?

    " 学了事件分发,影响我CV大法吗?" " 影响我陪女朋友的时间" " ..... " 前言 Android事件分发机制已经来到第四篇了,在 ...

  4. 网络编程中 TCP 半开连接和TIME_WAIT 学习

    https://blog.csdn.net/chrisnotfound/article/details/80112736 上面的链接就是说明来 SO_KEEPALIVE 选项 为什么还需要 在应用层开 ...

  5. libco协程原理简要分析

    此文简要分析一下libco协程的关键原理. 在分析前,先简单过一些协程的概念,以免有新手误读了此篇文章. 协程是用户态执行单元,它的创建,执行,上下文切换,挂起,销毁都是在用户态中完成,对linux系 ...

  6. Webpack4.0各个击破(7)plugin篇

    目录 一. plugin概述 1.1 Plugin的作用 1.2 Compiler 1.3 Compilation 二. 如何写一个plugin 四. 实战 [参考] 一. plugin概述 1.1 ...

  7. (四)整合 RocketMQ ,实现请求异步处理

    整合 RocketMQ ,实现请求异步处理 1.RocketMQ简介 1.1 架构图片 1.2 角色分类 1.3 通信机制 2.实现案例 2.1 项目结构图 2.2 配置文件 2.3 生产者配置 2. ...

  8. 一篇文章图文并茂地带你轻松学完 JavaScript 继承

    JavaScript 继承 在阅读本文章之前,已经默认你了解了基础的 JavaScript 语法知识,基础的 ES6 语法知识 . 继承种类 简单的继承种类可以分为 构造函数继承 原型链继承 clas ...

  9. Hive配置Tez引擎踩坑

    框架版本 Hadoop 2.7.7 Hive 2.3.7 Tez 0.9.2 保证hadoop集群启动,hive元数据服务启动 上传tez到HDFS tar -zxvf apache-tez-0.9. ...

  10. MySQL常用SQL语句2

    -- 1创建student和score表 CREATE TABLE Student( Id INT(10) PRIMARY KEY auto_increment, Name VARCHAR(20) N ...