




免费预览已结束,剩余13页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ACE负载均衡实验手册实验目的在本实验中,将通过ACE 4710来配置虚拟IP(VIP)地址,并将发送到此IP地址的流量负载分担到在ACE4710后的真实服务器上。为了实现此目的,Class-map会用来将访问VIP的客户端流量进行分类,然后流量将会被负载分担到服务器群,并且从服务群中选择一台合适的真实服务器来响应客户的需求。为了让客户流量能够顺利进入ACE 4710,访问控制列表必须允许这些流量通过。实验设计本实验将分为在线模式(inline)和旁路模式(outline)方式进行。实验拓扑图如下:实验设备ACE4710 * 1台Cisco Catalyst 3560 *1台Cisco Catalyst 2960 *1台Cisco Catalyst 2918 *1台Cisco ASA5510 *1台Cisco 2811 *1台详细配置ACE需要配置ACL允许流量进行ACE,当ACL作为service-policy配置到接口上时,所有访问VIP的流量将会被分门别类,VIP将和一个包含multi-match策略的负载均衡动作关联,该负载均衡动作告诉ACE该如何去处理命中VIP的流量。为了实现负载均衡目的,我们需要按如下步骤进行配置l 启用ACL,允许数据流量通过ACE,默认所有流量是被拒绝的。l 配置服务器IP地址(定义rservers)l 真实服务器分组(创建serverfarm) l 定义虚拟IP地址(VIP)l 定义当接收到流量后该如何处理 (创建policy-map用于负载均衡)l 将VIP与处理动作关联 (创建multi-match policy-map (aka service-policy)l 创建客户端与服务器接口l 应用VIP和ACL允许客户端连接到接口上(在接口上应用access-group and service policy)1. Inline 方式i. 创建ACL,允许数据流量通过ACEJason/Admin(config)#access-list inbound extended permit icmp any anyJason/Admin(config)#access-list inbound extended permit ip any any注:虽然这个例子使用permit any any,但强烈建议用ACL控制流量,只允许你想要允许流量通过ACE。在过去,SLB设备仅允许开放虚拟IP及端口来保护服务器。ACE的ACL中首先处理第一条ACL,因此利用ACL来过滤掉流量比流量通过了ACL命中VIP后再过滤所占用的系统资源更少。ii. ACE的需要知道服务器的IP地址从而处理客户端连接,rserver命令是用来定义服务的IP地址,此外每个rserver必须使用inservice加以利用。这一设计的好处在于不管有多少应用程序或服务的rserver,整个真实的服务器可以使用“no inservice”或“no inservice-standby”的命令完全脱离负载平衡轮换队列。这对于用户需要升级或给rserver打补丁是非常有益的,用户不再需要去基于每个应用程序而从rserver上删除每个实例。Jason/Admin(config)#rserver host switch1 定义rserver名称为“switch1”Jason/Admin(config-rserver-host)#ip address 54 定义rserver的IPJason/Admin(config-rserver-host)#inservice 提供服务Jason/Admin(config-rserver-host)#rserver host switch2Jason/Admin(config-rserver-host)ip address 54Jason/Admin(config-rserver-host)#inserviceiii. 现在使用serverfarm命令来分组这些rserver,用来处理客户端连接。Rserver必须被再次配置成inservice,这允许一台rserver的单一实例能从轮换队列中手动删除。Jason/Admin(config)#serverfarm host allswitch 定义serverfarm名称为 allswitchJason/Admin(config-sfarm-host)#rserver switch1 将rserver switch1加入Jason/Admin(config-sfarm-host-rs)#inservice 提供服务Jason/Admin(config-sfarm-host-rs)#rserver switch2将rserver switch1加入Jason/Admin(config-sfarm-host-rs)#inservice 提供服务iv. 建立一个class-map来定义客户端发送请求的VIP。在本例中,VIP是匹配任意端口的因此被认为是L3(三层)。如果VIP仅匹配HTTP流量,则该匹配将端口绑定到80端口,同时被认为是L4(四层) VIP。(例如: match virtual-address 00 tcp eq 80)。Jason/Admin(config)# class-map slb-vip 创建一个名字为slb-vip的class-mapJason/Admin(config-cmap)# match virtual-address 2 any VIP定义为2且为L3模式v. 为了能够让网络管理人员能够对设备进行管理和状态监测,我们还需要建立一个class-map来允许通过如telnet、ssh、icmp协议访问管理地址。Jason/Admin(config)#class-map type management match-any remote-access 创建名字叫remote-access的管理class-map description remote-access 定义class-map描述 2 match protocol telnet any 允许telnet协议 3 match protocol ssh any 允许ssh协议 4 match protocol icmp any 允许icmp协议vi. 接下来确定当一个新的客户端请求到达时,要采取的动作。在本例中,所有的流量将被发送到名为“allswitch”的serverfarm,这种负载均衡被认为是L4模式,因为只有class-default在使用。Jason/Admin(config)# policy-map type loadbalance first-match slb 定义叫“slb”的policy-map,类型为loadbalance,Jason/Admin(config-pmap-lb)# class class-default 类别为默认Jason/Admin(config-pmap-lb-c)# serverfarm allswitch 使用“allswitch”的serverfarmvii. 然后,我们将之前配置的管理class-map用policy-map来引入。Jason/Admin(config)# policy-map type management first-match remote-mgmt 定义叫remote-mgmt的policy-map,类型为managementJason/Admin(config-pmap-mgmt) class remote-access 类别为之前设置的名为remote-access 的class-mapJason/Admin(config-pmap-mgmt-c) permit 符合该class的操作设置为允许viii. 由于VIP和负载均衡的动作是独立定义的,所以它们必须关联起来让ACE知道目标流向VIP的流量该如何处理。使用一个multi-match policy-map来创建关联,请记住multi-match policy-maps作为服务策略作用于接口上。Jason/Admin(config)# policy-map multi-match client-vips 定义名为“client-vips”的 multi-match policy-mapJason/Admin(config-pmap)# class slb-vip 使用“slb-vip”这个class-mapJason/Admin(config-pmap-c)# loadbalance policy slb 使用“slb”这个policy mapJason/Admin(config-pmap-c)# loadbalance vip inservice 将VIP地址inserviceix. 接下来,我们再来设置各个接口的地址,由于ACE4710的物理端口为交换口,所以要将物理端口划入到对应vlan中,再配置vlan三层IP地址。Jason/Admin(config)#interface gigabitEthernet 1/1Jason/Admin(config-if)#switchport access vlan 10 将G1/1划入Vlan 10,该Vlan为用户VlanJason/Admin(config-if)#no shutdownJason/Admin(config-if)#interface gigabitEthernet 1/2将G1/1划入Vlan 20,该Vlan为服务器VlanJason/Admin(config-if)#switchport access vlan 20Jason/Admin(config-if)#no shutdownJason/Admin(config-if)#interface gigabitEthernet 1/3将G1/3划入Vlan 30,该Vlan为服务器VlanJason/Admin(config-if)#switchport access vlan 30Jason/Admin(config-if)#no shutdownJason/Admin(config-if)#interface vlan 10 Jason/Admin(config-if)#ip address 1 配置Vlan10的IP地址Jason/Admin(config-if)#no shutdown Jason/Admin(config-if)#interface vlan 20Jason/Admin(config-if)#ip address 4 配置Vlan20的IP地址Jason/Admin(config-if)#no shutdownJason/Admin(config-if)#interface vlan 30Jason/Admin(config-if)#ip address 4 配置Vlan30的IP地址Jason/Admin(config-if)#no shutdownx. 最后一步将ACL、管理策略和服务策略 (policy-map multi-match)应用到客户端接口上,不管是access-group还是service policy,都应用在接口的input方向上。Jason/Admin(config)# interface vlan 10Jason/Admin(config-if)# access-group input inbound 应用访问列表inboundJason/Admin(config-if)# service-policy input client-vips 应用策略client-vipsJason/Admin(config-if)# service-policy input remote-mgmt 应用策略remote-mgmtxi. 至此,我们的inline方式部署已经完毕,让我们看看测试效果。a) 在客户端上telnet VIP地址2,第一次是到了2960上b) 再次telnet 2,c) 为什么会出现这样的效果呢?我们用show serverfarm detail命令看看输出结果 我们还可以修改predictor(预测器)的值,实现更多的负载均衡方式。d) 再看看其他的show命令的结果Show arpShow service-policy client-vipsShow serverfarmShow rservere) 查看show running-configJason/Admin# sh runGenerating configuration.boot system image:c4710ace-mz.A1_8_0a.binhostname Jasoninterface gigabitEthernet 1/1 switchport access vlan 10 no shutdowninterface gigabitEthernet 1/2 switchport access vlan 20 no shutdowninterface gigabitEthernet 1/3 switchport access vlan 30 no shutdowninterface gigabitEthernet 1/4 shutdownaccess-list inbound line 7 extended permit icmp any any access-list inbound line 8 extended permit ip any any rserver host switch1 ip address 54 inservicerserver host switch2 ip address 54 inserviceserverfarm host allswitch rserver switch1 inservice rserver switch2 inserviceclass-map match-all slb-vip 2 match virtual-address 2 anypolicy-map type loadbalance first-match slb class class-default serverfarm allswitchpolicy-map multi-match client-vips class slb-vip loadbalance vip inservice loadbalance policy slbinterface vlan 10 ip address 1 access-group input inbound service-policy input client-vips no shutdowninterface vlan 20 ip address 4 no shutdowninterface vlan 30 ip address 4 no shutdownusername admin password 5 $1$faXJEFBj$TJR1Nx7sLPTi5BZ97v08c/ role Admin domain default-domain username www password 5 * role Admin domain default-domain2. Outline 方式i. 创建ACL,允许数据流量通过ACEJason/Admin(config)#access-list inbound extended permit icmp any anyJason/Admin(config)#access-list inbound extended permit ip any any注:虽然这个例子使用permit any any,但强烈建议用ACL控制流量,只允许你想要允许流量通过ACE。在过去,SLB设备仅允许开放虚拟IP及端口来保护服务器。ACE的ACL中首先处理第一条ACL,因此利用ACL来过滤掉流量比流量通过了ACL命中VIP后再过滤所占用的系统资源更少。ii. ACE的需要知道服务器的IP地址从而处理客户端连接,rserver命令是用来定义服务的IP地址,此外每个rserver必须使用inservice加以利用。这一设计的好处在于不管有多少应用程序或服务的rserver,整个真实的服务器可以使用“no inservice”或“no inservice-standby”的命令完全脱离负载平衡轮换队列。这对于用户需要升级或给rserver打补丁是非常有益的,用户不再需要去基于每个应用程序而从rserver上删除每个实例。Jason/Admin(config)#rserver host switch1 定义rserver名称为“switch1”Jason/Admin(config-rserver-host)#ip address 定义rserver的IPJason/Admin(config-rserver-host)#inservice 提供服务Jason/Admin(config-rserver-host)#rserver host switch2定义rserver名称为“switch2”Jason/Admin(config-rserver-host)ip address 定义rserver的IPJason/Admin(config-rserver-host)#inservice 提供服务iii. 现在使用serverfarm命令来分组这些rserver,用来处理客户端连接。Rserver必须被再次配置成inservice,这允许一台rserver的单一实例能从轮换队列中手动删除。Jason/Admin(config)#serverfarm host allswitch 定义serverfarm名称为 allswitchJason/Admin(config-sfarm-host)#rserver switch1 将rserver switch1加入Jason/Admin(config-sfarm-host-rs)#inservice 提供服务Jason/Admin(config-sfarm-host-rs)#rserver switch2将rserver switch2加入Jason/Admin(config-sfarm-host-rs)#inservice 提供服务iv. 建立一个class-map来定义客户端发送请求的VIP。在本例中,VIP是匹配任意端口的因此被认为是L3(三层)。如果VIP仅匹配HTTP流量,则该匹配将端口绑定到80端口,同时被认为是L4(四层) VIP。(例如: match virtual-address 00 tcp eq 80)。Jason/Admin(config)# class-map slb-vip 创建一个名字为slb-vip的class-mapJason/Admin(config-cmap)# match virtual-address 54 any VIP定义为54且为L3模式v. 为了能够让网络管理人员能够对设备进行管理和状态监测,我们还需要建立一个class-map来允许通过如telnet、ssh、icmp协议访问管理地址。Jason/Admin(config)#class-map type management match-any remote-access 创建名字叫remote-access的管理class-map description remote-access 定义class-map描述 2 match protocol telnet any 允许telnet协议 3 match protocol ssh any 允许ssh协议 4 match protocol icmp any 允许icmp协议vi. 接下来确定当一个新的客户端请求到达时,要采取的动作。在本例中,所有的流量将被发送到名为“allswitch”的serverfarm,这种负载均衡被认为是L4模式,因为只有class-default在使用。Jason/Admin(config)# policy-map type loadbalance first-match slb 定义叫“slb”的policy-map,类型为loadbalance,Jason/Admin(config-pmap-lb)# class class-default 类别为默认Jason/Admin(config-pmap-lb-c)# serverfarm allswitch 使用“allswitch”的serverfarmxii. 然后,我们将之前配置的管理class-map用policy-map来引入。Jason/Admin(config)# policy-map type management first-match remote-mgmt 定义叫remote-mgmt的policy-map,类型为managementJason/Admin(config-pmap-mgmt) class remote-access 类别为之前设置的名为remote-access 的class-mapJason/Admin(config-pmap-mgmt-c) permit 符合该class的操作设置为允许vii. 由于VIP和负载均衡的动作是独立定义的,所以它们必须关联起来让ACE知道目标流向VIP的流量该如何处理。使用一个multi-match policy-map来创建关联,请记住multi-match policy-maps作为服务策略作用于接口上。Jason/Admin(config)# policy-map multi-match client-vips 定义名为“client-vips”的 multi-match policy-mapJason/Admin(config-pmap)# class slb-vip 使用“slb-vip”这个class-mapJason/Admin(config-pmap-c)# loadbalance policy slb 使用“slb”这个policy mapJason/Admin(config-pmap-c)# loadbalance vip inservice 将VIP地址inserviceviii. 接下来,我们再来设置各个接口的地址,由于ACE4710的物理端口为交换口,所以要将物理端口划入到对应vlan中,再配置vlan三层IP地址,本例为旁路模式,仅使用一个物理端口与网络相连,所以我们只需要设置gig1/1口。Jason/Admin(config)#interface gigabitEthernet 1/1Jason/Admin(config-if)#switchport access vlan 3 将G1/1划入Vlan 3,该Vlan为用户VlanJason/Admin(config-if)#no shutdownJason/Admin(config-if)#interface vlan 3 Jason/Admin(config-if)#ip address 配置Vlan3的IP地址Jason/Admin(config-if)#no shutdown ix. 和Inline模式一样,将ACL、管理策略和服务策略 (policy-map multi-match)应用到客户端接口上,不管是access-group还是service policy,都应用在接口的input方向上。Jason/Admin(config-if)# access-group input inbound 应用访问列表inboundJason/Admin(config-if)# service-policy input client-vips 应用策略client-vipsJason/Admin(config-if)# service-policy input remote-mgmt 应用策略remote-mgmtx. 到此,旁路模式配置已经完毕(真的完毕了吗?我们检验下),我们ping一下VIP地址54,看看输出结果C:Documents and SettingsAdministratorping 54Pinging 54 with 32 bytes of data:Reply from : bytes=32 time=57ms TTL=253Reply from : bytes=32 time=57ms TTL=253Reply from : bytes=32 time=51ms TTL=253Reply from : bytes=32 time=50ms TTL=253Ping statistics for 54: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds: Minimum = 50ms, Maximum = 57ms, Average = 53msC:Documents and SettingsAdministratorping 54Pinging 54 with 32 bytes of data:Request timed out.Reply from : bytes=32 time=48ms TTL=253Reply from : bytes=32 time=52ms TTL=253Reply from : bytes=32 time=52ms TTL=253Ping statistics for 54: Packets: Sent = 4, Received = 3, Lost = 1 (25% loss),Approximate round trip times in milli-seconds: Minimum = 48ms, Maximum = 52ms, Average = 50ms从上面的结果看来,似乎达到了负载均衡的目的,后台的两个rserver分别做出了响应,然后我们再telnet 54,看看是否能够登录到rserver上。C:Documents and SettingsAdministratortelnet 54正在连接到54.不能打开到主机的连接, 在端口 23: 连接失败结果似乎出入意料,并不能telnet到rserver上,这是为什么呢?(这里借用小沈阳的成名语J),我们来分析下原因:利用抓包工具,我们在client端抓取了以下数据,我们知道TCP是面向连接的,要经过三次握手才能通讯的,从上图中可以看到第1个包06向虚地址54发了一个SYN报文,ACE收到该报文后根据我们配置的策略将数据包发送到rserver ,由响应该报文。但这时出现问题了,因为在交换机3560上知道到达06的路由,所以由发送的回应报文并没有转到ACE的虚地址54,由虚地址来发送回应包,而是直接由3560将该回应报文发送给了客户端地址06,所以我们看到第2个包是发送给06的一个SYN,ACK报文,而06发现第2个包不是54而是发送的,所以直接发送给一个RST复位报文,中断了握手过程。从路径上来看是这样的:去方向:client-switch-ACE-switch-server回方向:server-switch-client而ICMP是无连接的,不需要握手过程,所以无论来去方向是否不一致,是不会影响数据包的响应的,这也就是为什么我们无法正常telnet到rserver,而却能ping能rserver的原因。既然我们知道了原因,我们需要做的就是让rserver响应的数据的仍然回到ACE,而由ACE的VIP地址来做出响应,从而防止出现握手失败情况。那我们可以想到两种方式,一种就是PBR策略路由,让从rserver服务器端返回的数据强制返回到ACE,再由ACE的VIP地址给出响应,另一种就是利用NAT,将从client端访问过来的流量通过ACE进行NAT转换,转换成与ACE接口相同的网段,rserver的返回流量到达switch时,switch发现数据包的目标地址为ACE上的地址,所以会把数据包发到ACE上,再由ACE的NAT对应表送达到client端。从路径上来看是这样的:去方向:client-switch-ACE-switch-server回方向:server-switch-ACE-switch-client思路是这样的,我们再来一一检测。1、 PBR方式我们在核心交换机3560上添加策略路由,并将之应用于服务器Vlan的接口上。cisco3560(config)#access-list 1 permit 55 配置访问控制列表,加入源地址cisco3560(config)#route-map route-policy permit 10 建立名为route-policy的策略路由cisco3560(config-route-map)match ip address 1 如果符合ACL 1的源地址cisco3560(config-route-map)set ip next-hop 则将其下一跳cisco3560(config)#int vla 4 进入服务器Vlan接口cisco3560(config-if)#ip policy route-map route-policy 应用策略路由到接口上通过以上配置后,我们再试试telnet的效果再次telnet成功了,看来PBR方式是没问题的,现在我们把3560上的策略路由删除,用NAT方式来尝试下。2.NAT方式我们在ACE的接口上配置NAT,将从client端过来的流量转换成与接口地址同一网段的地址,即172.16.1.x/24网段。Jason/Admin(config)# int vla 3Jason/Admin(config-if)# nat-pool 1 00 31 netmask pat 配置NAT地址池。Jason/Admin(config)# policy-map multi-match client-vips Jason/Admin(config-pmap)# class slb-vipJason/Admin(config-pmap-c)# nat dynamic 1 vlan 3 在multi-match policy-map中加载nat-pool 1。通过以上配置后,我们再试试telnet的效果再次telnet同样,也成功了。我们同样抓包看看结果:可以看到,从第2个包可以看出来,是虚地址54在给客户端发回复确认,从而能够让三次握手顺利完成。检测ACE状态命令请参见Inline方式。相关设备配置见下:ACE4710配置Jason/Admin# sh runGenerating configuration.boot system image:c4710ace-mz.A1_8_0a.binhostname Jasoninterface gigabitEthernet 1/1 switchport access vlan 3 no shutdowninterface gigabitEthernet 1/2 no shutdowninterface gigabitEthernet 1/3 no shutdowninterface gigabitEthernet 1/4 shutdownaccess-list inbound line 7 extended permit icmp any any access-list inbound line 8 extended permit ip any any rserver host switch1 ip address inservicerserver host switch2 ip address inserviceserverfarm host allswitch rserver switch1 inservice rserver switch2 inserviceclass-map type management match-any remote-access description remote-access 2 match protocol telnet any 3 match protocol ssh any 4 match protocol icmp anyclass-map match-all slb-vip 2 match virtual-address 54 anypolicy-map type management first-match remote-mgmt class remote-access permitpolicy-map type loadbalance first-match slb class class-default serverfarm allswitchpolicy-map multi-match client-vips class slb-vip loadbalance vip inservice loadbalance policy slb nat dynamic 1 vlan 3interface vlan 3 ip address access-group input inbound nat-pool 1 00 31 netmask pat service-policy input remote-mgmt service-policy input client-vips no shutdownip route username admin p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025河北省煤田地质局事业单位选聘88名考试模拟试题及答案解析
- 2025江苏张家港经开区国有资本投资运营集团有限公司招聘工作人员19人考试参考题库及答案解析
- 2025宁波宁海县国有企业招聘52人考试参考题库及答案解析
- 校企合作投资协议模板及案例
- 2025年甘肃省兰州市兰州新区贺阳学校招聘备考考试题库附答案解析
- 2025重庆两江新区人民医院城市医疗集团两江新区鸳鸯社区卫生服务中心招聘1人备考考试题库附答案解析
- 学校宿舍租赁协议
- 物业维修服务协议标准范本
- 2025年智慧养老社区服务运营管理创新项目评估报告
- 2025四川内江市第一人民医院员额护士招聘20人备考考试试题及答案解析
- 短视频在互联网媒体与在线游戏行业的应用研究
- 中国脑小血管病诊治指南2023版
- 购置体育器材申请书模板
- 已充氧的医用氧气瓶产品供应链分析
- 新版加油站全员安全生产责任制
- 数字人课程设计培训
- DB11T 1482-2017 城市轨道交通综合救援应用技术规范
- GB/T 44669-2024残疾人服务机构服务规范
- 水质-氯化物的测定验证报告
- 多年生牧草加气地下滴灌技术规程
- DB11∕T 1807-2020 实验动物 环境条件
评论
0/150
提交评论