シスコサポートコミュニティ
キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

ACE: sticky の基本動作

    ACE は、L3/L4 L7  rule に関わらず、connection 単位で動作します。

    つまり、同一 client からの access であっても、connection 2 つ以上ある場合、同一の server packet を転送してくれるわけではありません。

    sticky_basic_01.png

    例えば、shopping site で気になる商品を買い物かごに入れたものの、その時に購入せず、しばらくして (connection が切断されて) から、購入を決断し、再度 access するという状況が発生したとします。 最初に access した時は、server1 を使用し (買い物かごの情報を server1 に保存)、再度 access した場合は server2 を使用するという環境の場合、server2 には買い物かごの情報がないため、購入できず、再度商品を買い物かごに入れる手間が発生してしまいます。

    そういった問題 (2番目以降の connection が別 server に転送されてしまう問題) に対応するための機能が sticky です。

    sticky を有効にした場合、別 connection であったとしても、同一 client からの access かどうかを識別し、同一の server packet を転送します。

    ACE では HTTP Cookie, HTTP Content, HTTP  Header, IP netmask, Layer 4 Payload, RADIUS, RTSP Header, SIP Header 等を check し、同一 client かどうか判断することが可能です。

    設定に関する詳細は Sticky Configuration Mode Commands をご参照ください。

    例として、ip sticky の設定と動作を見ていきます。

    # 構成

    sticky_basic_02.png

    # ACE 設定

    ACE20/Admin# show run

    Generating    configuration....

    hostname    ACE20

    boot system    image:c6ace-t1k9-mz.A2_3_1.bin

    resource-class    sticky

      limit-resource all minimum 0.00 maximum    unlimited

      limit-resource sticky minimum 1.00 maximum    unlimited

    !___ sticky を使用する場合、sticky 用の resource を確保する必要あり

    context Admin

      member sticky

    !___ sticky を利用する context resource-class を適用

    access-list    all line 8 extended permit ip any any

    rserver host    sv1

      ip address 192.168.72.11

      inservice

    rserver host    sv2

      ip address 192.168.72.12

      inservice

    serverfarm    host sf

      rserver sv1

        inservice

      rserver sv2

        inservice

    sticky    ip-netmask 255.255.255.255 address source ip_sticky

      serverfarm sf

    !___ sticky group の設定

    class-map    match-all vip

      2 match virtual-address 192.168.71.100 tcp    eq www

    policy-map    type loadbalance first-match lb

      class class-default

        sticky-serverfarm ip_sticky

    !___ sticky 使用時は sticky-serverfarm を設定

    policy-map    multi-match client-vips

      class vip

        loadbalance vip inservice

        loadbalance policy lb

        loadbalance vip icmp-reply

    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 時の client 出力

    client:/# telnet 192.168.71.100 80

    Trying    192.168.71.100...

    Connected to    192.168.71.100.

    Escape    character is '^]'.

    GET / HTTP/1.1

    Host:a

    HTTP/1.1 200    OK

    Date: Sun, 11    Jul 2010 22:06:01 GMT

    Server:    Apache/1.3.34 (Debian)

    Last-Modified:    Tue, 07 Aug 2007 20:44:47 GMT

    ETag:    "2da7b5-148a-46b8d9bf"

    Accept-Ranges:    bytes

    Content-Length:    5258

    Content-Type:    text/html; charset=iso-8859-1

    sv1

    [snip]

    client:/# telnet 192.168.71.100 80

    !___ 同一 ip address から access

    Trying    192.168.71.100...

    Connected to    192.168.71.100.

    Escape    character is '^]'.

    GET / HTTP/1.1

    Host:a

    HTTP/1.1 200    OK

    Date: Sun, 11    Jul 2010 22:08:22 GMT

    Server:    Apache/1.3.34 (Debian)

    Last-Modified:    Sun, 11 Jul 2010 22:07:36 GMT

    ETag:    "2da7b5-4-4c3a40a8"

    Accept-Ranges:    bytes

    Content-Length:    4

    Content-Type:    text/html; charset=iso-8859-1

    sv1

    [snip]

    client:/#

    client:/#

    client:/# ifconfig eth1:1 up

    client:/# ifconfig eth1:1 192.168.71.12/24

    client:/#

    client:/# telnet -b 192.168.71.12    192.168.71.100 80

    !___ 別の ip address から access

    Trying    192.168.71.100...

    Connected to    192.168.71.100.

    Escape    character is '^]'.

    GET / HTTP/1.1

    Host:a

    HTTP/1.1 200    OK

    Date: Sun, 11    Jul 2010 22:13:16 GMT

    Server:    Apache/1.3.34 (Debian)

    Last-Modified:    Sun, 11 Jul 2010 22:07:57 GMT

    ETag:    "2e4a13-4-4c3a40bd"

    Accept-Ranges:    bytes

    Content-Length:    4

    Content-Type:    text/html; charset=iso-8859-1

    sv2

    [snip]

    client:/#

    # vip access 時の ACE 出力

    ACE20/Admin# sh sticky database

    ACE20/Admin#

    !___ vip access (何も表示されない)

    ACE20/Admin#

    !___ vip access

    ACE20/Admin# sh sticky database

    sticky group    : ip_sticky

    type         : IP

    timeout      : 1440          timeout-activeconns : FALSE

      sticky-entry          rserver-instance                 time-to-expire flags

      ---------------------+--------------------------------+--------------+-------+

      3232253707            sv1:0                            86387          -

    ACE20/Admin#

    ACE20/Admin# sh sticky database

    sticky group    : ip_sticky

    type         : IP

    timeout      : 1440          timeout-activeconns : FALSE

      sticky-entry          rserver-instance                 time-to-expire flags

      ---------------------+--------------------------------+--------------+-------+

      3232253707            sv1:0                            86261          -

    !___ 時間とともに time-to-expire の値が減少

    ACE20/Admin#

    ACE20/Admin# sh conn

    total current    connections : 0

    conn-id    np dir proto vlan source                destination           state

    ----------+--+---+-----+----+---------------------+---------------------+------+

    ACE20/Admin#

    !___ connection がないことを確認し、再度同一 ip address vip access

    ACE20/Admin# sh sticky database

    sticky group    : ip_sticky

    type         : IP

    timeout      : 1440          timeout-activeconns : FALSE

      sticky-entry          rserver-instance                 time-to-expire flags

      ---------------------+--------------------------------+--------------+-------+

      3232253707            sv1:0                            86388          -

    !___ 新規 connection 確立後、time-to-expire の値が reset される

    ACE20/Admin#

    !___ 別の ip address から access

    ACE20/Admin# sh sticky database

    sticky group    : ip_sticky

    type         : IP

    timeout      : 1440          timeout-activeconns : FALSE

      sticky-entry          rserver-instance                 time-to-expire flags

      ---------------------+--------------------------------+--------------+-------+

      3232253708            sv2:0                            86384          -

    !___ 先ほどとは別の entry が生成される

    sticky group    : ip_sticky

    type         : IP

    timeout      : 1440          timeout-activeconns : FALSE

      sticky-entry          rserver-instance                 time-to-expire flags

      ---------------------+--------------------------------+--------------+-------+

      3232253707            sv1:0                            86091          -

    ACE20/Admin#

    client の出力結果を見ての通り、最初の 2 回は同一 ip address から access し、最後の 1 回は、別の ip address から access しています。

    最初、ACE sticky database entry がないため、round robin server を選択し、entry を生成しますが、2 番目の access では、sticky database を確認し、以前と同じ server を使用します。その際、time-to-expire の値を reset します。 上記では、default  (1440 =  86400) を用いているので、86400 秒に戻ります。

    3 番目の access は、ip  address が異なるので、最初の access で生成された entry は使用できず、round robin server を選択します。 その際、後続 traffic のため、sticky database entry を生成します。

バージョン履歴
改訂番号
1/1
最終更新:
‎07-27-2010 03:20 PM
更新者:
 
タグ(2)