2010-07-27 01:44 PM
ここでは、ACE module を用いた基本的な設定、及びそのときの動作や確認方法を紹介します。 client/server には、router(c2801) を用います。
ACE で connection の状態を確認するには show conn を、どの policy に hit しているかを確認するには show service-policy command を用います。
# 構成
client(c2801a) : 192.168.71.1
server(c2801b) : 192.168.72.1, 192.168.72.2
ACE VIP: 192.168.71.100(L3), 192.168.71.101(L4), 192.168.71.102(L7)
# client/server 設定
client router | server router |
c2801a#sh run Building configuration... version 12.4 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption ! hostname c2801a ! boot-start-marker boot-end-marker ! enable password cisco ! no aaa new-model ip cef ! ! interface FastEthernet0/1 ip address 192.168.71.1 255.255.255.0 !___ client ip address duplex auto speed auto ! ! no ip http server ! ! control-plane ! ! line con 0 line aux 0 line vty 0 4 password cisco login ! end c2801a# | c2801b#sh run Building configuration... version 12.4 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption ! hostname c2801b ! boot-start-marker boot-end-marker ! enable password cisco ! no aaa new-model ip cef ! ! interface FastEthernet0/1 ip address 192.168.72.2 255.255.255.0 secondary !___ server が複数あるように見せるため、sercondary address を使用 ip address 192.168.72.1 255.255.255.0 !___ server ip address duplex auto speed auto ! ip classless ip route 192.168.71.0 255.255.255.0 192.168.72.250 !___ client は別 network にいるため、client 宛ての route が必要 ! ! ip http server !___ http server の機能を有効に ip http timeout-policy idle 60 life 60 requests 100 ! ! control-plane ! ! line con 0 line aux 0 line vty 0 4 password cisco !___ telnet を使用するため password を設定 login ! end c2801b# |
# ACE 設定
ACE20/Admin# sh run Generating configuration.... hostname ACE20 boot system image:c6ace-t1k9-mz.A2_3_1.bin access-list all line 8 extended permit ip any any rserver host sv1 ip address 192.168.72.1 inservice rserver host sv2 ip address 192.168.72.2 inservice !___ server をそれぞれ sv1, sv2 という名前で設定 serverfarm host sf rserver sv1 inservice rserver sv2 inservice !___ rserver sv1, sv2 を serverfarm sf として設定 class-map type http loadbalance match-all url 2 match http url .* !___ ACE が url を check する (L7 処理を行う) ための設定 class-map match-all vip-l3 2 match virtual-address 192.168.71.100 any !___ virtual address 設定 (L3 用) class-map match-all vip-l4 3 match virtual-address 192.168.71.101 tcp eq www !___ virtual address 設定 (L4 用) class-map match-all vip-l7 2 match virtual-address 192.168.71.102 tcp eq www !___ virtual address 設定 (L7 用) policy-map type loadbalance first-match lb class class-default serverfarm sf !___ L3/L4 用の serverfarm 設定 policy-map type loadbalance first-match lb-l7 class url serverfarm sf !___ L7 用の serverfarm 設定 !___ class-map で設定した url に match した場合、serverfarm sf を使用 !___ .* の設定のため、すべての url が該当 policy-map multi-match client-vips class vip-l3 loadbalance vip inservice loadbalance policy lb class vip-l4 loadbalance vip inservice loadbalance policy lb class vip-l7 loadbalance vip inservice loadbalance policy lb-l7 access-group input all interface vlan 771 ip address 192.168.71.250 255.255.255.0 service-policy input client-vips no shutdown interface vlan 772 ip address 192.168.72.250 255.255.255.0 no shutdown |
# vip access 時の出力
1) vip:192.168.71.100 に telnet access
c2801a#telnet 192.168.71.100 Trying 192.168.71.100 ... Open User Access Verification Password: c2801b> |
ACE20/Admin# sh service-policy Policy-map : client-vips Status : ACTIVE ----------------------------------------- Interface: vlan 771 service-policy: client-vips class: vip-l3 loadbalance: L7 loadbalance policy: lb VIP Route Metric : 77 VIP Route Advertise : DISABLED VIP ICMP Reply : ENABLED VIP State: INSERVICE curr conns : 1 , hit count : 1 dropped conns : 0 client pkt count : 0 , client byte count: 0 server pkt count : 0 , server byte count: 0 conn-rate-limit : 0 , drop-count : 0 bandwidth-rate-limit : 0 , drop-count : 0 class: vip-l4 loadbalance: L7 loadbalance policy: lb VIP Route Metric : 77 VIP Route Advertise : DISABLED VIP ICMP Reply : ENABLED VIP State: INSERVICE curr conns : 0 , hit count : 0 dropped conns : 0 client pkt count : 0 , client byte count: 0 server pkt count : 0 , server byte count: 0 conn-rate-limit : 0 , drop-count : 0 bandwidth-rate-limit : 0 , drop-count : 0 class: vip-l7 loadbalance: L7 loadbalance policy: lb-l7 Regex dnld status : SUCCESSFUL VIP Route Metric : 77 VIP Route Advertise : DISABLED VIP ICMP Reply : ENABLED VIP State: INSERVICE curr conns : 0 , hit count : 0 dropped conns : 0 client pkt count : 0 , client byte count: 0 server pkt count : 0 , server byte count: 0 conn-rate-limit : 0 , drop-count : 0 bandwidth-rate-limit : 0 , drop-count : 0 ACE20/Admin# sh conn total current connections : 2 conn-id np dir proto vlan source destination state ----------+--+---+-----+----+---------------------+---------------------+------+ 121 1 in TCP 771 192.168.71.1:23022 192.168.71.100:23 ESTAB 122 1 out TCP 772 192.168.72.2:23 192.168.71.1:23022 ESTAB |
show service-policy で class vip-l3 に hit していることが確認できます。
show conn で、
client -> ACE の traffic は src:192.168.71.1:23022, dest:192.168.71.100:23
server -> ACE の traffic は src: 192.168.72.2:23, dest:192.168.71.1:23022
であることが確認できます。
ACE は、round robin で、192.168.72.2 (secondary address) を選択しました。
また、server (c2801b) は 192.168.71.1 宛てに返信するために routing 設定が必要になります。
2) vip:192.168.71.101 に http access
c2801a#telnet 192.168.71.101 80 Trying 192.168.71.101, 80 ... Open GET / HTTP/1.1 Host:a Authorization: Basic OmNpc2Nv HTTP/1.1 200 OK Date: Tue, 06 Jul 2010 02:34:43 GMT Server: cisco-IOS Transfer-Encoding: chunked Content-Type: text/html Expires: Tue, 06 Jul 2010 02:34:43 GMT Last-Modified: Tue, 06 Jul 2010 02:34:43 GMT Cache-Control: no-store, no-cache, must-revalidate Accept-Ranges: none 0000008E <!-- // Copyright (c) 2004-2005 by Cisco Systems, Inc. --> <html> <head></head> <body> [snip] |
ACE20/Admin# sh service-policy Policy-map : client-vips Status : ACTIVE ----------------------------------------- Interface: vlan 771 service-policy: client-vips class: vip-l3 loadbalance: L7 loadbalance policy: lb VIP Route Metric : 77 VIP Route Advertise : DISABLED VIP ICMP Reply : ENABLED VIP State: INSERVICE curr conns : 0 , hit count : 1 dropped conns : 0 client pkt count : 23 , client byte count: 967 server pkt count : 21 , server byte count: 934 conn-rate-limit : 0 , drop-count : 0 bandwidth-rate-limit : 0 , drop-count : 0 class: vip-l4 loadbalance: L7 loadbalance policy: lb VIP Route Metric : 77 VIP Route Advertise : DISABLED VIP ICMP Reply : ENABLED VIP State: INSERVICE curr conns : 1 , hit count : 1 dropped conns : 0 client pkt count : 0 , client byte count: 0 server pkt count : 0 , server byte count: 0 conn-rate-limit : 0 , drop-count : 0 bandwidth-rate-limit : 0 , drop-count : 0 class: vip-l7 loadbalance: L7 loadbalance policy: lb-l7 Regex dnld status : SUCCESSFUL VIP Route Metric : 77 VIP Route Advertise : DISABLED VIP ICMP Reply : ENABLED VIP State: INSERVICE curr conns : 0 , hit count : 0 dropped conns : 0 client pkt count : 0 , client byte count: 0 server pkt count : 0 , server byte count: 0 conn-rate-limit : 0 , drop-count : 0 bandwidth-rate-limit : 0 , drop-count : 0 ACE20/Admin# sh conn total current connections : 2 conn-id np dir proto vlan source destination state ----------+--+---+-----+----+---------------------+---------------------+------+ 85 2 in TCP 771 192.168.71.1:25980 192.168.71.101:80 ESTAB 86 2 out TCP 772 192.168.72.2:80 192.168.71.1:25980 ESTAB ACE20/Admin# |
show service-policy で class vip-l4 に hit していることが確認できます。
今回の通信は、http を用いるため、client は port#80 宛てに access し、手動で GET request を送信しています。
c2801 を server にしているため、password が要求されるので、authentication も手動で設定しています。
(OmNpc2Nv は c2801 で設定した username(なし):password(cisco) を base64 encode したものです。)
# echo OmNpc2Nv | base64 -d :cisco |
3) vip:192.168.71.102 に http access
c2801a#telnet 192.168.71.102 80 Trying 192.168.71.102, 80 ... Open GET / HTTP/1.1 Host:a Authorization: Basic OmNpc2Nv HTTP/1.1 200 OK Date: Tue, 06 Jul 2010 02:35:21 GMT Server: cisco-IOS Transfer-Encoding: chunked Content-Type: text/html Expires: Tue, 06 Jul 2010 02:35:21 GMT Last-Modified: Tue, 06 Jul 2010 02:35:21 GMT Cache-Control: no-store, no-cache, must-revalidate Accept-Ranges: none 0000008E <!-- // Copyright (c) 2004-2005 by Cisco Systems, Inc. --> <html> <head></head> <body> [snip] |
ACE20/Admin# sh service-policy Policy-map : client-vips Status : ACTIVE ----------------------------------------- Interface: vlan 771 service-policy: client-vips class: vip-l3 loadbalance: L7 loadbalance policy: lb VIP Route Metric : 77 VIP Route Advertise : DISABLED VIP ICMP Reply : ENABLED VIP State: INSERVICE curr conns : 0 , hit count : 1 dropped conns : 0 client pkt count : 23 , client byte count: 967 server pkt count : 21 , server byte count: 934 conn-rate-limit : 0 , drop-count : 0 bandwidth-rate-limit : 0 , drop-count : 0 class: vip-l4 loadbalance: L7 loadbalance policy: lb VIP Route Metric : 77 VIP Route Advertise : DISABLED VIP ICMP Reply : ENABLED VIP State: INSERVICE curr conns : 0 , hit count : 1 dropped conns : 0 client pkt count : 21 , client byte count: 907 server pkt count : 16 , server byte count: 4091 conn-rate-limit : 0 , drop-count : 0 bandwidth-rate-limit : 0 , drop-count : 0 class: vip-l7 loadbalance: L7 loadbalance policy: lb-l7 Regex dnld status : SUCCESSFUL VIP Route Metric : 77 VIP Route Advertise : DISABLED VIP ICMP Reply : ENABLED VIP State: INSERVICE curr conns : 1 , hit count : 1 dropped conns : 0 client pkt count : 0 , client byte count: 0 server pkt count : 0 , server byte count: 0 conn-rate-limit : 0 , drop-count : 0 bandwidth-rate-limit : 0 , drop-count : 0 ACE20/Admin# ACE20/Admin# sh conn total current connections : 2 conn-id np dir proto vlan source destination state ----------+--+---+-----+----+---------------------+---------------------+------+ 123 1 in TCP 771 192.168.71.1:44102 192.168.71.102:80 ESTAB 124 1 out TCP 772 192.168.72.1:80 192.168.71.1:44102 ESTAB ACE20/Admin# |
show service-policy で class vip-l7 に hit していることが確認できます。
client からの access 方法や show conn の出力に大きな違いはありませんが、Loadbalancer の基本動作 に書かれているように、L3/L4 と L7 では ACE 内部での動作が大きく異なります。
この違いは、client - ACE, ACE - server 間の capture を同時に取得することで確認できます。
L3/L4 の場合、ACE が syn packet を受信した (L3:14 行目, L4:168行目) 直後に server 宛てに syn packet を送信 (L3:15 行目, L4:169行目) していますが、L7 の場合、client に対して syn/ack を返し (309行目) ています。L7 の場合、server 宛てに syn を送信するのは 313 行目の GET request を受信した後(315行目)になります。
# L3
# L4
# L7
検索バーにキーワード、フレーズ、または質問を入力し、お探しのものを見つけましょう
シスコ コミュニティをいち早く使いこなしていただけるよう役立つリンクをまとめました。みなさんのジャーニーがより良いものとなるようお手伝いします
下記より関連するコンテンツにアクセスできます