登陆

在Cisco IOS上运用PBR、SLA和EEM完成双线冗余和负载均衡

admin 2019-09-07 183人围观 ,发现0个评论

跟着信息化工作越来越遍及,人们工作对互联网的依靠越来越大,IT、网络在企业中的影响也越来越大。因而,企业网络的可靠性变得十分重要。关于一个互联网公司或许运用需求运用网络才干正常工作的公司来说,断网意味着职工不能正常工作,公司大把的金钱丢掉。在这样一种布景下,大型公司和金融职业早已完结了双线或多线冗余,而一些中心型企业因为预算等问题还忍受着这样的苦恼。本文将为中小型企业供给一套完美的解决方案,经过已有设备或较低的预算即完结双线冗余、负载均衡与主动切换。

网络出口拓扑图:

网络出口拓扑图


笔者经过以上的拓扑图进行一个归纳事例解说。拓扑1和拓扑2不同之处在于拓扑1比拓扑2多了一个路由器的设备冗余,而且PBR和SLA等战略是做在中心交流机上的;而拓扑2路由器则承当了PBR、SLA等功用。

拓扑1解说:两台路由器别离接入联通和电信网络,路由器需求指一条默许路由到运营商,内部能够运用静态路由或动态路由,路由器履行NAT功用,将内网的私服网IP地址转换成公网IP地址。在三层交流机上运用默许路由指向R2,运用PBR将一部分流量指向R1,完结负载均衡;当R1毛病后,PBR主动失效,一切流量去往R2,在交流机上运用起浮路由指向R1,来完结当R2毛病后一切流量都切换到R1。

留意:一般状况引荐链路大、安稳的链路运用默许路由。这儿需求留意的是,假如内部有服务器需求对外供给服务的话,最好将服务器放在默许路由的链路上,当然也能够在两台路由器都做NAT,经过DNS来操控外部流量拜访;在做PBR的时分也要扫除本地服务器的地址;假如有VPN流量的话,还要留意VPN流量的操控。

  1. 运用PBR完结依据VLAN的负载均衡

PBR(Policy-Based Routing) 依据战略的路由。咱们都知道路由是根本意图IP地址进行转发,当一个数据包抵达路由器今后,路由器默许并不检查该数据包的源IP地址,只看意图IP地址,然后查路由表,进行与运算,最终封装新的二层头部将其转宣布去。而PBR则是依据IP包的源IP地址进行转发,咱们能够手艺界说匹配到的哪些源IP地址发往哪个接口。例如源是1.1.X.X的IP包下一跳从S0接口宣布,而源地址是1.2.X.X的包从S1接口宣布。PBR要优先于路由表,当PBR失效后,所匹配的数据包仍然会履行默许的路由转发规矩。思科、华为、华为等企业级路由器和三层交流机一般都支撑PBR的功用,只是具体操作上或许有所不同,原理大同小意。

咱们经过运用PBR来完结依据VLAN的负载均衡,例如公司有600人,每100人区分一个VLAN,共6个VLAN。这样咱们让前VLAN 1 2 3经过默许路由走电信链路,让VLAN 4 5 6经过PBR走联通链路。

PBR的失效:当PBR失效后,一切流量都会经过路由表进行转发。PBR经过ARP刷新来判别失效,如图1所求,当R1整台路由器失效或接口down后,SW能立刻感知到,这时分PBR失效;假如R1只是是接口IP被删去,SW需求经过等候ARP老化来判别PBR失效,假如是R1衔接的运营商链路失效,则SW无法判别出来(经过后边讲到的SLA来判别)

2. 运用静态起浮路由完结双线冗余

咱们知道一般在路由器出口会写一条默许路由指向运营商,当双线接入的时分咱们运用静态起浮路由来完结对默许路由的冗余。咱们知道静态路由的办理间隔默许为1,咱们在SW上把默许路由指向R2,再写一条办理间隔为5(只需大于1即可)的默许路由,当AD为1的路由存在的时分,AD为5的路由就不会呈现在路由器,只要当AD为1的路由失效今后,AD为5的路由才出浮出路由表发挥效果。这样,当R2失效今后,AD为5的路由起效果,来完结对默许路由的备份。

3. 运用SLA完结双线冗余

