Filip,
Thanks so much for some reason taking the "<Manager " statement
completely out of the context worked.
I can now see session replication occurring, which then identified some
objects that were not serializable. I have fixed these and can see the
session replicating correctly in the log messages.
I quickly realized that I could not just run "catalina stop" as this
caused the session to be deleted on both the tomcat instance that was
stopping and on the remaining Tomcat instance - hence the reason I was
always prompted to re-login in.
So how do I trigger the "maintenance failover"? If I use the Admin
console to delete the port 8009 connector (first Tomcat instance), this
does not prevent JK from continuing to route traffic to this instance.
I also tried using "ant stop" from the tomcat-deployer, but this results
in a "HTTP Status 503 - This application is not currently available"
message.
I feel like I'm very close, but not quite there.
Thank you - Richard
Filip Hanik - Dev wrote:
you said you enabled it in your context.xml file, if so remove it
Filip
----- Original Message -----
From: "Richard Mixon (qwest)" <[EMAIL PROTECTED]>
To: "Tomcat Users List" <[email protected]>
Cc: <>
Sent: Thursday, January 27, 2005 12:08 PM
Subject: RE: JK, Session Replication/Clustering, SSL and failover in
Tomcat 5
Filip,
Yes you did say that earlier. However I do not reference
PersistentManager anywhere in my server.xml. How is it getting enable?
Here is the clustering part if my server.xml (I can send the entire
server.xml if necessary).
<Cluster
className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
managerClassName="org.apache.catalina.cluster.session.D eltaManager"
expireSessionsOnShutdown="true"
useDirtyFlag="true"
notifyListenersOnReplication="true">
<Membership
className="org.apache.catalina.cluster.mcast.McastServic
e"
mcastAddr="228.0.0.4"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>
<Receiver
className="org.apache.catalina.cluster.tcp.ReplicationLi stener"
tcpListenAddress="auto"
tcpListenPort="4001"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
<Sender
className="org.apache.catalina.cluster.tcp.ReplicationTr ansmitter"
replicationMode="pooled"
ackTimeout="15000"/>
<Valve
className="org.apache.catalina.cluster.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.ht
ml;.*\.css;.*\.txt;"/>
<Deployer
className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
tempDir="c:/jakarta-tomcat-5.5.7/temp"
deployDir="c:/jakarta-tomcat-5.5.7/webapps"
watchDir="c:/jakarta-tomcat-5.5.7-deployer/build/w ebapp"
watchEnabled="false"/>
</Cluster>
Thank you - Richard
-----Original Message-----
From: Filip Hanik - Dev [mailto:[EMAIL PROTECTED]
Sent: Thursday, January 27, 2005 10:34 AM
To: Tomcat Users List
Cc: [EMAIL PROTECTED]
Subject: Re: JK, Session Replication/Clustering, SSL and failover in
Tomcat 5
As mentioned, you can't have the persistence manager, with clustering.
DEBUG TP-Processor3
org.apache.catalina.cluster.session.JvmRouteBinderValve - No Cluster
DeltaManager [EMAIL PROTECTED] at
/stars
----- Original Message -----
From: "Richard Mixon (qwest)" <[EMAIL PROTECTED]>
To: "Tomcat Users List" <[email protected]>
Sent: Thursday, January 27, 2005 10:55 AM
Subject: RE: JK, Session Replication/Clustering, SSL and failover in
Tomcat 5
Filip/all,
Thank you - with your suggestion I was able to get it configured as
follows:
1) After the "<Server " line in server.xml I added
<Listener
className="org.apache.catalina.cluster.session.JvmRouteSessionIDBinderLi
fecycleListener" />
2) I added to the conf/context.xml this line:
<Valve
className="org.apache.catalina.cluster.session.JvmRouteBinderValve" />
All starts fine. But I still get prompted to logon when the failover
occurs from "srv1" to "srv2".
Here are the Tomcat logs (I have mostly just the cluster logging
enabled. Can you see anything that is not correct?
TOMCAT LOG - SRV1 BEGIN
DEBUG main org.apache.catalina.cluster.tcp.ReplicationTransmitter -
Setting replcation mode to pooled
DEBUG main org.apache.catalina.cluster.tcp.ReplicationValve - Loading
request
filters=.*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;
DEBUG main org.apache.catalina.cluster.tcp.ReplicationValve - Request
filter=.*\.gif
DEBUG main org.apache.catalina.cluster.tcp.ReplicationValve - Request
filter=.*\.js
DEBUG main org.apache.catalina.cluster.tcp.ReplicationValve - Request
filter=.*\.jpg
DEBUG main org.apache.catalina.cluster.tcp.ReplicationValve - Request
filter=.*\.png
DEBUG main org.apache.catalina.cluster.tcp.ReplicationValve - Request
filter=.*\.htm
DEBUG main org.apache.catalina.cluster.tcp.ReplicationValve - Request
filter=.*\.html
DEBUG main org.apache.catalina.cluster.tcp.ReplicationValve - Request
filter=.*\.css
DEBUG main org.apache.catalina.cluster.tcp.ReplicationValve - Request
filter=.*\.txt
INFO main org.apache.catalina.cluster.tcp.SimpleTcpCluster - Cluster
is about to start
DEBUG main org.apache.catalina.cluster.tcp.SimpleTcpCluster -
Invoking addValve on StandardEngine[Catalina].StandardHost[localhost]
with class=org.apache.catalina.cluster.tcp.ReplicationValve
DEBUG main org.apache.catalina.cluster.tcp.ReplicationListener -
Starting replication listener on address:192.168.1.140
INFO main org.apache.catalina.cluster.mcast.McastService - Sleeping
for 2000 secs to establish cluster membership
INFO main org.apache.catalina.cluster.deploy.FarmWarDeployer -
Cluster FarmWarDeployer started.
INFO main org.apache.catalina.cluster.session.JvmRouteBinderValve -
JvmRouteBinderValve started
INFO main org.apache.catalina.cluster.session.JvmRouteBinderValve -
JvmRouteBinderValve started
INFO main org.apache.catalina.cluster.session.JvmRouteBinderValve -
JvmRouteBinderValve started
INFO Cluster-MembershipReceiver
org.apache.catalina.cluster.tcp.SimpleTcpCluster - Replication member
added:org.apache.catalina.cluster.mcast.McastMember[tcp://192.168.1.140:
4002,192.168.1.140,4002, alive=15]
DEBUG TP-Processor3
org.apache.catalina.cluster.session.JvmRouteBinderValve - No Cluster
DeltaManager [EMAIL PROTECTED] at
/stars
INFO main org.apache.catalina.cluster.session.JvmRouteBinderValve -
JvmRouteBinderValve stopped)
INFO main org.apache.catalina.cluster.session.JvmRouteBinderValve -
JvmRouteBinderValve stopped)
INFO main org.apache.catalina.cluster.session.JvmRouteBinderValve -
JvmRouteBinderValve stopped)
INFO main org.apache.catalina.cluster.deploy.FarmWarDeployer -
Cluster FarmWarDeployer stopped.
TOMCAT LOG - SRV1 END
TOMCAT LOG - SRV2 BEGIN
DEBUG main org.apache.catalina.cluster.tcp.ReplicationTransmitter -
Setting replcation mode to pooled
DEBUG main org.apache.catalina.cluster.tcp.ReplicationValve - Loading
request
filters=.*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;
DEBUG main org.apache.catalina.cluster.tcp.ReplicationValve - Request
filter=.*\.gif
DEBUG main org.apache.catalina.cluster.tcp.ReplicationValve - Request
filter=.*\.js
DEBUG main org.apache.catalina.cluster.tcp.ReplicationValve - Request
filter=.*\.jpg
DEBUG main org.apache.catalina.cluster.tcp.ReplicationValve - Request
filter=.*\.png
DEBUG main org.apache.catalina.cluster.tcp.ReplicationValve - Request
filter=.*\.htm
DEBUG main org.apache.catalina.cluster.tcp.ReplicationValve - Request
filter=.*\.html
DEBUG main org.apache.catalina.cluster.tcp.ReplicationValve - Request
filter=.*\.css
DEBUG main org.apache.catalina.cluster.tcp.ReplicationValve - Request
filter=.*\.txt
INFO main org.apache.catalina.cluster.tcp.SimpleTcpCluster - Cluster
is about to start
DEBUG main org.apache.catalina.cluster.tcp.SimpleTcpCluster -
Invoking addValve on StandardEngine[Catalina].StandardHost[localhost]
with class=org.apache.catalina.cluster.tcp.ReplicationValve
DEBUG main org.apache.catalina.cluster.tcp.ReplicationListener -
Starting replication listener on address:192.168.1.140
INFO main org.apache.catalina.cluster.mcast.McastService - Sleeping
for 2000 secs to establish cluster membership
INFO Cluster-MembershipReceiver
org.apache.catalina.cluster.tcp.SimpleTcpCluster - Replication member
added:org.apache.catalina.cluster.mcast.McastMember[tcp://192.168.1.140:
4001,192.168.1.140,4001, alive=4046]
INFO main org.apache.catalina.cluster.deploy.FarmWarDeployer -
Cluster FarmWarDeployer started.
INFO main org.apache.catalina.cluster.session.JvmRouteBinderValve -
JvmRouteBinderValve started
INFO main org.apache.catalina.cluster.session.JvmRouteBinderValve -
JvmRouteBinderValve started
INFO main org.apache.catalina.cluster.session.JvmRouteBinderValve -
JvmRouteBinderValve started
DEBUG TP-Processor3
org.apache.catalina.cluster.session.JvmRouteBinderValve - No Cluster
DeltaManager [EMAIL PROTECTED] at
/stars
INFO Cluster-MembershipReceiver
org.apache.catalina.cluster.tcp.SimpleTcpCluster - Received member
disappeared:org.apache.catalina.cluster.mcast.McastMember[tcp://192.168.
1.140:4001,192.168.1.140,4001, alive=258218]
TOMCAT LOG - SRV2 END
Thank you again - Richard
-----Original Message-----
From: Filip Hanik - Dev [mailto:[EMAIL PROTECTED]
Sent: Thursday, January 27, 2005 9:02 AM
To: Tomcat Users List
Cc: [EMAIL PROTECTED]
Subject: Re: JK, Session Replication/Clustering, SSL and failover in
Tomcat 5
Try to configure the JvmRouteSessionIDBinderLifecycleListener like any
other Lifecycle listener,
<Server....>
<Listener
className="o.a.c.c.s.JvmRouteSessionIDBinderLifecycleListener"/>
....
Filip
----- Original Message -----
From: "Richard Mixon (qwest)" <[EMAIL PROTECTED]>
To: "Tomcat Users List" <[email protected]>
Cc: <[EMAIL PROTECTED]>
Sent: Thursday, January 27, 2005 9:37 AM
Subject: RE: JK, Session Replication/Clustering, SSL and failover in
Tomcat 5
Filip,
Thank you - that appears to be what I need. Unfortunately the only
documentation I can find is at:
http://jakarta.apache.org/tomcat/tomcat-5.5-doc/catalina/docs/api/org/
apache/catalina/cluster/session/JvmRouteBinderValve.html
BEGIN-QUOTE
Valve to handle Tomcat jvmRoute takeover using mod_jk module after
node failure. After a node crashed the next request going to other
cluster
node. Now the answering from apache is slower ( make some error
handshaking. Very bad with apache at my windows.). We rewrite now the
cookie jsessionid information to the backup cluster node. After the
next response all client request goes direct to the backup node. The
change sessionid send also to all other cluster nodes. Well, now the
session stickyness work directly to the backup node and traffic don't
go back
too restarted cluster nodes! At all cluster node you must configure
the JvmRouteSessionIDBinderListener with
JvmRouteSessionIDBinderListenerLifecycle Add this Valve to your
clustered application or setup it to context default
conf/enginename/hostname/context.xml.default for all host application
<Context>
<Valve
className="org.apache.catalina.cluster.session.JvmRouteBinderValve" />
</Context>
END-QUOTE
I put the valve statement in my conf/context.xml. But this does not
seem
to be enough.
But where can I find information on configuring the
"JvmRouteSessionIDBinderListener with
JvmRouteSessionIDBinderListenerLifecycle"?
Thank you - Richard Mixon
-----Original Message-----
From: Filip Hanik - Dev [mailto:[EMAIL PROTECTED]
Sent: Thursday, January 27, 2005 7:29 AM
To: Tomcat Users List
Cc: [EMAIL PROTECTED]
Subject: Re: JK, Session Replication/Clustering, SSL and failover in
Tomcat 5
yes, There is code that takes care of that scenario, I believe it was
peter who coded it.
There is a valve called JvmRouteBinderValve that peter wrote, that you
enable for your context.
It will rewrite the session id for, and broadbast it to the cluster.
Filip
----- Original Message -----
From: "Richard Mixon (qwest)" <[EMAIL PROTECTED]>
To: "Tomcat Users List" <[email protected]>
Sent: Wednesday, January 26, 2005 6:44 PM
Subject: RE: JK, Session Replication/Clustering, SSL and failover in
Tomcat 5
Filip,
Pen does not really help me out.
My problem is JK I am pretty sure. It is appending ".srv1" to the
session. When srv1 is stopped, it detects this on the next request and
routes the request to srv2. However I notice in the JK output that it
now has ".srv2" appended to the session, which of course does not
exist,
and I get prompted to re-logon.
Below is the debug output from JK showing the failover attempt.
Any other suggestion?
Thank you - Richard
[Wed Jan 26 17:15:57 2005] [6040:2256] [debug]
map_uri_to_worker::jk_uri_worker_map.c (700): Attempting to map URI
'/stars/gridAction.do' from 1 maps
[Wed Jan 26 17:15:57 2005] [6040:2256] [debug]
map_uri_to_worker::jk_uri_worker_map.c (718): Attempting to map
context
URI '/stars/*'
[Wed Jan 26 17:15:57 2005] [6040:2256] [debug]
map_uri_to_worker::jk_uri_worker_map.c (755): Found a context match
loadbalancer -> /stars/
[Wed Jan 26 17:15:57 2005] [6040:2256] [debug] jk_handler::mod_jk.c
(1715): Into handler jakarta-servlet worker=loadbalancer r->proxyreq=0
[Wed Jan 26 17:15:57 2005] [6040:2256] [debug]
wc_get_worker_for_name::jk_worker.c (92): found a worker loadbalancer
[Wed Jan 26 17:15:57 2005] [6040:2256] [debug]
init_ws_service::mod_jk.c (479): agsp=443
agsn=redfishsoftware.swamp.home hostn=redfishsoftware.swamp.home
shostn=redfishsoftware.swamp.home
cbsport=0 sport=0 claport=443
[Wed Jan 26 17:15:57 2005] [6040:2256] [debug] service::jk_lb_worker.c
(465): service sticky_session=1
[Wed Jan 26 17:15:57 2005] [6040:2256] [debug]
get_most_suitable_worker::jk_lb_worker.c (372): total sessionid is
EE9EF7748256B50E03C48A3F3735DE59.srv1.
[Wed Jan 26 17:15:57 2005] [6040:2256] [debug]
get_most_suitable_worker::jk_lb_worker.c (383): searching worker for
partial sessionid EE9EF7748256B50E03C48A3F3735DE59.srv1.
[Wed Jan 26 17:15:57 2005] [6040:2256] [debug]
get_suitable_worker::jk_lb_worker.c (275): searching for sticky worker
(srv1)
[Wed Jan 26 17:15:57 2005] [6040:2256] [debug]
get_suitable_worker::jk_lb_worker.c (282): found candidate worker srv1
(0) for match with sticky (srv1)
[Wed Jan 26 17:15:57 2005] [6040:2256] [debug]
get_suitable_worker::jk_lb_worker.c (290): found candidate worker srv1
(0) with previous load 100 in search with sticky (srv1)
[Wed Jan 26 17:15:57 2005] [6040:2256] [debug]
get_suitable_worker::jk_lb_worker.c (343): found worker srv1 with new
load 100 in search with sticky (srv1)
[Wed Jan 26 17:15:57 2005] [6040:2256] [debug]
ajp_get_endpoint::jk_ajp_common.c (2016): time elapsed since last
request = 76 seconds
[Wed Jan 26 17:15:57 2005] [6040:2256] [debug] service::jk_lb_worker.c
(482): service worker=srv1 jvm_route=srv1 rc=1
[Wed Jan 26 17:15:57 2005] [6040:2256] [debug]
ajp_marshal_into_msgb::jk_ajp_common.c (551): ajp marshaling done
[Wed Jan 26 17:15:57 2005] [6040:2256] [debug]
ajp_service::jk_ajp_common.c (1594): processing with 3 retries
[Wed Jan 26 17:15:57 2005] [6040:2256] [debug]
ajp_connection_tcp_send_message::jk_ajp_common.c (883): sending to
ajp13 pos=4 len=611 max=8192
[Wed Jan 26 17:15:57 2005] [6040:2256] [error]
ajp_connection_tcp_send_message::jk_ajp_common.c (902): sendfull
returned -3 with errno=54
[Wed Jan 26 17:15:57 2005] [6040:2256] [error]
ajp_send_request::jk_ajp_common.c (1158): Error sending request try
another pooled connection
[Wed Jan 26 17:15:57 2005] [6040:2256] [debug]
jk_open_socket::jk_connect.c (159): try to connect socket = 700 to
127.0.0.1:8009
[Wed Jan 26 17:15:58 2005] [6040:2256] [debug]
jk_open_socket::jk_connect.c (177): after connect ret = -1
[Wed Jan 26 17:15:58 2005] [6040:2256] [info]
jk_open_socket::jk_connect.c (183): connect() failed errno = 61
[Wed Jan 26 17:15:58 2005] [6040:2256] [info]
ajp_connect_to_endpoint::jk_ajp_common.c (862): Failed connecting to
tomcat. Tomcat is probably not started or is listening on the wrong
host/port (127.0.0.1:8009). Failed errno = 61
[Wed Jan 26 17:15:58 2005] [6040:2256] [info]
ajp_send_request::jk_ajp_common.c (1186): Error connecting to the
Tomcat process.
[Wed Jan 26 17:15:58 2005] [6040:2256] [info]
ajp_service::jk_ajp_common.c (1665): Sending request to tomcat failed,
recoverable operation attempt=0
[Wed Jan 26 17:15:58 2005] [6040:2256] [debug]
jk_open_socket::jk_connect.c (159): try to connect socket = 700 to
127.0.0.1:8009
[Wed Jan 26 17:15:59 2005] [6040:2256] [debug]
jk_open_socket::jk_connect.c (177): after connect ret = -1
[Wed Jan 26 17:15:59 2005] [6040:2256] [info]
jk_open_socket::jk_connect.c (183): connect() failed errno = 61
[Wed Jan 26 17:15:59 2005] [6040:2256] [info]
ajp_connect_to_endpoint::jk_ajp_common.c (862): Failed connecting to
tomcat. Tomcat is probably not started or is listening on the wrong
host/port (127.0.0.1:8009). Failed errno = 61
[Wed Jan 26 17:15:59 2005] [6040:2256] [info]
ajp_send_request::jk_ajp_common.c (1186): Error connecting to the
Tomcat process.
[Wed Jan 26 17:15:59 2005] [6040:2256] [info]
ajp_service::jk_ajp_common.c (1665): Sending request to tomcat failed,
recoverable operation attempt=1
[Wed Jan 26 17:15:59 2005] [6040:2256] [debug]
jk_open_socket::jk_connect.c (159): try to connect socket = 700 to
127.0.0.1:8009
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
jk_open_socket::jk_connect.c (177): after connect ret = -1
[Wed Jan 26 17:16:00 2005] [6040:2256] [info]
jk_open_socket::jk_connect.c (183): connect() failed errno = 61
[Wed Jan 26 17:16:00 2005] [6040:2256] [info]
ajp_connect_to_endpoint::jk_ajp_common.c (862): Failed connecting to
tomcat. Tomcat is probably not started or is listening on the wrong
host/port (127.0.0.1:8009). Failed errno = 61
[Wed Jan 26 17:16:00 2005] [6040:2256] [info]
ajp_send_request::jk_ajp_common.c (1186): Error connecting to the
Tomcat process.
[Wed Jan 26 17:16:00 2005] [6040:2256] [info]
ajp_service::jk_ajp_common.c (1665): Sending request to tomcat failed,
recoverable operation attempt=2
[Wed Jan 26 17:16:00 2005] [6040:2256] [error]
ajp_service::jk_ajp_common.c (1673): Error connecting to tomcat.
Tomcat
is probably not started or is listening on the wrong port. worker=srv1
failed errno = 61
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_done::jk_ajp_common.c (1955): done with connection -1 for worker
srv1 [Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
service::jk_lb_worker.c (522): recoverable error... will try to
recover on other host [Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
get_most_suitable_worker::jk_lb_worker.c (372): total sessionid is
EE9EF7748256B50E03C48A3F3735DE59.srv1.
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
get_most_suitable_worker::jk_lb_worker.c (383): searching worker for
partial sessionid EE9EF7748256B50E03C48A3F3735DE59.srv1.
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
get_suitable_worker::jk_lb_worker.c (275): searching for sticky worker
(srv1)
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
get_suitable_worker::jk_lb_worker.c (282): found candidate worker srv1
(0) for match with sticky (srv1)
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
get_suitable_worker::jk_lb_worker.c (290): found candidate worker srv1
(0) with previous load 100 in search with sticky (srv1)
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
get_suitable_worker::jk_lb_worker.c (300): worker candidate srv1 (0)
is
in error state - will not yet recover (0 < 60)
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
get_suitable_worker::jk_lb_worker.c (350): found no sticky (srv1)
worker [Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
get_most_suitable_worker::jk_lb_worker.c (403): found domain unknown
in route srv1
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
get_suitable_worker::jk_lb_worker.c (275): searching for sticky domain
worker (unknown)
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
get_suitable_worker::jk_lb_worker.c (282): found candidate worker srv1
(0) for match with sticky domain (unknown)
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
get_suitable_worker::jk_lb_worker.c (290): found candidate worker srv1
(0) with previous load 100 in search with sticky domain (unknown)
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
get_suitable_worker::jk_lb_worker.c (300): worker candidate srv1 (0)
is
in error state - will not yet recover (0 < 60)
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
get_suitable_worker::jk_lb_worker.c (282): found candidate worker srv2
(1) for match with sticky domain (unknown)
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
get_suitable_worker::jk_lb_worker.c (290): found candidate worker srv2
(1) with previous load 100 in search with sticky domain (unknown)
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
get_suitable_worker::jk_lb_worker.c (314): new maximal worker srv2 (1)
with previous load 200 in search with sticky domain (unknown)
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
get_suitable_worker::jk_lb_worker.c (343): found worker srv2 with new
load 100 in search with sticky domain (unknown)
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_get_endpoint::jk_ajp_common.c (2016): time elapsed since last
request = 29 seconds
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug] service::jk_lb_worker.c
(482): service worker=srv2 jvm_route=srv2 rc=1
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_marshal_into_msgb::jk_ajp_common.c (551): ajp marshaling done
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_service::jk_ajp_common.c (1594): processing with 3 retries
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_connection_tcp_send_message::jk_ajp_common.c (883): sending to
ajp13 pos=4 len=611 max=8192
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_send_request::jk_ajp_common.c (1199): request body to send 64587 -
request body to resend 0
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_connection_tcp_send_message::jk_ajp_common.c (883): sending to
ajp13 pos=4 len=8192 max=8192
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_connection_tcp_get_message::jk_ajp_common.c (1007): received from
ajp13 pos=0 len=3 max=8192
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_connection_tcp_send_message::jk_ajp_common.c (883): sending to
ajp13 pos=4 len=8192 max=8192
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_connection_tcp_get_message::jk_ajp_common.c (1007): received from
ajp13 pos=0 len=3 max=8192
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_connection_tcp_send_message::jk_ajp_common.c (883): sending to
ajp13 pos=4 len=8192 max=8192
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_connection_tcp_get_message::jk_ajp_common.c (1007): received from
ajp13 pos=0 len=3 max=8192
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_connection_tcp_send_message::jk_ajp_common.c (883): sending to
ajp13 pos=4 len=8192 max=8192
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_connection_tcp_get_message::jk_ajp_common.c (1007): received from
ajp13 pos=0 len=3 max=8192
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_connection_tcp_send_message::jk_ajp_common.c (883): sending to
ajp13 pos=4 len=8192 max=8192
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_connection_tcp_get_message::jk_ajp_common.c (1007): received from
ajp13 pos=0 len=3 max=8192
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_connection_tcp_send_message::jk_ajp_common.c (883): sending to
ajp13 pos=4 len=8192 max=8192
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_connection_tcp_get_message::jk_ajp_common.c (1007): received from
ajp13 pos=0 len=3 max=8192
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_connection_tcp_send_message::jk_ajp_common.c (883): sending to
ajp13 pos=4 len=8192 max=8192
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_connection_tcp_get_message::jk_ajp_common.c (1007): received from
ajp13 pos=0 len=3 max=8192
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_connection_tcp_send_message::jk_ajp_common.c (883): sending to
ajp13 pos=4 len=7291 max=8192
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_connection_tcp_get_message::jk_ajp_common.c (1007): received from
ajp13 pos=0 len=141 max=8192
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_unmarshal_response::jk_ajp_common.c (606): status = 200
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_unmarshal_response::jk_ajp_common.c (613): Number of headers is =
2 [Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_unmarshal_response::jk_ajp_common.c (669): Header[0] [Set-Cookie]
= [JSESSIONID=9FF5A5ED4466F1EE906856287DF2EF8F.srv2; Path=/stars;
Secure] [Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_unmarshal_response::jk_ajp_common.c (669): Header[1]
[Content-Type] = [text/html;charset=ISO-8859-1]
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_connection_tcp_get_message::jk_ajp_common.c (1007): received from
ajp13 pos=0 len=25 max=8192
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug] ws_write::mod_jk.c
(376): writing 21 (21) out of 21
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_connection_tcp_get_message::jk_ajp_common.c (1007): received from
ajp13 pos=0 len=6585 max=8192
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug] ws_write::mod_jk.c
(376): writing 4096 (4096) out of 6581
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug] ws_write::mod_jk.c
(376): writing 2485 (2485) out of 2485
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_connection_tcp_get_message::jk_ajp_common.c (1007): received from
ajp13 pos=0 len=161 max=8192
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug] ws_write::mod_jk.c
(376): writing 157 (157) out of 157
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_connection_tcp_get_message::jk_ajp_common.c (1007): received from
ajp13 pos=0 len=5887 max=8192
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug] ws_write::mod_jk.c
(376): writing 4096 (4096) out of 5883
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug] ws_write::mod_jk.c
(376): writing 1787 (1787) out of 1787
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_connection_tcp_get_message::jk_ajp_common.c (1007): received from
ajp13 pos=0 len=2 max=8192
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug]
ajp_done::jk_ajp_common.c (1942): recycling connection cache slot=0
[Wed Jan 26 17:16:00 2005] [6040:2256] [debug] jk_handler::mod_jk.c
(1860): Service finished with status=200 for worker=loadbalancer
[Wed Jan 26 17:16:00 2005] [6040:4016] [debug]
map_uri_to_worker::jk_uri_worker_map.c (700): Attempting to map URI
'/styles/messages.css' from 1 maps
[Wed Jan 26 17:16:00 2005] [6040:4016] [debug]
map_uri_to_worker::jk_uri_worker_map.c (718): Attempting to map
context
URI '/stars/*'
[Wed Jan 26 17:16:00 2005] [6040:4016] [debug]
map_uri_to_worker::jk_uri_worker_map.c (700): Attempting to map URI
'/styles/messages.css' from 1 maps
[Wed Jan 26 17:16:00 2005] [6040:4016] [debug]
map_uri_to_worker::jk_uri_worker_map.c (718): Attempting to map
context
URI '/stars/*'
-----Original Message-----
From: Filip Hanik - Dev [mailto:[EMAIL PROTECTED]
Sent: Wednesday, January 26, 2005 4:10 PM
To: Tomcat Users List
Subject: Re: JK, Session Replication/Clustering, SSL and failover in
Tomcat 5
try with a regular tcp loadbalancer like pen (http://siag.nu/) first,
otherwise you are debugging a whole stack at once.
so use pen, and your two tomcats, try failover and go from there.
also, enable debugging for your logging, and a lot more will be spit
out
in the logs
Filip
----- Original Message -----
From: "Richard Mixon (qwest)" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Wednesday, January 26, 2005 4:37 PM
Subject: JK, Session Replication/Clustering, SSL and failover in
Tomcat 5
I am trying to get JK 1.2.8 (within Apache 2.0.52 SSL build) to fail
over to my remaining Tomcat 5.5.7 instance when the first instance is
brought down (e.g. for maintenance or due to an actual failure).
The application uses container managed authentication (CMA) and
obviously sessions.
I have two questions/problems. Thanks so much for any ideas/help you
can provide.
1) If I set sticky_session=True then the loadbalancer worker
distributes requests among the two workers just fine. If I shut down
one Tomcat instance, it redirects me to the second - but I am
prompted to login
again. This makes me think that session replication is not occurring.
How can I check that session replication is happening (is there a log
settings)?
I thought it must be at first as I was getting the following in my
tomcat logs:
From srv1:
INFO main org.apache.coyote.http11.Http11Protocol - Initializing
Coyote HTTP/1.1 on http-8080
INFO main org.apache.catalina.startup.Catalina - Initialization
processed in 875 ms
INFO main org.apache.catalina.core.StandardService - Starting service
Catalina
INFO main org.apache.catalina.core.StandardEngine - Starting Servlet
Engine: Apache Tomcat/5.5.7
INFO main org.apache.catalina.core.StandardHost - XML validation
disabled
INFO main org.apache.catalina.cluster.tcp.SimpleTcpCluster - Cluster
is about to start
INFO main org.apache.catalina.cluster.mcast.McastService - Sleeping
for 2000 secs to establish cluster membership
INFO main org.apache.catalina.cluster.deploy.FarmWarDeployer -
Cluster FarmWarDeployer started.
INFO main org.apache.coyote.http11.Http11Protocol - Starting Coyote
HTTP/1.1 on http-8080
INFO main org.apache.jk.common.ChannelSocket - JK2: ajp13 listening
on /0.0.0.0:8009
INFO main org.apache.jk.server.JkMain - Jk running ID=0 time=0/31
config=null
INFO main org.apache.catalina.storeconfig.StoreLoader - Find registry
server-registry.xml at classpath resource
INFO main org.apache.catalina.startup.Catalina - Server startup in
6016
ms
INFO Cluster-MembershipReceiver
org.apache.catalina.cluster.tcp.SimpleTcpCluster - Replication member
added:org.apache.catalina.cluster.mcast.McastMember[tcp://192.168.1.140:
4002,192.168.1.140,4002, alive=16]
From srv2:
INFO main org.apache.coyote.http11.Http11Protocol - Initializing
Coyote HTTP/1.1 on http-9080
INFO main org.apache.catalina.startup.Catalina - Initialization
processed in 1250 ms
INFO main org.apache.catalina.core.StandardService - Starting service
Catalina
INFO main org.apache.catalina.core.StandardEngine - Starting Servlet
Engine: Apache Tomcat/5.5.7
INFO main org.apache.catalina.core.StandardHost - XML validation
disabled
INFO main org.apache.catalina.cluster.tcp.SimpleTcpCluster - Cluster
is about to start
INFO main org.apache.catalina.cluster.mcast.McastService - Sleeping
for 2000 secs to establish cluster membership
INFO Cluster-MembershipReceiver
org.apache.catalina.cluster.tcp.SimpleTcpCluster - Replication member
added:org.apache.catalina.cluster.mcast.McastMember[tcp://192.168.1.140:
4001,192.168.1.140,4001, alive=5578]
INFO main org.apache.catalina.cluster.deploy.FarmWarDeployer -
Cluster FarmWarDeployer started.
INFO main org.apache.coyote.http11.Http11Protocol - Starting Coyote
HTTP/1.1 on http-9080
INFO main org.apache.jk.common.ChannelSocket - JK2: ajp13 listening
on /0.0.0.0:9009
INFO main org.apache.jk.server.JkMain - Jk running ID=0 time=0/31
config=null
INFO main org.apache.catalina.storeconfig.StoreLoader - Find registry
server-registry.xml at classpath resource
INFO main org.apache.catalina.startup.Catalina - Server startup in
6313
ms
2) If I set sticky_session=False I am unable to login, failing with an
HTTP Status 408. Here's the sequence:
a) Issue a request to a protected resource that will trigger
form-based authentication (CMA). JK worker loadbalancer sends this
request to the first worker, "srv1".
b) After I fill in the authentication/login form I press submit. Now
JK worker loadbalancer send this request to worker "srv2" and I end up
with this error respons: HTTP Status 408 - The time allowed for the
login process has been exceeded...
Here are my configuration files (or pieces):
FILE: piece form httpd.conf
<IfModule mod_jk.c>
JkWorkersFile conf/workers.properties
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkLogFile logs/mod_jk.log
# Log level to be used by mod_jk: debug, info, warn error or trace
JkLogLevel debug
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkExtractSSL on
JkHTTPSIndicator HTTPS
JkSESSIONIndicator SSL_SESSION_ID
JkCIPHERIndicator SSL_CIPHER
JkCERTSIndicator SSL_CLIENT_CERT
</IfModule>
FILE: workers.properties
# workers.properties -
#
workers.tomcat_home=c:/jakarta-tomcat-5.5.7
workers.java_home=C:/jdk1.5.0_01
ps=/
#
# Define one worker for each tomcat instance, plus one
# to handle the load balancing.
#
worker.list=loadbalancer
worker.srv1.port=8009
worker.srv1.host=localhost
worker.srv1.type=ajp13
worker.srv1.lbfactor=100
worker.srv1.sticky_session=False
worker.srv1.local_worker=0
worker.srv2.port=9009
worker.srv2.host=localhost
worker.srv2.type=ajp13
worker.srv2.lbfactor=100
worker.srv2.sticky_session=False
worker.srv2.local_worker=0
worker.loadbalancer.type=lb
worker.loadbalancer.sticky_session=False
worker.loadbalancer.balanced_workers=srv1,srv2
worker.loadbalancer.local_worker_only=1
FILE: piece from server.xml on "srv1"
(note: I do not want automated deployment so I watchEnabled="false", I
do not want farm deployment to occur)
<Cluster
className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
managerClassName="org.apache.catalina.cluster.session.D eltaManager"
expireSessionsOnShutdown="true"
useDirtyFlag="true"
notifyListenersOnReplication="true">
<Membership
className="org.apache.catalina.cluster.mcast.McastServic
e"
mcastAddr="228.0.0.4"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>
<Receiver
className="org.apache.catalina.cluster.tcp.ReplicationLi stener"
tcpListenAddress="auto"
tcpListenPort="4001"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
<Sender
className="org.apache.catalina.cluster.tcp.ReplicationTr ansmitter"
replicationMode="pooled"
ackTimeout="15000"/>
<Valve
className="org.apache.catalina.cluster.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.ht
ml;.*\.css;.*\.txt;"/>
<Deployer
className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
tempDir="c:/jakarta-tomcat-5.5.7/temp"
deployDir="c:/jakarta-tomcat-5.5.7/webapps"
watchDir="c:/jakarta-tomcat-5.5.7-deployer/build/w ebapp"
watchEnabled="false"/>
</Cluster>
FILE: piece from server.xml on "srv2"
<Cluster
className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
managerClassName="org.apache.catalina.cluster.session.D eltaManager"
expireSessionsOnShutdown="true"
useDirtyFlag="true"
notifyListenersOnReplication="true">
<Membership
className="org.apache.catalina.cluster.mcast.McastServic
e"
mcastAddr="228.0.0.4"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>
<Receiver
className="org.apache.catalina.cluster.tcp.ReplicationLi stener"
tcpListenAddress="auto"
tcpListenPort="4002"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
<Sender
className="org.apache.catalina.cluster.tcp.ReplicationTr ansmitter"
replicationMode="pooled"
ackTimeout="15000"/>
<Valve
className="org.apache.catalina.cluster.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.ht
ml;.*\.css;.*\.txt;"/>
<Deployer
className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
tempDir="c:/jakarta-tomcat-5.5.7b/temp"
deployDir="c:/jakarta-tomcat-5.5.7b/webapps"
watchDir="c:/jakarta-tomcat-5.5.7-deployer/build/w ebapp"
watchEnabled="false"/>
</Cluster>
Thanks again - Richard
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]