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

ACE: [事例] cookie が set されているのに期待と異なる server へ転送する

    今回紹介する事例は、server からの HTTP response 中に Set-cookie が挿入されているにもかかわらず、次の Cookie 付き GET request が別の server に転送されるというものです。

    切り分け内容は下記になります。 ACE のどういった実装を見落としていて、どのような設定が必要か推測してください。

    --- 切り分け内容 ---

    - 7, 8 行目の HTTP request 中に cookie set されておらず、client 205 行目の Set-Cookie cookie を学習している。

    - 205 行目の HTTP response Server から Set-Cookie=sv2 を受信

    - 215 行目の HTTP request 中に Cookie:      sv_cookie=sv2 Set して送信。

    - 218 行目の HTTP response は、cookie set した sv2 ではなく、sv1 から返ってくる??? (215 行目で cookie set しているので、sv2 から response が返ってくることを期待。)

    - ACE sticky table からも、試験前後で追加されている entry sv2 であり、sv2 を使用して欲しい。

    # 構成

    sticky_case_01.png

    # 7 行目 capture

    sticky_case_02.png

    # 8 行目 capture

    sticky_case_03.png

    # 205 行目 capture

    sticky_case_04.png

    # 215 行目 capture

    sticky_case_05.png

    # 218 行目 capture

    sticky_case_06.png

    # show  sticky database

    ACE20/Admin# sh sticky database

    !___ 試験前

    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                            86382          -

    ACE20/Admin#

    # show  run

    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

    ### 答え

    8 行目と 215 行目の ip address, port# を確認すると、同一であることが確認できます。 また、syn packet 1, 2 行目にしかないので、8, 215 行目の packet は同一 connection を使用した通信になります。(8行目が最初の GET request で、215行目が同一 connection を使用した 2 番目の GET request) ACE: Hardware architecture から見た L3/L4  と L7 の違い に書かれているように、2 番目以降の request FastPath で折り返しますので、http header を確認せず既存 connection が使用され続けます。 そのため、cookie set されていたとしても、ACE はその cookie を確認しないため、既存 connection を使用し、sv1 に転送されてしまいました。 2 番目以降の request でも http header を確認したい場合、persistence-rebalance の設定が必要になります。

    persistence-rebalance の動作については、ACE: persistence-rebalance に記載されているので合わせてご参照ください。

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