虽然咱们看起来现现已过PBR和起浮路由完结了冗余功用,但实际状况并不是这样。路由器坏的几率很小,接口坏或网络坏的几率就更小了,更多的状况是运营商的链路呈现了问题。这样的话,SW是感知不到问题的发作的,仍是需求人为干涉。为此,咱们引进了思科SLA技能(其他厂商也有相似技能,例如华为的NQA)。SLA能够经过发送ICMP包等信息来判别链路的好坏和质量。静态路由能够联合SLA,当一个IP地址失效今后,该静态路由失效。例如,经过SLA来ping 8.8.8.8这个IP地址,当10个包丢掉今后,咱们以为这个IP失效,track了这个SLA的静态路由失效。

4. 运用PBR结合SLA&EEM完结依据VLAN的负载和冗余

但是咱们在运用了SLA后,当电信运营商毛病后,默许路由能够很好地从路由器消失,起浮路由收效。但假如是联通毛病,SLA能够感知到,却什么也做不了,PBR仍然在收效。这时分咱们再引进一个技能,思科EEM。EEM联合SLA,能够在被检测的IP失效后,主动shutdown SW衔接R1的端口,使PBP失效,流量被切换到R2。

要点:双线冗余能够经过多种技能在路由器上完结,这儿运用PBR只是起到一个抛砖引玉的效果。引进了SLA和EEM是为了给咱们介绍两种新的技能。SLA和EEM能够完结的功用许多,超强壮,假如有需求的童鞋能够研讨研讨。

归纳试验:

拓扑图如下:

拓扑图


咱们用R1和R5来别离模仿两台衔接不同运营商的路由器,用R6来模仿中心交流机,R7和R8来模仿PC1和PC2,充任不同的VLAN,图中的交流机是一个傻瓜交流机,只是起到一个衔接效果。运用R2和R4来模仿联通和电信的路由器设备,最右面的R3来模仿互联网上的一台要被拜访的设备。为了更为实在,咱们在R1和R5进行NAT装备,将企业内部的私网IP转换成公网IP。

根本装备如下:

运营商路由器装备:

R2装备:

R2(config)#int s1/0

R2(config-if)#ip add 12.1.1.2 255.255.255.0

R2(config-if)#no shut

R2(config-if)#int s1/1

R2(config-if)#ip add 23.1.1.2 255.255.255.0

R2(config-if)#no shut

R2(config-if)#router rip

R2(config-router)#ver 2

R2(config-router)#no auto

R2(config-router)#net 23.0.0.0

R2(config-router)#net 12.0.0.0

//运用动态路由协议将R2、R3和R4之间的网络连通。

R3装备:

R3(config)#int s1/0

R3(config-if)#ip add 23.1.1.3 255.255.255.0

R3(config-if)#no shut

R3(config-if)#int s1/1

R3(config-if)#ip add 34.1.1.3 255.255.255.0

R3(config)#int lo0

R3(config-if)#ip add 3.3.3.3 255.255.255.0

R3(config-if)#router rip

R3(config-router)#ver 2

R3(config-router)#no auto

R3(config-router)#net 3.0.0.0

R3(config-router)#net 23.0.0.0

R3(config-router)#net 34.0.0.0

R4装备:

R4(config)#int s1/0

R4(config-if)#ip add 34.1.1.4 255.255.255.0

R4(config-if)#no shut

R4(config-if)#int s1/1

R4(config-if)#ip add 45.1.1.4 255.255.255.0

R4(config-if)#no shut

R4(config-if)#router rip

R4(config-router)#ver 2

R4(config-router)#no auto

R4(config-router)#net 34.0.0.0

R4(config-router)#net 45.0.0.0

出口网关路由器装备:

R1装备:

R1(config)#int s1/1

R1(config-if)#ip add 12.1.1.1 255.255.255.0

R1(config-if)#ip nat outside

R1(config-if)#no shut

R1(config-if)#int f0/0

R1(config-if)#ip add 172.16.1.1 255.255.255.0

R1(config-if)#ip nat inside

R1(config-if)#no shut

R1(config-if)#ip route 0.0.0.0 0.0.0.0 12.1.1.2

R1(config-if)#access-list 100 permit ip 172.16.0.0 0.0.255.255 any

R1(config)#ip nat inside source list 100 interface s1/1 overload

//在R1上做NAT装备,将企业内部的私服网IP转换成公网IP地址。

R1(config)#router rip

R1(config-router)#ver 2

R1(config-router)#no auto

R1(config-router)#net 172.16.0.0

//R1、R5、R6运转动态路由协议,或许在R1上运用静态路由指向R6.

R5装备:

R5(config)#int s1/0

R5(config-if)#ip add 45.1.1.5 255.255.255.0

R5(config-if)#ip nat outside

R5(config-if)#no shut

R5(config-if)#int f0/0

R5(config-if)#ip add 172.16.1.5 255.255.255.0

