网关冗余和负载平衡

为了减少交换机故障的影响,交换上有STP技术。然而作为网关的路由器出故障了,又有什么办法?HSRP和VRRP是最常用的网关冗余技术。HSRP和VRRP类似,由多个路由器共同组成一个组,虚拟一个网关,其中的一台路由器处于活动状态,当它出故障时,由备份路由器接替它的工作,从而实现对用户透明的切换。然而我们希望在冗余的同时,能同时实现负载平衡,以充分利用设备的能力,GLBP同时提供了冗余和负载平衡的能力。本章将介绍它们的具体配置。

网关冗余和负载平衡简介

1.1 HSRPHSRP是Cisco的专有协议。

HSRP(Hot Standby Router Protocol)把多台路由器组成一个”热备份组”,形成一个虚拟路由器。这个组内只有一个路由器是活动的(Active),并由它来转发数据包,如果活动路由器发生了故障,备份路由器将成为活动路由器。从网络内的主机来看,网关并没有改变。

HSRP路由器利用Hello包来互相监听各自的存在。当路由器长时间没有接收到Hello包时,就认为活动路由器故障了,备份路由器就会成为活动路由器。HSRP协议利用优先级决定哪个路由器成为活动路由器。如果一个路由器的优先级比其他路由器的优先级高,则该路由器成为活动路由器。路由器的默认优先级是100.在一个组中,最多有一个活动路由器和一个备份路由器。

HSRP路由器发送的多播消息有以下3种。

  • Hello;Hello消息通知其他路由器发送路由器的HSRP优先级和状态信息,HSRP路由器默认为每3 s发送一个Hello消息;
  • Coup;当一个备用路由器变为一个活动路由器时,发送一个Coup消息;
  • Resign;当活动路由器要宕机或者当有优先级更高的路由器发送Hello消息时,主动发送一个Resign消息。

HSRP路由器有以下6种状态。

  • Initial;HSRP启动时的状态,HSRP还没有运行,一般是在改变配置或接口刚刚启动时进入该状态;
  • Learn;路由器已经得到了虚拟IP地址,但是它既不是活动路由器,也不是备份路由器,它一直监听从活动路由器和备份路由器发来的Hello报文;
  • Listen;路由器正在监听Hello消息;

 

 

  • Speak;在该状态下,路由器定期发送Hello报文,并且积极参加活动路由器或备份路由器的竞选;
  • Standby;当活动路由器失效时路由器准备接管数据传输功能;
  • Active;路由器执行数据传输功能。

 

1.2VRRP

VRRP的工作原理和HSRP非常类似,不过VRRP是国际上的标准,允许在不同厂商的设备之间运行。VRRP中虚拟网关的地址可以和接口上的地址相同,VRRP中接口只有3个状态:初始状态(Initialize)、主状态(Master)和备份状态(Backup)。VRRP只有一种报文。

 

1.3GLBP

HSSP和VRRP能实现网关冗余,然而,如果要实现负载平衡,需要创建多个组,并让客户端指向不同的网关。GLBP(Gateway Load Balance Protocol)也是Cisco的专有协议,不仅提供冗余网关功能,还在各网关之间提供负载均衡。GLBP也是由多个路由器组成一个组,虚拟一个网关出来。GLBP选举出一个AVG(Avtive Virtual Gateway),AVG不是负责转发数据的。AVG分配最多4个MAC地址给一个虚拟网关,并在计算机进行ARP请求时,用不同的MAC进行响应,这样计算机实际就把数据发送给不同的路由器了,从而实现负载平衡。在GLBP中,真正负责转发数据的是AVF(Avtive Virtual Forawarder),GLBP会控制GLBP组中哪个路由器是哪个MAC地址的活动路由器。

AVG的选举和HRSP中活动路由器的选举非常类似,优先级最高的路由器成为AVG,次之的为Abckup AVG,其余的为监听状态。一个GLBP组只能有一个AVG和一个Backup AVG,主AVG失败,备份AVG顶上。一台路由器可以同时是AVG和AVF。AVF是某些MAC的活动路由器,也就是说,如果计算机把数据发往这个MAC,它将接收。当某一MAC的活动路由器有故障时,其他AVF将成为这一MAC的新的活动路由器,从而实现冗余功能GLBP的负载平衡策略可以根据不同主机、简单地轮询,或者根据路由器的权重平衡,默认是轮询方式。

 

