Forum Discussion
Direct hundreds of clients to 10's of pools by URI
www.website.com/customer1
They get redirected to:
pool1.website.com/customer1
Customer 2 hits:
www.website.com/customer2
They get redirected to
pool13.website.com/customer2
I would like to handle all of this within the F5 is possible instead of handing them off to individual VIP's mapped to pools. Is it possible to do this:
1) Have the customer hit a single URL (example):
www.website.com/customer2
2) Lookup their pool association from a "routing" table that is populated from an external datastore (example):
customer1 pool1
customer2 pool13
customer3 pool4
.
.
.
3) Direct traffic to the pool based on decision in 2)
If this IS possible, is it better to "cache" the customer routing data in a table locally on the F5? How would I poison that data if I move a customer to a new pool?
I know this is kind of an architecture question, but I figured I'd start at what the iRule is capable of doing before going any farther.
- Richard__HarlanHistoric F5 AccountYou could do the following create a table in the LTM. When a customer come in and requests there website you could first do a look up in the table and see if the table has a result. If the table does not have the result then you can do a sideband connection to a web application and pull the data from the database. Once the data is back from the sideband you can update the table with a timeout to age out the data to keep it from getting stale.
- nitassEmployeein case of using data group.
[root@ve10:Active] config b virtual bar list virtual bar { destination 172.28.19.79:80 ip protocol 6 rules myrule profiles { http {} tcp {} } } [root@ve10:Active] config b rule myrule list rule myrule { when HTTP_REQUEST { if {[string tolower [HTTP::host]] equals "www.website.com"} { scan [HTTP::uri] {/%s} cust set pl [class match -value $cust equals redirect_class] if {$pl ne ""} { HTTP::redirect "http://[string map "www $pl" [string tolower [HTTP::host]]][HTTP::uri]" } } } } [root@ve10:Active] config b class redirect_class list class redirect_class { { "customer1" { "pool1" } "customer2" { "pool13" } "customer3" { "pool4" } } } [root@ve10:Active] config curl -I http://172.28.19.79/customer1 -H "Host: www.website.com" HTTP/1.0 302 Found Location: http://pool1.website.com/customer1 Server: BigIP Connection: Keep-Alive Content-Length: 0 [root@ve10:Active] config curl -I http://172.28.19.79/customer2 -H "Host: www.website.com" HTTP/1.0 302 Found Location: http://pool13.website.com/customer2 Server: BigIP Connection: Keep-Alive Content-Length: 0 [root@ve10:Active] config curl -I http://172.28.19.79/customer3 -H "Host: www.website.com" HTTP/1.0 302 Found Location: http://pool4.website.com/customer3 Server: BigIP Connection: Keep-Alive Content-Length: 0
- Daniel_ReznicekNimbostratusHi nitass,
- nitassEmployeeDo you know what the performance would be with ~2000 entries in that datagroup? I'm concerned about the lookup time with so many entries.i do not have performance data but i think ~2k entries is not too many.
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com