Hi Thomas, Thomas Glanzmann schrieb:
Hello, I have mod_jk version 1:1.2.18-3etch1 (which comes with Debian Etch) as loadbalancer in front of four tomcats version 5.5.20-2etch2 that do not duplicate sessions because of their size (100Mbyte per session; 120 - 500 users). My workers.property looks the following:worker.list=router, jkstatus worker.router.type=lb worker.router.balance_workers=tomcat-01, tomcat-02, tomcat-03, tomcat-04 worker.tomcat-01.type=ajp13 worker.tomcat-01.host=tomcat-01 worker.tomcat-01.port=8009 worker.tomcat-01.lbfactor=1 worker.tomcat-02.type=ajp13 worker.tomcat-02.host=tomcat-02 worker.tomcat-02.port=8009 worker.tomcat-02.lbfactor=1 worker.tomcat-03.type=ajp13 worker.tomcat-03.host=tomcat-03 worker.tomcat-03.port=8009 worker.tomcat-03.lbfactor=1 worker.tomcat-04.type=ajp13 worker.tomcat-04.host=tomcat-04 worker.tomcat-04.port=8009 worker.tomcat-04.lbfactor=2 worker.jkstatus.type=status I have to schedule once a week a software update, so I have to take a tomcat server offline to upgrade the software. The problem is that I don't want to kick any users. So I switch in jk_status the mode to disabled. This works for most of the users. After their session times out, they're gone. But I have a few sticky users, who leave their browser open (and come back after 4 hours or a day) or bookmark a site that contains a session id. Mod jk sees the session id and directs it to the disabled tomcat. On the tomcat itself the session id is invalid, it generates a new one and I have the user back on my disabled tomcat. Duplicating the session to another tomcat is currently not possible because a single session has around 100 Mbyte and even in off-hours like right now, there are 100 active sessions. How do other people handle this problem? Is there a way to make mod_jk to check if the session is still active on the tomcat (maybe with a newer version) and only puts a session to a disabled tomcat if indeed the session is still active on that tomcat? Thomas
No, the design of mod_jk is stateless w.r.t. sessions. There are only the obvious solutions, i.e. assuming that after some time of disabling (time depending on typical session use cases like 10 minutes or an hour) you stop the worker and thereby redirect users that still try to use the node to another node. They'll get an error of course and would need to relogin.
Usually with some time of disable status you can reduce the number of sessions, that will need to relogin and thus be disturbed by your maintenance to about 5% (your mileage may vary).
If you want to improve user experience more, you could include a maintenance information in your app, like "Please logout and relogin during the next hour because we have a maintenance scheduled starting at ...".
Regards, Rainer --------------------------------------------------------------------- To start a new topic, e-mail: [email protected] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