2 实验1:HSRP

1.实验目的

通过本实验,读者可以掌握如下技能:

  • 理解HSRP的工作原理;
  • 掌握HSRP的配置

2.实验拓扑

实验拓扑图如图16-1所示。

 

 

网关冗余和负载平衡

图16-1 实验1和实验2拓扑图

3.实验步骤

(1)步骤1:配置IP地址和路由协议等

R1(config)#interface GigabitEthernet0/0

R1(config-if)#ip address 192.168.13.1 255.255.255.0

R1(config)#interface Serial0/0/0

R1(config-if)#ip address 192.168.12.1 255.255.255.0

R1(config)#router rip

R1(config-router)#network 192.168.12.0

R1(config-router)#network 192.168.13.0

R1(config-router)#passive-interface GigabitEthernet0/0

//之所以把g0/0接口设为被接口,是为了防止从该接口发送RIP信息给R3



R2(config)#interface GigabitEthernet0/0

R2(config-if)#ip address 192.168.20.2 255.255.255.0

R2(config)#interface Serial0/0/0

R2(config-if)#clock rate 128000

R2(config-if)#ip address 192.168.12.2 255.255.255.0

R2(config)#interface Serial0/0/1

R2(config-if)#clock rate 128000

R2(config-if)#ip address 192.168.23.2 255.255.255.0

R2(config)#router rip

R2(config-router)#network 192.168.12.0

R2(config-router)#network 192.168.13.0

R2(config-router)#network 192.168.20.0

R2(config-router)#passive-interface GigabitEthernet0/0



R3(config)#interface GigabitEthernet0/0

R3(config-if)#ip address 192.168.13.3 255.255.255.0



R3(config)#interface Serial0/0/1

R3(config-if)#ip address 192.168.23.3 255.255.255.0

R3(config)#router rip

R3(config-router)#network 192.168.23.0

R3(config-router)#network 192.168.13.0

R3(config-router)#passive-interface GigabitEthernet0/0



(2)步骤2:配置HSRP

R1(config)#interface g0/0

R1(config-if)#standby 1 ip 192.168.13.254

//启用HSRP功能,并设置虚拟IP地址,1为Standby的组号。相同组号的路由器属于同一个HSRP组,所有属于同一个HSRP组的路由器的虚拟地址必须一致

R1(config-if)#standby 1 priority 120

//配置HSRP的优先级,如果不设置该项,默认优先级为100 ,该值越大,抢占为活动路由器的优先权越高

R1(config-if)standby 1 preempt

//该设置允许该路由器在优先级是最高时成为活动路由器。如果不设置,即使该路由器权值再,也不会成为活动路由器

R1(config-if)#standby 1 timer 3 10

//其中3为Hello Time,表示路由器每间隔多长时间发送Hello信息。10为Hold Time,表示在多长时间内同组的其他路由器没有收到活动路由器的信息,则认为活动路由器出故障了。该设置的默认值分别为3 s和10 s 。如果要更改默认值,所有同HSRP组的路由器的该项设置必须一致

R1(config-if)#standby 1 authentication md5 key-string cisco

//以上是配置认证密码,防止非法设备加入到HSRP组中,同一个组的密码必须一致



R2(config)#interface g0/0

R2(config-if)#standby 1 ip 192.168.13.254

R2(config-if)standby 1 preempt

R2(config-if)#standby 1 timer 3 10

R2(config-if)#standby 1 authentication md5 key-string cisco

//R2上我们没有配置优先级,默认为100

(3)步骤3:检查、测试HSRP

R1#show standby brief

 

                  P indicates configured to preempt.

                  |

Interface Grp  Pri   P  State      Active      Standby         Virtual IP

 Gi0/0    1   120  P  Active         local      192.168.13.3     192.168.13.254

//以上表明R1就是活动路由器,备份路由器为192.168.13.3  

 

R3#show standby brief

                  P indicates configured to preempt.

                  |

Interface Grp  Pri   P  State      Active      Standby         Virtual IP

 Gi0/0    1   100  P  Standby  192.168.13.1  local          192.168.13.254

//以上表明R3是备份路由器,活动路由器为192.168.13.1  