R5(config-if)#ip nat inside

R5(config-if)#no shut

R5(config-if)#ip route 0.0.0.0 0.0.0.0 45.1.1.4

R5(config)#access-list 100 permit ip 172.16.0.0 0.0.255.255 any

R5(config)#ip nat inside source list 100 interface s1/0 overload

R5(config)#router rip

R5(config-router)#ver 2

R5(config-router)#no auto

R5(config-router)#net 172.16.0.0

模仿交流机装备:

R6装备:

R6(config)#int f0/0

R6(config-if)#ip ad 172.16.1.6 255.255.255.0

R6(config-if)#no shut

R6(config-if)#int f2/0

R6(config-if)#ip add 172.16.2.1 255.255.255.0

R6(config-if)#no shut

R6(config-if)#router rip

R6(config-router)#ver 2

R6(config-router)#no auto

R6(config-router)#net 172.16.0.0

PC装备:

PC1(config)#no ip routing

//在路由器关掉路由功用,模仿PC

PC1(config)#int f2/0

PC1(config-if)#ip add 172.16.2.2 255.255.255.0

PC1(config-if)#no shut

PC1(config-if)#ip default-gateway 172.16.2.1

//PC需求装备网关

PC2(config)#no ip routing

PC2(config)#int f2/0

PC2(config-if)#ip add 172.16.2.3 255.255.255.0

PC2(config-if)#no shut

PC2(config-if)#ip default-gateway 172.16.2.1

静态路由与起浮起浮静态路由装备

R6(config)#ip route 0.0.0.0 0.0.0.0 172.16.1.5

R6(config)#ip route 0.0.0.0 0.0.0.0 172.16.1.1 5

//处此装备在后期需求删去从头装备,参加track,联合SLA.

检查路由器,只要第一条。

R6#show ip route

172.16.0.0/24 is subnetted, 2 subnets

C 172.16.1.0 is directly connected, FastEthernet0/0

C 172.16.2.0 is directl在Cisco IOS上运用PBR、SLA和EEM完成双线冗余和负载均衡y connected, FastEthernet2/0

S* 0.0.0.0/0 [1/0] via 172.16.1.5

PBR装备:

R6(config)#ip access-list extended cnc

R6(config-ext-nacl)#permit ip host 172.16.2.2 any

//先写一个ACL,来匹配需求被PBR射中的IP,便是需求经过R1路由器走的主机。

R6(config)#route-map pbr-cnc permit 10

R6(config-route-map)#match ip address cnc

R6(config-route-map)#set ip next-hop 172.16.1.1

//写一个route-map,匹配刚刚写的ACL,设置下一跳为R1的IP地址。

R6(config)#int f2/0

R6(config-if)#ip policy route-map pbr-cnc

//在F2/0接口调用PBR,留意PBR是在入接口进行调用的。

留意:

假如是3560X-E交流机,在运用PBR在接口的时分或许会发作报错信息,这时分需求将SDM进行设新抚网置

sdm prefer routing //大局运用该指令

重启交流机

现在现已完结了依据源的负载均衡:

在R3上敞开debug进行测验,假如源是12.1.1.1的,阐明是走的R1;假如源是45.1.1.5,阐明走的是R2

R3#debug i在Cisco IOS上运用PBR、SLA和EEM完成双线冗余和负载均衡p icmp

ICMP packet debugging is on

R7 Ping 3.3.3.3来进行测验:

PC1#ping 3.3.3.3

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 24/40/56 ms

在R3上检查成果:

*Jun 11 15:07:00.091: ICMP: echo reply sent, src 3.3.3.3, dst 12.1.1.1

*Jun 11 15:07:00.131: ICMP: echo reply sent, src 3.3.3.3, dst 12.1.1.1

*Jun 11 15:07:00.155: ICMP: echo reply sent, src 3.3.3.3, dst 12.1.1.1

*Jun 11 15:07:00.171: ICMP: echo reply sent, src 3.3.3.3, dst 12.1.1.1

*Jun 11 15:07:00.223: ICMP: echo reply sent, src 3.3.3.3, dst 12.1.1.1

运用traceroute来验证:

PC1#traceroute 3.3.3.3

Type escape sequence to abort.

Tracing the route to 3.3.3.3

1 172.16.2.1 28 msec 16 msec 4 msec

2 172.16.1.1 4 msec 44 msec 20 msec

3 12.1.1.2 28 msec 12 msec 20 msec

4 23.1.1.3 16 msec 24 msec *

R8 Ping 3.3.3.3

PC2#ping 3.3.3.3

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 20/32/48 ms

