Richard Davies wrote: The UK has a good crop of technology pioneers in cloud computing - for example ElasticHosts, FlexiScale, Flexiant, OnApp - and also some strong government initiatives such as G-Cloud.
We will have to see whether this kind of technical leadership converts into swift mass-market adoption or not.
A customer recently contacted me regarding an iRule that worked in v 9.4 but did not produce the expected results in v 10. A little research revealed that the new plug-in architecture is influencing when the iRule is firing.
The iRule
The iRule is logging the value of the X-PvInfo header or indicating the header is not present.
when HTTP_RESPONSE { if {[HTTP::header exists X-PvInfo]}{ log local0. "X-PvInfo:[HTTP::header "X-PvInfo"]" } else { log local0. "did not find X-PvInfo header" } }
The Problem
WebAccelerator inserts the X-PvInfo header into each and every response that it processes, there should be no instances where the header is missing however in v10 the Local Traffic logs on the Big-IP show "Rule LogHeaders <HTTP_RESPONSE>: did not find X-PvInfo header." Looking at the headers received by the browser I can clearly see that the header does exist.
With the new plug-in architecture the HTTP_RESPONSE event is triggered after the response from the server before the plug-in and WebAccelerator processes the response. The response from the server does not contain the X-PvInfo header that is inserted after WebAccelerator has processed the server response. Prior to the plug-in architecture the HTTP_RESPONSE event fired after WebAccelerator processed the response from the server. The difference in when the iRule fires results in the log message that the header doesn't exist.
The Solution
To have an HTTP_RESPONSE event fire after WebAccelerator has processed and manipulated the response you need to define a custom virtual server configuration known as VIP targeting VIP. VIP-to-VIP configures a front virtual server which contains the WebAccelerator post-processing iRule and the back virtual server has the WebAccelerator enabled class associated with it. Solution 9388 on AskF5 illustrates how to do this using ASM. The same applies to WebAccelerator.
The trick with VIP targeting VIP is the front server does not have a pool assigned to it the pool is selected from within the iRule. Our iRule above would need to be changed to:
when RULE_INIT { # Define a global variable which references the WA-enabled VIP name set ::targetvip "back_vip" } when HTTP_REQUEST { virtual $::targetvip }
when HTTP_RESPONSE { if {[HTTP::header exists X-PvInfo]}{ log local0. "X-PvInfo:[HTTP::header "X-PvInfo"]" } else { log local0. "did not find X-PvInfo header" } }
The front virtual server should have a configuration that looks something like:
About Dawn Parzych Dawn Parzych is a product manager for F5 Networks, the global leader in Application Delivery Networking. For the past 2 years, she has been in London working as an acceleration architect with F5 customers based in Europe, the Middle East, and Africa. Dawn has helped companies in finance, retail, media, and other industries optimize performance levels and overcome Web application delivery challenges. In her ten years as a Web performance specialist, Dawn has covered everything from load testing to Web performance monitoring to application delivery.
Subscribe to the World's Most Powerful Newsletters
Subscribe to Our Rss Feeds & Get Your SYS-CON News Live!
Click to Add our RSS Feeds to the Service of Your Choice: