キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel
2160
閲覧回数
5
いいね!
2
返信

ACEのスティッキ設定について

kad168168
Level 1
Level 1

ACEでは、ある一つのVIPに接続されてきたHTTPリクエストを、
URL文字列の複数の条件により、後段にある複数のIPアドレス・ポート番号の
サーバへ、複数のスティッキおよびラウンドロビンの設定を行うことができるでしょうか。

具体的には、10.0.0.1:443のVIPに接続されてきたHTTPリクエストを、
・URLに sv=001 かつ type=100 が含まれていれば、10.0.1.1:8080に振り分ける
・URLに sv=002 かつ type=100 が含まれていれば、10.0.1.2:8080に振り分ける
・URLに sv=003 かつ type=100 が含まれていれば、10.0.1.3:8080に振り分ける
・上記以外で、URLに sv=001 が含まれていれば、10.0.1.1:80に振り分ける
・上記以外で、URLに sv=002 が含まれていれば、10.0.1.2:80に振り分ける
・上記以外で、URLに sv=003 が含まれていれば、10.0.1.3:80に振り分ける
・上記全てに当てはまらなければ、10.0.1.1:80、10.0.1.2:80、10.0.1.3:80にラウンドロビンに振り分ける
という振り分けを行うことができるでしょうか。
もしよろしければ、具体的な設定方法を教えていただけないでしょうか。

1 件の受理された解決策

受理された解決策

yushimaz
Cisco Employee
Cisco Employee

質問の内容から、おそらく、

GET /index.html?sv=001+type=100 HTTP/1.1

のような、request を想定しているのかと思います。

その場合、下記のように、secondary cookie の値を見て判断することで実現可能です。

rserver host sv1

  ip address 10.0.1.1

  inservice

rserver host sv2

  ip address 10.0.1.2

  inservice

rserver host sv3

  ip address 10.0.1.3

  inservice

serverfarm host sf

  rserver sv1 80

    inservice

  rserver sv2 80

    inservice

  rserver sv3 80

    inservice

serverfarm host sv1_80

  rserver sv1 80

    inservice

serverfarm host sv1_8080

  rserver sv1 8080

    inservice

serverfarm host sv2_80

  rserver sv2 80

    inservice

serverfarm host sv2_8080

  rserver sv2 8080

    inservice

serverfarm host sv3_80

  rserver sv3 80

    inservice

serverfarm host sv3_8080

  rserver sv3 8080

    inservice

class-map type http loadbalance match-any sv001

  2 match http cookie secondary sv cookie-value "001"

class-map type http loadbalance match-any sv002

  2 match http cookie secondary sv cookie-value "002"

class-map type http loadbalance match-any sv003

  2 match http cookie secondary sv cookie-value "003"

class-map type http loadbalance match-any type100

  2 match http cookie secondary type cookie-value "100"

class-map type http loadbalance match-all sv001type100

  2 match class-map sv001

  3 match class-map type100

class-map type http loadbalance match-all sv002type100

  2 match class-map sv002

  3 match class-map type100

class-map type http loadbalance match-all sv003type100

  2 match class-map sv003

  3 match class-map type100

class-map match-all test

  2 match virtual-address 10.0.0.1 tcp eq 443

policy-map type loadbalance first-match lb

  class class-default

    serverfarm sf

policy-map type loadbalance first-match secondarycookie

  class sv001type100

    serverfarm sv1_8080

  class sv002type100

    serverfarm sv2_8080

  class sv003type100

    serverfarm sv3_8080

  class sv001

    serverfarm sv1_80

  class sv002

    serverfarm sv2_80

  class sv003

    serverfarm sv3_80

  class class-default

    serverfarm sf

policy-map multi-match client-vips

  class test

    loadbalance vip inservice

    loadbalance policy secondarycookie

    loadbalance vip icmp-reply

url に =  が入ることがないと思うので、? 以下に入っていた場合を想定した設定です。
もし、? より前に sv=001 のような値が入るのであれば、secondary cookie ではなく、
match http url を用います。

vip address を 10.0.0.1:443 としていますが、http ではなく、https request を使用する

場合、証明書や鍵の import、及び ssl-proxy の設定が必要になります。

(上記設定例では、10.0.0.1:443 宛ての http request が送信された場合を想定しています。)

ご質問の "サーバへ、複数のスティッキおよびラウンドロビンの設定" というのは、

sv= や type= の条件に当てはまるものを特定の server へ転送、それ以外のもの

は roundrobin で server を選択という意味かと判断したので、sticky の設定は入れ

