キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

ACE sticky cookie

    ACE は、server set する HTTP cookie を用い、stick することが可能です。

    ACE: sticky の基本動作 では ip sticky を用い動作確認を行いましたが、ip sticky cookie sticky では、L3 で動作するのか L7 で動作するのかという大きな違いがあります。

    ip sticky L3 で動作し、cookie  sticky L7 で動作します。 L3, L7 の違いについては、Loadbalancer の基本動作 ACE: L3/L4 設定と L7 設定 を参照してください。

    sticky cookie 使用時の動作は下記のようになります。

    # 構成

    sticky_cookie_01.png

    # server 設定(sv1)


    sv1:/# cat    /var/www/cookie.cgi

    #!/usr/bin/perl

    print    <<"EOL";

    Content-type:    text/html

    Set-Cookie:    sv_cookie=sv1

    !___ cookie を挿入

    <HTML>

    <HEAD>

    <TITLE>test</TITLE>

    </HEAD>

    <BODY>

    sv1

    </BODY>

    </HTML>

    EOL

    exit;

    # server 設定(sv2)


    sv2:/# cat /var/www/cookie.cgi

    #!/usr/bin/perl

    print    <<"EOL";

    Content-type:    text/html

    Set-Cookie: sv_cookie=sv2

    !___ cookie を挿入

    <HTML>

    <HEAD>

    <TITLE>test</TITLE>

    </HEAD>

    <BODY>

    sv1

    </BODY>

    </HTML>

    EOL

    exit;

    # ACE 設定


    ACE20/Admin#    sh 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

    context Admin

      member sticky

    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    http-cookie sv_cookie cookie

      serverfarm sf

    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    cookie

    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 /cookie.cgi HTTP/1.0

    Host:a

    !___ cookie を使用せずに access

    HTTP/1.1 200    OK

    Date: Tue, 13    Jul 2010 00:43:12 GMT

    Server:    Apache/1.3.34 (Debian)

    Set-Cookie:    sv_cookie=sv1

    Connection:    close

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

    <HTML>

    <HEAD>

    <TITLE>test</TITLE>

    </HEAD>

    <BODY>

    sv1

    !___ ACE round robin server を決定(今回は sv1 を選択)

    </BODY>

    </HTML>

    Connection    closed by foreign host.

    client:/#

    client:/# telnet 192.168.71.100 80

    Trying    192.168.71.100...

    Connected to    192.168.71.100.

    Escape    character is '^]'.

    GET /cookie.cgi HTTP/1.0

    Host:a

    Cookie: sv_cookie=sv1

    !___ 先ほどの http    response 中の cookie を使用して access

    HTTP/1.1 200    OK

    Date: Tue, 13    Jul 2010 00:43:43 GMT

    Server:    Apache/1.3.34 (Debian)

    Set-Cookie:    sv_cookie=sv1

    Connection:    close

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

    <HTML>

    <HEAD>

    <TITLE>test</TITLE>

    </HEAD>

    <BODY>

    sv1

    !___ 前回同様 sv1 が選択される

    </BODY>

    </HTML>

    Connection    closed by foreign host.

    client:/# telnet 192.168.71.100 80

    Trying    192.168.71.100...

    Connected to    192.168.71.100.

    Escape    character is '^]'.

    GET /cookie.cgi HTTP/1.0

    Host:a

    Cookie: sv_cookie=sv1

    !___ 偶然でないことを確認するため、再度同じ cookie を使用して access

    HTTP/1.1 200    OK

    Date: Tue, 13    Jul 2010 00:44:12 GMT

    Server:    Apache/1.3.34 (Debian)

    Set-Cookie:    sv_cookie=sv1

    Connection:    close

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

    <HTML>

    <HEAD>

    <TITLE>test</TITLE>

    </HEAD>

    <BODY>

    sv1

    !___ 前回同様 sv1 が選択される

    </BODY>

    </HTML>

    Connection    closed by foreign host.

    client:/#

    client:/# telnet 192.168.71.100 80

    Trying    192.168.71.100...

    Connected to    192.168.71.100.

    Escape    character is '^]'.

    GET /cookie.cgi HTTP/1.0

    Host:a

    !___ 今度は cookie なしで access

    HTTP/1.1 200    OK

    Date: Tue, 13    Jul 2010 00:44:42 GMT

    Server:    Apache/1.3.34 (Debian)

    Set-Cookie:    sv_cookie=sv2

    Connection:    close

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

    <HTML>

    <HEAD>

    <TITLE>test</TITLE>

    </HEAD>

    <BODY>

    sv2

    !___ ACE round robin server を決定(今度は sv2 を選択)

    </BODY>

    </HTML>

    Connection    closed by foreign host.

    client:/#

    client:/# telnet -b 192.168.71.12 192.168.71.100 80

    Trying    192.168.71.100...

    Connected to    192.168.71.100.

    Escape    character is '^]'.

    GET /cookie.cgi HTTP/1.0

    Host:a

    Cookie: sv_cookie=sv3

    !___ cookie 値として適当な値を使用

    HTTP/1.1 200    OK

    Date: Tue, 13    Jul 2010 00:46:22 GMT

    Server:    Apache/1.3.34 (Debian)

    Set-Cookie:    sv_cookie=sv2

    Connection:    close

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

    <HTML>

    <HEAD>

    <TITLE>test</TITLE>

    </HEAD>

    <BODY>

    sv2

    !___ sticky table に登録されていない cookie なので、round robin server を選択

    </BODY>

    </HTML>

    Connection    closed by foreign host.

    client:/#

    # vip access 時の ACE 出力

    ACE20/Admin# clear sticky database all

    !___ 既存の entry を削除

    !___ cookie を使用せずに access    (sv1 が選択される)

    ACE20/Admin#

    ACE20/Admin# sh sticky database

    sticky group    : cookie

    type         : HTTP-COOKIE

    timeout      : 1440          timeout-activeconns : FALSE

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

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

      5624825688186980865   sv1:0                            86385          -

    !___ entry が生成される

    !___ cookie を使用使用して access

    ACE20/Admin# sh sticky database

    sticky group    : cookie

    type         : HTTP-COOKIE

    timeout      : 1440          timeout-activeconns : FALSE

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

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

      5624825688186980865   sv1:0                            86395          -

    !___ 既存の entry を使用

    !___ 再度 cookie を使用せずに access (sv2 が選択される)

    ACE20/Admin# sh sticky database

    sticky group    : cookie

    type         : HTTP-COOKIE

    timeout      : 1440          timeout-activeconns : FALSE

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

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

      16345823234109072576  sv2:0                            86335          -

    !___ sv2 entry が新たに生成される

    sticky group    : cookie

    type         : HTTP-COOKIE

    timeout      : 1440          timeout-activeconns : FALSE

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

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

      5624825688186980865   sv1:0                            86397          -

    ACE20/Admin#

    !___ cookie 値として適当な値 (sv_cookie=sv3) を使用

    ACE20/Admin# sh sticky database

    sticky group    : cookie

    type         : HTTP-COOKIE

    timeout      : 1440          timeout-activeconns : FALSE

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

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

      16345823234109072576  sv2:0                            86392          -

    sticky group    : cookie

    type         : HTTP-COOKIE

    timeout      : 1440          timeout-activeconns : FALSE

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

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

      5624825688186980865   sv1:0                            86355          -

    sticky group    : cookie

    type         : HTTP-COOKIE

    timeout      : 1440          timeout-activeconns : FALSE

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

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

      9697699325364584831   sv2:0                            86393          -

    !___ 新たに entry が生成される

    ACE20/Admin#

    #  capture

    sticky_cookie_02.png


    sticky cookie の設定を行うと、ACE L7 で動作するため、client からの connection を終端し、GET request の内容を確認します。 (1-8 行目)

    今回は、cookie set されていないので、round robin server (sv1) を選択し server との connection を確立しています。(9-12 行目)

    ACE は、15 行目の 200 OK 中に含まれる Set-Cookie を見て、sticky table entry を追加します。

    sticky_cookie_03.png

    また、show sticky  database の結果を見ての通り、ACE は、set-cookie だけではなく、http request 中の cookie sticky table に登録します。

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