Broken Session Stikiness Between Plugin and WLS - Weblogic

This is a discussion on Broken Session Stikiness Between Plugin and WLS - Weblogic ; I ran into a problem with the stickiness between an NASAPI plugin (iPlanet) and a cluster of WLS boxes. For the application I'm working on, I need to put specialized data processing appliances between the plugin and the app servers. ...

+ Reply to Thread
Results 1 to 4 of 4

Thread: Broken Session Stikiness Between Plugin and WLS

  1. Broken Session Stikiness Between Plugin and WLS


    I ran into a problem with the stickiness between an NASAPI plugin (iPlanet) and
    a cluster of WLS boxes. For the application I'm working on, I need to put

    specialized data processing appliances between the plugin and the app servers.
    To simplify the discussion, just think the appliances as proxies. (I know I really
    don't want to get in between the plugin and WLS servers but don't really have
    a choice.)

    ---------
    | plugin |
    ---------
    / \
    / \
    / \
    ---------- ----------
    | Proxy 1 | | Proxy 2 |
    ----------- ----------
    | |
    | |
    | |
    ---------- ----------
    | WLS 1 | | WLS 2 |
    ----------- -----------


    The plugin and WLS are of version 8.1.

    In the plugin obj.conf:

    Service fn="wl-proxy" WebLogicCluster="Proxy1:7890,Proxy2:7890"
    DynamicServerList="OFF" Idempotent="OFF"


    In testing with this config, the plugin at least for half of the times routes
    requests to the wrong side of the WLS. For example, a client first logins to WLS
    1 and gets the set-cookie header. Right after that it sends a second request with
    the same cookie. For half of the times the second request is routed to WLS 2.
    This breaks the stickiness of the session. The responses for the login request
    from WLS servers contains WL headers such as,

    Set-Cookie: JSESSIONID=4oD3HtNZKokkx5llOmLqi0uhxPhur7HSo29Dmyr bGERuks2YYmkO!-1294289878;
    path=/ X-WebLogic-Cluster-List: -1294289878!WLS1!7001!-1|-848635951!WLS2!7001!-1


    In the second header above, it contains the IP and port for the WLS servers in
    the cluster. Would this interfere with the WebLogicCluster definition in the plugin
    obj.conf file and mess up the stickiness routing? In other words, does the plugin
    still use info in X-WebLogic-Cluster-List header to do the stickiness routing
    even when DynamicServerList="OFF"? Is there any way to configure the plugin to
    get around this?

    Just for my curiosity, what is the big negative number before the WLS server IP/Port
    in the X-WebLogic-Cluster-List header, e.g. -848635951 in -848635951!WLS2!7001!-1?


    Any suggestion is appreciated.

    Kevin


  2. Re: Broken Session Stikiness Between Plugin and WLS


    Hey Kevin,

    I recently worked on a similar scenario. We are also using IPlanet with WebLogic
    7 SP4 Cluster, but for our case there is no appliance between the appserver and
    proxy server. Anyway, I may have determined why you are not maintaining sessions.
    In your weblogic.xml descriptor for your web app there is a property named "CookieName",
    and the default value for this property is "JSESSIONID". WebLogic recommends to
    change this value to something that is specific to your web app. For example,
    if the application is an accounting system, then you should use something like
    "JSESSIONIDacct" for the cookie name. Also, make sure the property named "PersistentStoreType"
    contains the value "replicated", not "memory"; this is what you need configured
    for a cluster to work correctly on the WebLogic side.

    You also need to configure IPlanet so that it is aware of the cookie name used
    for that specific web app. You are missing a property in your Object configuration
    in the obj.conf file. In your configuration simply add the cookie name and make
    sure the value is the same as the value you specified in weblogic.xml for this
    web app...

    Service fn="wl-proxy" WebLogicCluster="Proxy1:7890,Proxy2:7890"
    DynamicServerList="OFF" Idempotent="OFF" CookieName="JSESSIONIDacct"



    I used "JSESSIONIDacct" from my example above but call it whatever the hell you
    want, just make it the same value from weblogic.xml. That should definitely fix
    your session issue.

    On your other question, when you use DynamicServerList="OFF", the plug-in definitely
    ignores the dynamic cluster list and only uses the server list from the "WebLogicCluster"
    property. Refer to the documentation below for a complete list and description
    of all properties that you can configure on the Weblogic IPlanet proxy plugin.

    http://e-docs.bea.com/wls/docs70/plu...in_params.html

    Hope that helps!

    Raffi


    "Kevin Woods" wrote:
    >
    >I ran into a problem with the stickiness between an NASAPI plugin (iPlanet)
    >and
    >a cluster of WLS boxes. For the application I'm working on, I need to
    >put
    >
    >specialized data processing appliances between the plugin and the app
    >servers.
    >To simplify the discussion, just think the appliances as proxies. (I
    >know I really
    >don't want to get in between the plugin and WLS servers but don't really
    >have
    >a choice.)
    >
    >---------
    >| plugin |
    >---------
    >/ \
    > / \
    > / \
    > ---------- ----------
    >| Proxy 1 | | Proxy 2 |
    > ----------- ----------
    > | |
    > | |
    > | |
    > ---------- ----------
    > | WLS 1 | | WLS 2 |
    > ----------- -----------
    >
    >
    >The plugin and WLS are of version 8.1.
    >
    >In the plugin obj.conf:
    >
    > Service fn="wl-proxy" WebLogicCluster="Proxy1:7890,Proxy2:7890"
    >DynamicServerList="OFF" Idempotent="OFF"

    >
    >In testing with this config, the plugin at least for half of the times
    >routes
    >requests to the wrong side of the WLS. For example, a client first logins
    >to WLS
    >1 and gets the set-cookie header. Right after that it sends a second
    >request with
    >the same cookie. For half of the times the second request is routed to
    >WLS 2.
    >This breaks the stickiness of the session. The responses for the login
    >request
    >from WLS servers contains WL headers such as,
    >
    >Set-Cookie: JSESSIONID=4oD3HtNZKokkx5llOmLqi0uhxPhur7HSo29Dmyr bGERuks2YYmkO!-1294289878;
    >path=/ X-WebLogic-Cluster-List: -1294289878!WLS1!7001!-1|-848635951!WLS2!7001!-1
    >
    >
    >In the second header above, it contains the IP and port for the WLS servers
    >in
    >the cluster. Would this interfere with the WebLogicCluster definition
    >in the plugin
    >obj.conf file and mess up the stickiness routing? In other words, does
    >the plugin
    >still use info in X-WebLogic-Cluster-List header to do the stickiness
    >routing
    >even when DynamicServerList="OFF"? Is there any way to configure the
    >plugin to
    >get around this?
    >
    >Just for my curiosity, what is the big negative number before the WLS
    >server IP/Port
    >in the X-WebLogic-Cluster-List header, e.g. -848635951 in -848635951!WLS2!7001!-1?
    >
    >
    >Any suggestion is appreciated.
    >
    >Kevin
    >



  3. Re: Broken Session Stikiness Between Plugin and WLS


    Hi Raffi,

    Thank you for the reply. In my case, taking the default the cookie-name
    doesn't seem to be the problem because by removing my boxes in between
    the plugin and the WLS the session stickiness is maintained. I'll look into
    the PersistentStoreType parameter as you have suggested.

    Thanks again!

    Kevin


    "Raffi Basmajian" wrote:
    >
    >Hey Kevin,
    >
    > I recently worked on a similar scenario. We are also using IPlanet
    >with WebLogic
    >7 SP4 Cluster, but for our case there is no appliance between the appserver
    >and
    >proxy server. Anyway, I may have determined why you are not maintaining
    >sessions.
    >In your weblogic.xml descriptor for your web app there is a property
    >named "CookieName",
    >and the default value for this property is "JSESSIONID". WebLogic recommends
    >to
    >change this value to something that is specific to your web app. For
    >example,
    >if the application is an accounting system, then you should use something
    >like
    >"JSESSIONIDacct" for the cookie name. Also, make sure the property named
    >"PersistentStoreType"
    >contains the value "replicated", not "memory"; this is what you need
    >configured
    >for a cluster to work correctly on the WebLogic side.
    >
    >You also need to configure IPlanet so that it is aware of the cookie
    >name used
    >for that specific web app. You are missing a property in your Object
    >configuration
    >in the obj.conf file. In your configuration simply add the cookie name
    >and make
    >sure the value is the same as the value you specified in weblogic.xml
    >for this
    >web app...
    >
    > Service fn="wl-proxy" WebLogicCluster="Proxy1:7890,Proxy2:7890"
    >DynamicServerList="OFF" Idempotent="OFF" CookieName="JSESSIONIDacct"
    >

    >
    >
    >I used "JSESSIONIDacct" from my example above but call it whatever the
    >hell you
    >want, just make it the same value from weblogic.xml. That should definitely
    >fix
    >your session issue.
    >
    >On your other question, when you use DynamicServerList="OFF", the plug-in
    >definitely
    >ignores the dynamic cluster list and only uses the server list from the
    >"WebLogicCluster"
    >property. Refer to the documentation below for a complete list and description
    >of all properties that you can configure on the Weblogic IPlanet proxy
    >plugin.
    >
    >http://e-docs.bea.com/wls/docs70/plu...in_params.html
    >
    >Hope that helps!
    >
    >Raffi
    >



  4. Re: Broken Session Stikiness Between Plugin and WLS


    Yes, you're right about the cookie name in that if you change it from the default
    value "JSESSIONID", then the proxy plugin settings should reflect this change
    as well.

    You may also want to read section 6-26, 6-27 of "Using WebLogic Server Clusters"
    (WL7). There is documentation regarding translation issues between firewalls and
    WebLogic app servers. It might help.

    Raffi



    "Kevin Woods" wrote:
    >
    >Hi Raffi,
    >
    >Thank you for the reply. In my case, taking the default the cookie-name
    >
    >doesn't seem to be the problem because by removing my boxes in between
    >the plugin and the WLS the session stickiness is maintained. I'll look
    >into
    >the PersistentStoreType parameter as you have suggested.
    >
    >Thanks again!
    >
    >Kevin
    >
    >
    >"Raffi Basmajian" wrote:
    >>
    >>Hey Kevin,
    >>
    >> I recently worked on a similar scenario. We are also using IPlanet
    >>with WebLogic
    >>7 SP4 Cluster, but for our case there is no appliance between the appserver
    >>and
    >>proxy server. Anyway, I may have determined why you are not maintaining
    >>sessions.
    >>In your weblogic.xml descriptor for your web app there is a property
    >>named "CookieName",
    >>and the default value for this property is "JSESSIONID". WebLogic recommends
    >>to
    >>change this value to something that is specific to your web app. For
    >>example,
    >>if the application is an accounting system, then you should use something
    >>like
    >>"JSESSIONIDacct" for the cookie name. Also, make sure the property named
    >>"PersistentStoreType"
    >>contains the value "replicated", not "memory"; this is what you need
    >>configured
    >>for a cluster to work correctly on the WebLogic side.
    >>
    >>You also need to configure IPlanet so that it is aware of the cookie
    >>name used
    >>for that specific web app. You are missing a property in your Object
    >>configuration
    >>in the obj.conf file. In your configuration simply add the cookie name
    >>and make
    >>sure the value is the same as the value you specified in weblogic.xml
    >>for this
    >>web app...
    >>
    >> Service fn="wl-proxy" WebLogicCluster="Proxy1:7890,Proxy2:7890"
    >>DynamicServerList="OFF" Idempotent="OFF" CookieName="JSESSIONIDacct"
    >>

    >>
    >>
    >>I used "JSESSIONIDacct" from my example above but call it whatever the
    >>hell you
    >>want, just make it the same value from weblogic.xml. That should definitely
    >>fix
    >>your session issue.
    >>
    >>On your other question, when you use DynamicServerList="OFF", the plug-in
    >>definitely
    >>ignores the dynamic cluster list and only uses the server list from

    >the
    >>"WebLogicCluster"
    >>property. Refer to the documentation below for a complete list and description
    >>of all properties that you can configure on the Weblogic IPlanet proxy
    >>plugin.
    >>
    >>http://e-docs.bea.com/wls/docs70/plu...in_params.html
    >>
    >>Hope that helps!
    >>
    >>Raffi
    >>

    >



+ Reply to Thread