在PC1上配置IP地址192.168.13.100/24,网关指向192.168.13.254;在PC3上配置IP地址192.168.20.100/24,网关指向192.168.20.254.注意去掉另一网卡的网关。

在PC1上连续ping PC3上,在R1上关闭g0/0接口观察PC1上ping 的结果。如下:

C;\>ping –t 192.168.20.100

Reply from 192.168.20.100; bytes=32 time=9ms TTL=254

Reply from 192.168.20.100; bytes=32 time=9ms TTL=254

Reply from 192.168.20.100; bytes=32 time=9ms TTL=254

Request timed out.

Reply from 192.168.20.100; bytes=32 time=9ms TTL=254

Reply from 192.168.20.100; bytes=32 time=9ms TTL=254

Reply from 192.168.20.100; bytes=32 time=9ms TTL=254

Reply from 192.168.20.100; bytes=32 time=11ms TTL=254

Reply from 192.168.20.100; bytes=32 time=9ms TTL=254

//以上可以看到,R1故障时,R3很快就替代了R1,通信只受到短暂的影响

 

 

R3#show standby brief

                  P indicates configured to preempt.

                  |

Interface Grp  Pri   P  State      Active      Standby         Virtual IP

 Gi0/0    1   100  P  Active  local        unknown       192.168.13.254

以上表明R3成为活动路由器

(4)步骤4:配置端口跟踪

在图16-1中,按照以上步骤的配置,如果R1的s0/0/0接口出现问题,R1将没有到达PC3所在网段的路由。然而,R1和R3之间的以太网仍然没有问题,HSRP的Hello包正常发送和接收。因此,R1仍然是虚拟网关192.168.13.254的活动路由器,PC1数据会发送给R1,这样会造成PC1无法ping 通R3.可以配置端口跟踪解决这个问题,端口跟踪使得R1在发现s0/0/0上链路出现问题后,把自己的优先级(设为120)减去一个数字(如30),成为了90 。由于R3的优先级为默认值100,R3就成为活动路由器。配置如下:

R1(config)#int g0/0

R1(config-ig)#standby 1 track s0/0/0 30

//以上表明跟踪的是s0/0/0接口,如果该接口出故障了,优先级降低30.降低的值应该选择合适的值,使得其他路由器能成为活动路由器。按照步骤3测试HSRP的端口跟踪是否生效

(5)步骤5:配置多个HSRP组

之前的步骤已经虚拟了192.168.13.254网关,对于这个网关只能有一个活动路由器,于

 

是活动路由器将承担全部的数据流量。可以再创建一个HSRP组,虚拟出另一个网关192.168.13.253,这时,R3是活动路由器,让一部分计算机指向这个网关,这样就能做到负载平衡。以下是创建2个HSRP给的完整配置。

在R1上:

interface GigabitEthernet0/0

standby 1 ip 192.168.13.254

standby 1 priority 120

standby 1 preempt

standby 1 authentication md5 key-string cisco

standby 1 track Serial0/0/0 30

standby 2 ip 192.168.13.253

standby 2 preempt

standby 2 authentication md5 key-string cisco

在R3上:

interface GigabitEthernet0/0

standby 1 ip 192.168.13.254

standby 1 preempt

standby 1 authentication md5 key-string cisco

standby 2 ip 192.168.13.253

standby 2 priority 120

standby 2 preempt

standby 2 authentication md5 key-string cisco

standby 2 track Serial0/0/0 30

【技术要点】

我们这里是创建了两个HSRP组,第一个组的IP为192.168.13.254,活动路由器为R1,一部分计算机的网关指向192.168.13.254 。第二个组的IP为192.168.13.253,活动路由器为R2,另一部分计算机的网关指向192.168.13.253 。这样,如果网络全部正常时,一部分数据是R1转发的,另一部分数据是R2转发的,实现了负载平衡。如果一个路由器出现问题,则另一个路由器就成为两个HSRP组的路由器,承担全部的数据转发功能。通过这种方式实现负载平衡,需要计算机在设置网关时有所不同,如果计算机的IP是DHCP分配的,就不太方便了。

【技术要点】

HSRP实际上在局域网用得较多,由于局域网内大多使用3层交换机,所以,这时HSRP是在交换机上配置的。

 

 