在R3上检查成果

*Jun 11 15:07:02.375: ICMP: echo reply sent, src 3.3.3.3, dst 45.1.1.5

*Jun 11 15:07:02.403: ICMP: echo reply sent, src 3.3.3.3, dst 45.1.1.5

*Jun 11 15:07:02.455: ICMP: echo reply sent, src 3.3.3.3, dst 45.1.1.5

*Jun 11 15:07:02.471: ICMP: echo reply sent, src 3.3.3.3, dst 45.1.1.5

*Jun 11 15:07:02.527: ICMP: echo reply sent, src 3.3.3.3, dst 45.1.1.5

PC2#traceroute 3.3.3.3

Type escape sequence to abort.

Tracing the route to 3.3.3.3

1 172.16.2.1 8 msec 8 msec 4 msec

2 172.16.1.5 12 msec 8 msec 16 msec

3 45.1.1.4 20 msec 68 msec 16 msec

4 34.1.1.3 56 msec * 24 msec

装备SLA和EEM:

R6(config)#ip sla 2

R6(config-ip-sla)# icmp-echo 12.1.1.2 source-interface loopback0

R6(config-ip-sla-echo)# frequency 10

R6(config-ip-sla-echo)#ip sla schedule 2 life forever start-time now

//装备一个IP SLA 命名为2,用Loopback接口做为源IP地址,运用ICMP侦测12.1.1.2这个IP地址

R6(config)#ip sla 3

R6(config-ip-sla)# icmp-echo 45.1.1.4 source-interface loopback0

R6(config-ip-sla-echo)# frequency 10

R6(config-ip-sla-echo)#ip sla schedule 3 life forever start-time now

//装备一个IP SLA 命名为3,用Loopback接口做为源IP地址,运用ICMP侦测45.1.1.4这个IP地址

R6(config)#track 2 ip sla 2 reachability

//装备一个track,盯梢 ip sla 2 的可达性

R6(config)#track 3 ip sla 3 reachability

R6(config)#track 200 ip sla 2

//装备一个taack 200,盯梢 ip sla 2的状况

R6(config)#ip route 0.0.0.0 0.0.0.0 172.16.1.1 5 track 2

//删去刚刚写的默许路由和起浮路由,从头增加,而且在路由后边加一个track。当track2 失效后,则该路由失效,这一条路由加track其实含义并不大

R6(config)#ip route 0.0.0.0 0.0.0.0 172.16.1.5 track 3

//从头增加默许路由,并加track.当IP SLA3 所监测的IP地址不可达今后,触发track3,track3失效;当track3失效今后,该默许路由失效。这时,装备了AD为5的并一条起浮路由浮出路由表,收效,转发数据。便是说当默许路由指向的运营商链路(电信链路)失效后,运用SLA和起浮路由即可进行切换,不需求用到EEM。

R6(config)#ip route 23.1.1.2 255.255.255.255 172.16.1.1

R6(config)#ip route 34.1.1.4 255.255.255.255 172.16.1.5

//这两条路由很重要,因为PBR是调用在F2/0接口的,只要F2/0进来的流量才会履行PBR。而咱们需求监测23.1.1.2(联通IP)的时分把数据包扔向R1,监测34.1.1.4(电信IP)的时分把数据包扔向R2。全默许路由都指向R2,不符合咱们的需求。因而,需求增加这两条静态路由完结上述需求。

R6(config)#int lo 0

R6(config-if)#ip add 172.16.3.1 255.255.255.0

//为刚刚写的SLA增加Loopback接口IP地址,用于做为监测的源IP地址

R6(config)#event manager applet SP-down

R6(config-applet)# event track 200 state down

R6(config-applet)# action 1.1 cli command "en"

R6(config-applet)# action 2.1 cli command "conf t"

R6(config-applet)# action 3.1 cli command "int f2/0"

R6(config-applet)# action 4.1 cli command "no ip policy route-map pbr-cnc"

R6(config-applet)# action 5.1 cli command "end"

//写一个EEM,当track 200的状况是donw今后,履行下面的动作,即进入f2/0接口,删去掉接口下的PBR装备。

R6(config)#event manager applet SP-up

R6(config-applet)# event track 200 state up

R6(config-applet)# action 1.1 cli command "en"

R6(config-applet)# action 2.1 cli command "conf t"

R6(config-applet)# action 3.1 cli command "int f2/0"

R6(config-applet)# action 4.1 cli command "ip policy route-map pbr-cnc"

R6(config-applet)# action 5.1 cli command "end"