ていません。 (ACE の場合、sticky というと、connection 切断後も同じ server へ

転送することを指します。)

また、同一 connection における 2 番目以降の request に対しても、url を確認し、

再度 server を選択しなおすのであれば reblance の設定が必要になります。

ssl の設定に関しては、下記に例があるので必要に応じてご参照ください。

https://supportforums.cisco.com/docs/DOC-12491

sticky の設定に関しては、下記に例があるので必要に応じてご参照ください。

rebalance に関しては、下記に例があるので必要に応じてご参照ください。

https://supportforums.cisco.com/docs/DOC-12221

元の投稿で解決策を見る

2件の返信2

yushimaz
Cisco Employee
Cisco Employee

質問の内容から、おそらく、

GET /index.html?sv=001+type=100 HTTP/1.1

のような、request を想定しているのかと思います。

その場合、下記のように、secondary cookie の値を見て判断することで実現可能です。

rserver host sv1

  ip address 10.0.1.1

  inservice

rserver host sv2

  ip address 10.0.1.2

  inservice

rserver host sv3

  ip address 10.0.1.3

  inservice

serverfarm host sf

  rserver sv1 80

    inservice

  rserver sv2 80

    inservice

  rserver sv3 80

    inservice

serverfarm host sv1_80

  rserver sv1 80

    inservice

serverfarm host sv1_8080

  rserver sv1 8080

    inservice

serverfarm host sv2_80

  rserver sv2 80

    inservice

serverfarm host sv2_8080

  rserver sv2 8080

    inservice

serverfarm host sv3_80

  rserver sv3 80

    inservice

serverfarm host sv3_8080

  rserver sv3 8080

    inservice

class-map type http loadbalance match-any sv001

  2 match http cookie secondary sv cookie-value "001"

class-map type http loadbalance match-any sv002

  2 match http cookie secondary sv cookie-value "002"

class-map type http loadbalance match-any sv003

  2 match http cookie secondary sv cookie-value "003"

class-map type http loadbalance match-any type100

  2 match http cookie secondary type cookie-value "100"

class-map type http loadbalance match-all sv001type100

  2 match class-map sv001

  3 match class-map type100

class-map type http loadbalance match-all sv002type100

  2 match class-map sv002

  3 match class-map type100

class-map type http loadbalance match-all sv003type100

  2 match class-map sv003

  3 match class-map type100

class-map match-all test

  2 match virtual-address 10.0.0.1 tcp eq 443

policy-map type loadbalance first-match lb

  class class-default

    serverfarm sf

policy-map type loadbalance first-match secondarycookie

  class sv001type100

    serverfarm sv1_8080

  class sv002type100

    serverfarm sv2_8080

  class sv003type100

    serverfarm sv3_8080

  class sv001

    serverfarm sv1_80

  class sv002

    serverfarm sv2_80

  class sv003

    serverfarm sv3_80

  class class-default

    serverfarm sf

policy-map multi-match client-vips

  class test

    loadbalance vip inservice

    loadbalance policy secondarycookie

    loadbalance vip icmp-reply

url に =  が入ることがないと思うので、? 以下に入っていた場合を想定した設定です。
もし、? より前に sv=001 のような値が入るのであれば、secondary cookie ではなく、
match http url を用います。

vip address を 10.0.0.1:443 としていますが、http ではなく、https request を使用する

場合、証明書や鍵の import、及び ssl-proxy の設定が必要になります。

(上記設定例では、10.0.0.1:443 宛ての http request が送信された場合を想定しています。)

ご質問の "サーバへ、複数のスティッキおよびラウンドロビンの設定" というのは、

sv= や type= の条件に当てはまるものを特定の server へ転送、それ以外のもの

は roundrobin で server を選択という意味かと判断したので、sticky の設定は入れ

ていません。 (ACE の場合、sticky というと、connection 切断後も同じ server へ

転送することを指します。)

また、同一 connection における 2 番目以降の request に対しても、url を確認し、

再度 server を選択しなおすのであれば reblance の設定が必要になります。

ssl の設定に関しては、下記に例があるので必要に応じてご参照ください。

https://supportforums.cisco.com/docs/DOC-12491

sticky の設定に関しては、下記に例があるので必要に応じてご参照ください。

rebalance に関しては、下記に例があるので必要に応じてご参照ください。

https://supportforums.cisco.com/docs/DOC-12221

yushimaz様
返答が大変遅くなり、申し訳ございません。
大変分かりやすく具体的なアドバイスと例示、ありがとうございます。
いただいた設定を適用してみたところ、意図した通りに動作しました。
ACEに対する理解も進みました。
本当にありがとうございました。