3 实验2:VRRP

1.实验目的

通过本实验,读者可以掌握如下技能:

  • 理解VRRP的工作原理:
  • 掌握VRRP的配置

2.实验拓扑

实验拓扑图如图16-1所示。

网关冗余和负载平衡

图16-1 实验1和实验2拓扑图

 

3.实验步骤

VRRP的配置和HSRP的配置基本相同,这里不再重复其步骤。

(1)步骤1:配置IP地址和路由协议等

参见实验1.

(2)步骤2:配置多个VRRP组并跟踪接口

在R1上:

R1(config)#track 100 interface Serial0/0/0 line-protocol

R1(config)#interface GigabitEthernet0/0

R1(config-if)#vrrp 1 ip 192.168.13.254

R1(config-if)#vrrp 1 priority 120

R1(config-if)#vrrp 1 preempt

R1(config-if)#vrrp 1authentication md key-string cisco

R1(config-if)#vrrp 1 track 100 decrement 30

R1(config-if)#vrrp 2 ip 192.168.13.253

R1(config-if)#vrrp 2 preempt

R1(config-if)#vrrp 2 authentication md5 key-string cisco

//VRRP的端口跟踪和HSRP有些不同,需要在全局配置模式下,先定义跟踪目标,才配置VRRP中跟踪该目标,这里定义目标100是s0/0/0接口

在R3上:

R3(config)#track 100 interface Serial0/0/0 line-protocol

R3(config)#interface GigabitEthernet0/0

R3(config-if)#vrrp 1 ip 192.168.13.254

R3(config-if)#vrrp 1 preempt

R3(config-if)#vrrp 1authentication md key-string cisco

R3(config-if)#vrrp 2 ip 192.168.13.253

R3(config-if)#vrrp 2 priority 120

R3(config-if)#vrrp 2 preempt



R3(config-if)#vrrp 2 authentication md5 key-string cisco

R3(config-if)#vrrp 3 track 100 decrement 30



R1#show vrrp brief

Interface    Grp    Pri    Time    Own    Pre    State    Master addr    Group addr

Gi0/0        1     120    3531            Y     Master  192.168.13.1    192.168.13.254

Gi0/0        2     100    3609            Y     Backup  192.168.13.3    192.168.13.253

//以上表明R1是192.168.13.254虚拟网关的Master路由器,是192.168.13.253虚拟网关的Backup路由器



R3#show vrrp brief

Interface    Grp    Pri    Time    Own    Pre    State    Master addr    Group addr

Gi0/0        1     100    3609            Y     Backup  192.168.13.1    192.168.13.254

Gi0/0        2     120    3531            Y     Master  192.168.13.3    192.168.13.253

//以上表明R3是192.168.13.253虚拟网关的Master路由器,是192.168.13.254虚拟网关的Backup路由器

(3)步骤3:检查、测试HSRP

参见实验1 。

 

 

4 实验3:GLBP

1.实验目的

通过本实验,读者可以掌握如下技能:

  • 理解GLBP的工作原理;
  • 掌握GLBP的配置。

2.实验拓扑

实验拓扑图如图16-2所示。

网关冗余和负载平衡

图16-2 实验3拓扑

 

3.实验步骤

(1)步骤1:配置IP地址和路由协议等

R1(config)#interface GigabitEthernet0/0

R1(config-if)#ip address 192.168.1.1 255.255.255.0

R1(config)#interface GigabitEthernet0/1

R1(config-if)#ip address 192.168.2.1 255.255.255.0

R1(config)#router rip

R1(config-router)#network 192.168.1.0

R1(config-router)#network 192.168.2.0

R1(config-router)#passive-interface GigabitEthernet0/0



R2(config)#interface GigabitEthernet0/0

R2(config-if)#ip address 192.168.1.2 255.255.255.0

R2(config)#interface GigabitEthernet0/1

R2(config-if)#ip address 192.168.2.2 255.255.255.0

R2(config)#router rip

R2(config-router)#network 192.168.1.0

R2(config-router)#network 192.168.2.0

R2(config-router)#passive-interface GigabitEthernet0/0



R3(config)#interface GigabitEthernet0/0

R3(config-if)#ip address 192.168.1.3 255.255.255.0