//写一个EEM,当track 200的状况是UP的今后,履行下面的动作,即进入F2/0接口,增加上PBR的装备。

一切装备完结,下面进行测验。

测验:

电信链路测验:

在R6上检查路由表:

R6#show ip route

S* 0.0.0.0/0 [5/0] via 172.16.1.5

23.0.0.0/32 is subnetted, 1 subnets

S 23.1.1.2 [1/0] via 172.16.1.1

34.0.0.0/32 is subnetted, 1 subnets

S 34.1.1.4 [1/0] via 172.16.1.5

留意默许路由指向的是172.16.1.5

在R6上检查SLA的状况,是OK的

IPSLAs Latest Operation Summary

Codes: * active, ^ inactive, ~ pending

ID Type Destination Stats Return Last (ms) Code Run

-----------------------------------------------------------------------

*2 icmp-echo 23.1.1.2 RTT=44 OK 7 seconds ago

*3 icmp-echo 34.1.1.4 RTT=19 OK 2 seconds ago

在PC2上ping3.3.3.3

PC2#ping 3.3.3.3 repeat 1000

模仿电信链路毛病的时分,将R4的S1/0接口Shutdown

PC2#ping 3.3.3.3 repeat 1000

Type escape sequence to abort.

Sending 1000, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!U.U.U.U.U.U.U.U.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

检查SLA:

IPSLAs Latest Operation Summary

Codes: * active, ^ inactive, ~ pending

ID Type Destination Stats Return Last

(ms) Code Run

-----------------------------------------------------------------------

*2 icmp-echo 23.1.1.2 RTT=16 OK 7 seconds ago

*3 icmp-echo 34.1.1.4 - Timeout 2 seconds ago

能够看到34.1.1.4现已timeout了

检查路由表:

R6#show ip route

S* 0.0.0.0/0 [5/0] via 172.16.1.1

23.0.0.0/32 is subnetted, 1 subnets

S 23.1.1.2 [1/0] via 172.16.1.1

34.0.0.0/32 is subnetted, 1 subnets

S 34.1.1.4 [1/0] via 172.16.1.5

能够看到起浮静态收效了,一切流量现已切换过来了。

在R4上康复S1/0接口

R4(config)#int s1/0

R4(config-if)#no shut

再次检查路由表

R6#show ip route

S* 0.0.0.0/0 [1/0] via 172.16.1.5

23.0.0.0/32 is subnetted, 1 subnets

S 23.1.1.2 [1/0] via 172.16.1.1

34.0.0.0/32 is subnetted, 1 subnets

S 34.1.1.4 [1/0] via 172.16.1.5

能够看到现已康复了。

测验联通链路失效:

在R6检查F2/0的装备

interface FastEthernet2/0

ip address 172.16.2.1 255.255.255.0

ip policy route-map pbr-cnc

duplex half

end

在PC1上长ping3.3.3.3,然后shutdown R2的S1/1接口,模仿联通链路失效。

PC1#ping 3.3.3.3 re

PC1#ping 3.3.3.3 repeat 1000

Type escape sequence to abort.

Sending 1000, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!U.U.U..!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

在R6上调查,能够看到日志,EEM现已收效了

R6#

*Jun 11 17:39:48.215:在Cisco IOS上运用PBR、SLA和EEM完成双线冗余和负载均衡 %TRACKING-5-STATE: 200 ip sla 2 state Up->Down

*Jun 11 17:39:48.219: %TRACKING-5-STATE: 2 ip sla 2 reachability Up->Down

*Jun 11 17:39:48.387: %SYS-5-CONFIG_I: Configured from console by on vty0 (EEM:SP-down)

检查F0/2的装备:

R6#sh run int f2/0

Current configuration : 112 bytes

!

interface FastEthernet2/0

ip address 172.16.2.1 255.255.255.0

duplex half

end

在R2上康复接口

R2(config)#int s1/1

R2(config-if)#no shut

在R6上调查日志:

*Jun 11 17:46:08.223: %TRACKING-5-STATE: 200 ip sla 2 state Down->Up

*Jun 11 17:46:08.227: %TRACKING-5-STATE: 2 ip sla 2 reachability Down->Up

*Jun 11 17:46:08.439: %SYS-5-CONFIG_I: Configured from console by on vty0 (EEM:SP-up)

检查F0/2的装备:

R6#sh run int f2/0

Current configuration : 112 bytes

!

interface FastEthernet2/0

ip address 172.16.2.1 255.255.255.0

ip policy route-map pbr-cnc

duplex half

end

请关注微信公众号
微信二维码
不容错过
Powered By Z-BlogPHP