Friday, August 18, 2006

citrix netscaler :: wildcard not so wild for Content Switch

With my son going to church group meetings, I had a bit free time to resume playing with the citrix Netscaler EE-9000. I set up a policy using in-line expression to say I want "http.header.host == jack*.blogspot.com", then I created a content switch virtual server to associate the policy with a LB virtual server I created earlier. Simple enough, huh? Not really, all attempts to hit the CS-LB service (firefox, IE, curl) were met with "500 service not available error". Ethereal dumps on the client and tcpdump dumps on the Citrix box couldn't give me anything wrong with communication either.

Combing through the ICG (Installation & Configuration guide), I found such an error usually is due to the fact that an underlying feature is not enabled. I went back to the system node on the configuration GUI. And sure enough, 'content switching' is not checked by default under 'Features'. (while writing this, I am thinking, would it be better to shadow it out if such a feature is not enabled!) Checked & saved. Still got the same error. reboot the box, delete/recreate the policy & cs virtual server, all to no avail.

I cried for help by calling up my friend. He in turn got his lady friend, a Citrix SE, to chat with me. Off the bat, she told me that she's young with the company and may not know all the answers. I said to myself, "oh lord...sigh...at least she's honest." After a few go-to-meeting sessions and hauling other SEs into it, she finally broke it to me, "no, no wildcard would work for content switching." Great, isn't it?!

So, she and I went down the path to make-do with the limit set of operands on the GUI, trying to come up with a compound regular expression to mimic this behavior. None could really works so far. She kept telling me that newer builds won't help since they only fix bugs and won't change how RegExp works. She also told me that this IS how a PERL Reg object works for Citrix Content Switching. I was smiling along, begging to differ as a certified PERL programmer.

At this point, I am somewhat perplexed since it is hard for me to believe it didn't have true regular expression support. My employer opts not to use sub-domains or URL to divide traffic to load-balanced clusters. Instead, the sales/marketing geniuses want the customer to have any URL they want, only to find us engineers and architects scrambling to direct requests to these URL to a proper LB cluster. Sina and Google are using Netscaler in thousands. Does it mean that they don't need wildcards?

No comments: