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 :)