R3(config)#interface GigabitEthernet0/1

R3(config-if)#ip address 192.168.2.3 255.255.255.0

R3(config)#router rip

R3(config-router)#network 192.168.1.0

R3(config-router)#network 192.168.2.0

R3(config-router)#passive-interface GigabitEthernet0/0



R3(config)#interface Loopback0

R3(config-if)#ip address 4.4.4.4 255.0.0.0

R3(config)#interface GigabitEthernet0/1

R3(config-if)#ip address 192.168.2.4 255.255.255.0

R3(config)#router rip

R3(config-router)#network 4.0.0.0

R3(config-router)#network 192.168.2.0

R3(config-router)#passive-interface GigabitEthernet0/0



(2)步骤2:配置GLBP

R1(config)#interface GigabitEthernet0/0

R1(config-if)#glbp 1 ip 192.168.1.254



//和HSRP类似,创建GLBP组,虚拟网关的IP为192.168.1.254

R1(config-if)#glbp 1 priority 200

//配置优先级,优先级高的路由器成为AVG,默认为100

R1(config=if)#glbp 1 preempt

//配置AVG抢占,否则即使优先级再高,也不会成为AVG

R1(config-if)#glbp 1 authentication md5 key-0-string cisco

//以上是配置认证,防止非法设备接入



R2(config)#interface GigabitEthernet0/0

R2(config-if)#glbp 1 ip 192.168.1.254

R2(config-if)#glbp 1 priority 180

R2(config=if)#glbp 1 preempt

R2(config-if)#glbp 1 authentication md5 key-0-string cisco



R3(config)#interface GigabitEthernet0/0

R3(config-if)#glbp 1 ip 192.168.1.254

R3(config-if)#glbp 1 priority 160

R3(config=if)#glbp 1 preempt

R3(config-if)#glbp 1 authentication md5 key-0-string cisco

(3)步骤3:查看GLBP信息

R1#show glbp

GigabitEthernet0/0 – Group 1

State is Active

   4 state changes, last state change 00;18;16

Virtual IP address is 192.168.1.254

//以上是虚拟的IP地址

Hello time 3 sec,hold time 10 sec

  Next Hello sent in 1.896 secs

Redirect time 600 sec ,forwarder time-out 14400 sec

Authentication MD5,key-string”cisco”

Preemption enabled,min delay 0 sec

Active is local

//以上说明R1是活动AVG

Standby is 192.168.1.2,priority 180 (expires in 9.892 sec)  

//以上说明R2是备份AVG

Priority 200(configured)

Weighting 100(default 100),thresholds;lower 1 ,upper 100

Load balancing;round-robin

Group members;

0019.5535.b548(192.168.1.3)authenticated

 

0019.5535.b828(192.168.1.1)local

0019.5566.6320(192.168.1.2)authenticated

//以上显示GLBP组中的成员

There are 3 forwarders(1 active)Forwarder 1

   State is Listen

      4 state changes,last state change 00;17;08

MAC address is 0007.b400.0101(learnt)

//这是虚拟网关的其中一个MAC

Owner ID is 0019.5535.b548

Redirection enabled,599.984 sec remaining(maximum 600 sec)

Time to live;14399.984 sec (maximum 14400 sec)

Preemption enabled,min delay 30 sec

Active is 192.168.1.3(primary),weighting 100(expires in 9.984 sec)

Client selection count;1

Forwarder 2

State is Active

   3 state changes,last state change 00;18;28

MAC address is 0007.b400.0102(default)

//以上说明R1是0007.b400.0102的活动路由器,也就是说,如果计算机把数据发往0007.b400.0102,将由R1接收数据,再进行转发

Owner ID is 0019.5535.b828

Redirection enabled

Preemption enabled,min delay 30 sec

Active is local,weighting 100

Client selection count;1

Forwarder 3

State is Listen

   2 state changes,last state change 00;18;06

MAC address is 0007.b400.0103(learnt)

Owner ID is 0019.5566.6320

Redirection enabled, 597.980 sec remaining(maximum 600 sec)

Time to live;14397.980 sec (maximum 14400 sec)

Preemption enabled,min delay 30 sec

Active is 192.168.1.2(primary),weighting 100(expires in 7.980 sec)

