Thanks for stepping out Gianny!
I thought WADI use the "clusterNameNode" value set in var/config/config-substitutions.properties to append to JSESSIONID, at least for Jetty . If I'm right, I suggest that we use the same setting for Tomcat, instead of using the jvmRoute parameter which is used by Tomcat native clustering.
There are various way to fulfill session stickiness. I have been conducting all my integration tests with HAProxy, http://haproxy.1wt.eu/, which does not require downstream load-balanced servers to do any manipulations to session cookies.
I created an improvement ticket, https://issues.apache.org/jira/browse/GERONIMO-4626, to capture the need to augment returned session cookies with jvmRoute information so that mod_jk can be used. I also checked in against trunk some code to address this problem. I have not yet integration tested this code change with mod_jk; However, I am quite confident with the change.
I intend to do some integration tests over the week-end to confirm the proper resolution of this problem. Meanwhile, if you want, you can check-out this module:
build it with maven and install the resulting artifact into your repository to give it a try.
FWIW, if you can swap your reverse-proxy or load-balancing layer currently realised by Apache mod_jk, then I would recommend HAProxy.
On 14/05/2009, at 2:02 PM, Jack Cai wrote:
With WADI, your guess is right that the clusterNodeName in config-substitutions.properties is used to identify each node. So if this is not working, then it's a bug. You can open a JIRA.
2009/5/14 Dennis Cartier <email@example.com>
On Wed, May 13, 2009 at 10:36 AM, Jack Cai <firstname.lastname@example.org> wrote:
Tomcat native clustering and WADI are two different approaches.
To try out Tomcat native clustering, for example, please refer to this doc . It clearly points
out that you need to set the "jvmRoute" parameter (note ID) in the config.xml.
2009/5/13 Dennis Cartier <email@example.com>
On Tue, May 12, 2009 at 10:19 PM, viola lu <firstname.lastname@example.org> wrote:
First, pls set up tomcat or wadi cluster following this link: http://cwiki.apache.org/GMOxDOC22/clustering-and-farming.html
and then configure apache http server to realize session affinity, if you use mod_jk way: edit works.properties under $http server install dir/conf with
if you use mod_proxy, you can edit httpd.conf with:
ProxyPass / balancer://mycluster/ stickysession=JSESSIONID
On Wed, May 13, 2009 at 9:10 AM, Dennis Cartier <email@example.com> wrote:
I am trying to find out how to configure G2.1.4 for session affinity when using Tomcat and WADI. Would anyone be able to point me in the right direction?
I thought that ClusterNodeName looked like a good guess in the config-substitutions.properties file but that does not seem to attach a node name to the generated session.
Any help would be appreciated.
Thanks for the pointers Viola. I am fine with the clustering aspects as far as Apache goes, I am just having trouble getting the node name to be properly appended to the generated JSESSIONID.
I changed to the target namespace as indicated in the G2.2 cluster docs (<web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web/tomcat-2.0.1">) and I already had my WAR marked distributable as well as having the <tomcat-clustering-wadi /> element in place.
Unfortunately I still do not get a node name being appended to the generated session so no affinity results.
I noticed the G2.2 docs had a section on switching WADI to unicast. This sounded optional, I assume the default multicast mode of WADI is functional and changing to unicast is not required?
I remain stumped. With no session affinity my requests are still spraying across the entire cluster rather then being sticky to a single node.
Hmmm, I am getting the feeling that stick sessions (session affinity) is not possible in WADI clustering? I am not really wanting to switch to Tomcat native clustering at this point. Does anyone know if WADI (as implemented in G2.1.4) supports sticky sessions?