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

ACE: persistence-rebalance

    ACE L7 設定を行った場合、proxy/unproxy 処理が行われます。また、 ACE: Hardware architecture から見た L3/L4  と L7 の違い に書かれているように、2 番目以降の request FastPath で折り返します。 つまり、http header を確認することなく、既存 connection が使用され続けます。

    rebalance_01.png

    例えば、server 1 のみに a.jpg という contents が、server2 のみに b.jpg という contents がある場合、

    GET  /a.jpg

    GET  /b.jpg

    という request を順番に送信すると、ACE は最初の request を確認し、server1 packet を転送します。 後続の request に対しては check を行わず、server1 との connection を使用し続けてしまいます。

    rebalance_02.png

    2 番目以降の header check したい場合、persistence-rebalance の設定が必要になります。

    この設定を追加することで、再度 proxy 処理を行う (reporxy) ようになります。

    以下、persistence-rebalance 設定の有無による動作の違いを実際に確認してみます。

    # 構成

    rebalance_03.png

    # server 設定

    sv1:/# echo sv1 > /var/www/a.jpg

    !___ sv1 a.jpg という file を作成

    sv2:/# echo sv2 > /var/www/b.jpg

    !___ sv2 b.jpg という file を作成

    # ACE 設定 (rebalance 適用前)


    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.11

      inservice

    rserver host    sv2

      ip address 192.168.72.12

      inservice

    serverfarm    host sf1

      rserver sv1

        inservice

    serverfarm    host sf2

      rserver sv2

        inservice

    class-map    type http loadbalance match-all a.jpg

      2 match http url /a.jpg

    class-map    type http loadbalance match-all b.jpg

      2 match http url /b.jpg

    class-map    match-all vip

      2 match virtual-address 192.168.71.100 tcp    eq www

    policy-map    type loadbalance first-match lb

      class a.jpg

        serverfarm sf1

    !___ url /a.jpg match した場合、sf1(sv1) を使用

      class b.jpg

        serverfarm sf2

    !___ url /b.jpg match した場合、sf2(sv2) を使用

    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 /a.jpg HTTP/1.1

    Host:a

    !___ /a.jpg match する request を送信

    HTTP/1.1    200 OK

    Date: Tue, 06    Jul 2010 02:25:40 GMT

    Server:    Apache/1.3.34 (Debian)

    Last-Modified:    Tue, 06 Jul 2010 02:18:52 GMT

    ETag:    "2daac9-4-4c32928c"

    Accept-Ranges:    bytes

    Content-Length:    4

    Content-Type:    image/jpeg

    sv1

    !___ sv1 から 200 OK response

    GET /b.jpg HTTP/1.1

    Host:b

    !___ 同一 connection において続けて /b.jpg match する request を送信

    HTTP/1.1    404 Not Found

    !___ 既存 connection を利用し、sv1 access file が存在しないため、404 Not    Found が帰ってくる

    Date: Tue, 06    Jul 2010 02:26:03 GMT

    Server:    Apache/1.3.34 (Debian)

    Transfer-Encoding:    chunked

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

    101

    <!DOCTYPE    HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

    <HTML><HEAD>

    <TITLE>404    Not Found</TITLE>

    </HEAD><BODY>

    <H1>Not    Found</H1>

    The requested    URL /b.jpg was not found on this server.<P>

    <HR>

    <ADDRESS>Apache/1.3.34    Server at b Port 80</ADDRESS>

    </BODY></HTML>

    0

    # vip access 時の ACE 出力


    ACE20/Admin# clear service-policy client-vips

    !___ service-policy counter を初期化

    !___ client から GET /a.jpg    request を送信

    ACE20/Admin# sh conn

    total current    connections : 2

    conn-id    np dir proto vlan source                destination           state

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

    113        2  in  TCP   771  192.168.71.11:52766   192.168.71.100:80     ESTAB

    114        2  out TCP   772 192.168.72.11:80      192.168.71.11:52766   ESTAB

    !___ sf1(sv1) を使用

    ACE20/Admin# sh service-policy detail

    Policy-map :    client-vips

    Status     : ACTIVE

    Description:    -----------------------------------------

    Interface:    vlan 771

      service-policy: client-vips

        class: vip

         VIP Address:    Protocol:  Port:

         192.168.71.100  tcp        eq    80

          loadbalance:

            L7 loadbalance policy: lb

            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

            L7 Loadbalance policy : lb

              class/match    : a.jpg

                LB action: :

                   primary serverfarm: sf1

                        state: UP

                      backup serverfarm : -

                hit    count        : 1

                dropped conns    : 0

              class/match : b.jpg

                LB action: :

                   primary serverfarm: sf2

                        state: UP

                      backup serverfarm : -

                hit count        : 0

                dropped conns    : 0

    ACE20/Admin#

    !___ client から GET /b.jpg    request を送信

    ACE20/Admin#    sh conn

    total current    connections : 2

    conn-id    np dir proto vlan source                destination           state

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

    113        2  in  TCP   771  192.168.71.11:52766   192.168.71.100:80     ESTAB

    114        2  out TCP   772 192.168.72.11:80      192.168.71.11:52766   ESTAB

    !___ 既存 connection をそのまま使用

    ACE20/Admin#

    ACE20/Admin# sh service-policy detail

    Policy-map :    client-vips

    Status     : ACTIVE

    Description:    -----------------------------------------

    Interface:    vlan 771

      service-policy: client-vips

        class: vip

         VIP Address:    Protocol:  Port:

         192.168.71.100  tcp        eq    80

          loadbalance:

            L7 loadbalance policy: lb

            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

            L7 Loadbalance policy : lb

              class/match : a.jpg

                LB action: :

                   primary serverfarm: sf1

                        state: UP

                      backup serverfarm : -

                hit count        : 1

                dropped conns    : 0

              class/match    : b.jpg

                LB action: :

                   primary serverfarm: sf2

                        state: UP

                      backup serverfarm : -

                hit    count        : 0

    !___ counter に変化なし

                dropped conns    : 0

    ACE20/Admin#

    # ACE 設定 (rebalance 適用後)

    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.11

      inservice

    rserver host    sv2

      ip address 192.168.72.12

      inservice

    serverfarm    host sf1

      rserver sv1

        inservice

    serverfarm    host sf2

      rserver sv2

        inservice

    parameter-map    type http rebalance

      persistence-rebalance

    !___ parameter-map persistence-rebalance を使用するよう設定

    class-map    type http loadbalance match-all a.jpg

      2 match http url /a.jpg

    class-map    type http loadbalance match-all b.jpg

      2 match http url /b.jpg

    class-map    match-all vip

      2 match virtual-address 192.168.71.100 tcp    eq www

    policy-map    type loadbalance first-match lb

      class a.jpg

        serverfarm sf1

      class b.jpg

        serverfarm sf2

    policy-map    multi-match client-vips

      class vip

        loadbalance vip inservice

        loadbalance policy lb

        loadbalance vip icmp-reply

        appl-parameter http advanced-options    rebalance

    !___ 設定した parameter-map policy-map 上に適用

    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 /a.jpg HTTP/1.1

    Host:a

    !___ /a.jpg match する request を送信

    HTTP/1.1    200 OK

    Date: Tue, 06    Jul 2010 03:34:34 GMT

    Server:    Apache/1.3.34 (Debian)

    Last-Modified:    Tue, 06 Jul 2010 02:18:52 GMT

    ETag:    "2daac9-4-4c32928c"

    Accept-Ranges:    bytes

    Content-Length:    4

    Content-Type:    image/jpeg

    sv1

    !___ sv1 から 200 OK response

    GET /b.jpg HTTP/1.1

    Host:a

    !___ 同一 connection において続けて /b.jpg match する request を送信

    HTTP/1.1    200 OK

    Date: Tue, 06    Jul 2010 03:34:58 GMT

    Server:    Apache/1.3.34 (Debian)

    Last-Modified:    Tue, 06 Jul 2010 02:19:06 GMT

    ETag:    "2e4ac8-4-4c32929a"

    Accept-Ranges:    bytes

    Content-Length:    4

    Content-Type:    image/jpeg

    sv2

    !___ sv2 から 200 OK response

    # vip access 時の ACE 出力

    !___ client から GET /a.jpg    request を送信

    ACE20/Admin# sh conn

    total current    connections : 2

    conn-id    np dir proto vlan source                destination           state

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

    115        2  in  TCP   771  192.168.71.11:53160   192.168.71.100:80     ESTAB

    116        2  out TCP   772  192.168.72.11:80      192.168.71.11:53160   ESTAB

    !___ sf1(sv1) を使用

    ACE20/Admin#

    ACE20/Admin# sh service-policy detail

    Policy-map :    client-vips

    Status     : ACTIVE

    Description:    -----------------------------------------

    Interface:    vlan 771

      service-policy: client-vips

        class: vip

         VIP Address:    Protocol:  Port:

         192.168.71.100  tcp        eq    80

          loadbalance:

            L7 loadbalance policy: lb

            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

            L7 Loadbalance policy : lb

              class/match    : a.jpg

                LB action: :

                   primary serverfarm: sf1

                        state: UP

                      backup serverfarm : -

                hit    count        : 1

                dropped conns    : 0

              class/match : b.jpg

                LB action: :

                   primary serverfarm: sf2

                        state: UP

                      backup serverfarm : -

                hit count        : 0

                dropped conns    : 0

            Parameter-map(s):

              rebalance

    ACE20/Admin#

    ACE20/Admin# show stats http | i prox

    Reproxied requests        : 0          , Headers removed          : 0

    HTTP unproxy conns        : 1          , Pipeline flushes         : 0

    Unproxy msgs sent         : 1

    ACE20/Admin#

    !___ client から GET /b.jpg    request を送信

    ACE20/Admin# sh conn

    total current    connections : 2

    conn-id    np dir proto vlan source                destination           state

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

    115        2  in  TCP   771  192.168.71.11:53160   192.168.71.100:80     ESTAB

    117        2  out TCP   772  192.168.72.12:80      192.168.71.11:53160   ESTAB

    !___ sf2(sv2) を使用 (先ほどとは別 connection)

    ACE20/Admin#

    ACE20/Admin# sh service-policy detail

    Policy-map :    client-vips

    Status     : ACTIVE

    Description:    -----------------------------------------

    Interface:    vlan 771

      service-policy: client-vips

        class: vip

         VIP Address:    Protocol:  Port:

         192.168.71.100  tcp        eq    80

          loadbalance:

            L7 loadbalance policy: lb

            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 : 3         , server byte count: 356

            conn-rate-limit      : 0         , drop-count : 0

            bandwidth-rate-limit : 0         , drop-count : 0

            L7 Loadbalance policy : lb

              class/match : a.jpg

                LB action: :

                   primary serverfarm: sf1

                        state: UP

                      backup serverfarm : -

                hit count        : 1

                dropped conns    : 0

              class/match    : b.jpg

                LB action: :

                   primary serverfarm: sf2

                        state: UP

                      backup serverfarm : -

                hit    count        : 1

    !___ class b.jpg match

                dropped conns    : 0

            Parameter-map(s):

              rebalance

    ACE20/Admin#

    ACE20/Admin# show stats http | i prox

    Reproxied    requests        : 1          , Headers removed          : 0

    HTTP unproxy conns        : 2          , Pipeline flushes         : 0

    Unproxy msgs sent         : 2

    ACE20/Admin#

    # persistence-rebalance 使用時の capture

    rebalance_04.png

    persistence-rebalance の設定が有効になっている場合、より最適な class (今回の場合 b.jpg) を見つけると、ACE - server 間の既存 connection RST し、別 server と新規 connection を確立します。

    上図の場合、GET /a.jpg 受信 (No.110) sv1 connection を確立 (No.111 - 115) していますが、GET /b.jpg 受信 (No.162) 後、この sv1 に対して RST を送信 (No.163) し、sv2 と新規 connection を確立 (No.164 - 168) しています。

バージョン履歴
改訂番号
1/1
最終更新:
‎07-27-2010 02:34 PM
更新者:
 
添付