通过查看,可以知道

  1. R1;0007.b400.0102的活动路由器;
  2. R2;0007.b400.0103的活动路由器;
  3. R3;0007.b400.0101的活动路由器。

(4)步骤4:检查GLBP的负载平衡功能

在PC1上配置IP地址,网关指向192.168.1.254,并进行如下操作。

 

C;\>ping 4.4.4.4

C;\>arp –a

Interface;192.168.1.100---0x10006

   Internet Address      Physical Address    Type

   192.168.1.254        00-07-b4-00-01-01   dynamic

以上表明PC1的ARP请求获得网关(192.168.1.254)的MAC为00-07-b4-00-01-01

C;\>arp –d

//上以是删除ARP缓冲表

C;\>ping 4.4.4.4

C;\>arp –a

Interface;192.168.1.100---0x10006

   Internet Address      Physical Address    Type

   192.168.1.254        00-07-b4-00-01-02   dynamic

以上表明PC1的再次ARP请求获得网关(192.168.1.254)的MAC为00-07-b4-00-01-02,也就是说,在GLBP响应ARP请求时,每次会用不同的MAC响应,从而实现负载平衡。

【提示】

默认时,GLBP的负载平衡策略是轮询方式,可以在接口下使用”glbp 1 load-balancing”命令修改,有以下选项:

  1. host-dependent:根据不同主机的源MAC地址进行平衡;
  2. round-robin:轮询方式,即每响应一次ARP请求,轮换一个地址;
  3. weighted:根据路由器的权重分配,权重高的被分配的可能性越大。

(5)步骤5:检查GLBP的冗余功能

首先在PC1上用”arp –a”命令确认192.168.1.254的MAC地址是什么,从而确定出当前空间是哪个路由器在实际转发数据。在这里,192.168.1.254的MAC地址为00-07-b4-00-01-02,从步骤3得知是R1在转发数据。

在PC1上连续ping 4.4.4.4,并在R1上关闭g0/0接口,观察PC1的通信情况:

C;\>ping –t 4.4.4.4

Reply from 4.4.4.4; bytes=32 time<1ms TTL=254

Reply from 4.4.4.4; bytes=32 time<1ms TTL=254

Request timed out.

Request timed out.

Reply from 4.4.4.4; bytes=32 time<1ms TTL=254

Reply from 4.4.4.4; bytes=32 time<1ms TTL=254

//可以看到R1出故障后,其他路由器很快接替了它的工作,计算机的通信只受到短暂的影响。因此GLBP不仅有负载平衡的能力,也有冗余的能力。可以使用”show glbp”命令查看一下认认谁是00-07-b4-00-01-02这个MAC的新的活动路由器

 

 

5 网关冗余及负载平衡命令汇总

表16-1是本章出现的命令

表16-1 本章命令汇总

命令

作用

standby 1 ip 192.168.13.254

启用HSRP功能,并设置虚拟IP地址

standby 1 priority 120

配置本路由器的HSRP优先级

standby 1 preempt

配置HSRP抢占

standby 1 timers 3 10

设置HSRP的Hello Time 和Hold Time

standby 1 authentication md5 key-string cisco

配置HSRP认证密码,认证方式为MD5

show standby brief

查看HSRP的简要情况

standby 1 track Serial0/0/0 30

跟踪s0/0/0接口,当接口故障时,HSRP优先级降低30

vrrp 1 ip 192.168.13.254

启用VRRP功能,并设置虚拟IP地址

vrrp 1 priority 120

配置本路由器的VRRP优先级

vrrp 1 preempt

配置VRRP抢占

vrrp 1 authentication md5 key-string cisco

配置VRRP认证密码,认证方式为MD5

track 100 interface Serial0/0/0 line-protocol

定义一个跟踪目标号,被跟踪对象为s0/0/0接口

vrrp 1 track 100 decrement 30

跟踪目标100,当目标故障时,优先级降低30

show vrrp brief

查看VRRP的简要情况

glbp 1 ip 192.168.1.254

启用GLBP功能,并设置虚拟IP地址

flbp 1 priority 200

配置本路由器的GLBP优先级

glbp 1 preempt

配置GLBP抢占

glbp 1 authentication md5 key-string cisco

配置GLBP认证密码,认证方式为MD5

show glbp

查看GLBP情况