Lab goal
When a clients asks for beta/a2.html, return "Hello" instead.
Use VIP 10.136.85.14
Use VIP 10.136.85.14
Setup
The loadbalancer is Radware's Alteon VA version 29.5.1.0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /c/slb/real 1 ena ipver v4 rip 10.136.85.1 /c/slb/real 2 ena ipver v4 rip 10.136.85.2 /c/slb/real 3 ena ipver v4 rip 10.136.85.3 /c/slb/group 10 ipver v4 add 1 add 2 add 3 |
Alteon configuration
First, lets configure the VIP/virt.
Remember routing! The returning traffic needs to go through the Alteon, otherwise TCP will break. So we also need to configure Proxy IP/SNAT so return traffic will go through the Alteon.
Remember routing! The returning traffic needs to go through the Alteon, otherwise TCP will break. So we also need to configure Proxy IP/SNAT so return traffic will go through the Alteon.
1 2 3 4 5 6 7 8 | /c/slb/virt 85_14 ena vip 10.136.85.14 /c/slb/virt 85_14/service 80 http group 10 /c/slb/virt 85_14/service 80 http/pip mode address addr v4 10.136.85.200 |
Next we need to write the Appshape++ script:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | when HTTP_REQUEST { # retrieve URL from the request set url [HTTP::uri] set reply { <html> <body> <h1>Hello!</h1> <body> </html> } # check if URL is with /beta/a2.html if {[string match "/beta/a2.html" $url] == 1} { # change the URL and select SRV1 HTTP::respond 200 content $reply } } -----END |
- Line 1-17 - When a request comes in do:
- Line 3 - Extract the URL
- Line 4-10 - Set a response content.
- Lines 13-16 - If the URL is "beta/a2.html" then:
- Line 15 - Respond with code 200 and the content we set earlier.
- Line 19 - The end of the script.
Now lets import the script and apply it to the VIP/virt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | /c/slb/appshape/script respond ena import text when HTTP_REQUEST { # retrieve URL from the request set url [HTTP::uri] set reply { <html> <body> <h1>Hello!</h1> <body> </html> } # check if URL is /beta/a2.html if {[string match "/beta/a2.html" $url] == 1} { # change the URL and select SRV1 HTTP::respond 200 content $reply } } -----END /c/slb/virt 85_14/service 80 http/appshape add 10 respond |
Test
Summary
After writing few AppShape++ , a pattern emerges: It really easy :)