Forum Discussion

mikek845_136123's avatar
mikek845_136123
Icon for Nimbostratus rankNimbostratus
Oct 22, 2013

iRule for BIGIP 9.2 with Websphere ND 8.5

Hello everyone,

 

We are migrating from Oracle Web server to Websphere Network Deployment 8.5. We kept original Load balancing Persistance paramater "Cookie".

 

PC/Global IP A --- (Untrust) Firewall (DMZ) --- BIGIP 9.2 --- Websphere01 IHS01(Web Server) + Application server01 PC/Global IP B --- Websphere02 IHS02(Web Server) + Application server02 ND 8.5 allows cross connection (IHS01 -> Application server01 or Application server02; IHS02 -> Application server01 or Application server02. This is cluster Active-Active configuration)

 

Today we encountered the symptom that different JSESSIONID packets were returned from Websphere01 IHS to BIGIP using same TCP session between BIGIP 9.2 and Websphere01 IHS. Therefore, Global IP A received a wrong packet for Global IP B, vice versa. I think this behavior happens because : Websphere expects BIGIP to read JSESSIONID to handle packet accordingly, but BIGIP just configured for Layer 4 (Round robin) plus cookie-persistance (Connect to originally connected IHS server).

 

What we need is to disable Cookie persistance in Load Balancing, and apply iRule to read JSESSIONID.

 

Below is the sample iRule that I refereneced from "Deploying the BIG-IP LTM with IBM WebSphere 8" Page 16. http://www.f5.com/pdf/deployment-guides/ibm-websphere-8-dg.pdf But this iRule is written for BIG-IP LTM Version 11.1 HF2. Is this iRule would work fine with Version 9.2? Also, are there any suggestions in BIG-IP Version 9.2 configuration for Websphere ND 8.5?

 

when CLIENT_ACCEPTED { set add_persist 1 } when HTTP_RESPONSE { if { [HTTP::cookie exists "JSESSIONID"] and $add_persist } { persist add uie [HTTP::cookie "JSESSIONID"] set add_persist 0 } } when HTTP_REQUEST { if { [HTTP::cookie exists "JSESSIONID"] } { persist uie [HTTP::cookie "JSESSIONID"] } else { set jsess [findstr [HTTP::uri] "jsessionid" 11 ";"] if { $jsess != "" } { persist uie $jsess } } }