[opencms-dev] (no subject)

Tim Howland thowland at organic.com
Tue Apr 6 05:41:01 CEST 2004


Hey Martin-
 
There are several pieces to an opencms implementation that can be
clustered. It depends on whether you are clustering for load handling or
redundancy.
 
1) Web servers - you can load balance several web servers with generic
techniques (F5 BigIP, Cisco, Linux HA)  they should be configured to
serve up the static content and pass the dynamic content to the servlet
engine (Tomcat or whatever). 
 
2) Application Servers - If you are using mod_jk or mod_jk2 with apache
and Tomcat, it can be configured to do three critical things:
   - talk to several Tomcat servers
   - bind a user's session to prefer one of the servers
   - re-route users to a new server if their preferred server fails.
 
Tomcat 5 has some facility for session distribution, if all the session
objects are serializable. I haven't tried this myself, and I don't know
the degree to which opencms relies on session objects for the admin
interface. The visitor's side seems to only use session objects you put
in there (with the possible exception of the CmsUser object, if you are
authenticating against the OpenCms API objects).
 
3) OpenCMS application - Redundancy is pretty feasible, but load
handling is a bit problematic (but maybe I'm missing something). The
problems that I've had with clustering have to do with the element and
flex caches when publishing content- if you update server1, the cache on
server 2 will still persist, and will serve up outdated content.  In
order to fix this, I've restricted users to editing and publishing
content on one server, and disabling the flex and element caches in the
opencms.properties file for the second server. (I can't trust them to
wander over to the second server and flush the caches by hand)
Obviously, this is a big performance hit; I set up a reverse proxy cache
in front of my web servers to get rid of the worst of it. Static asset
exports for your graphics and rsync also helps a lot.
 
The discussion of the upcoming feature set for 6.0 includes this tidbit:
 
"The most important management functions (e.g. cache maintainance,
system status) will be exposed to allow JMX containers to manage
OpenCms"
 
I suspect that this will allow you to automate cache flushes across your
cluster, which would get rid of the need for this workaround. There may
be a way to trigger a cache flush on a remote server now, but I'm not
aware of it; perhaps one of the Alkacon folks can let us know?
 
4) Database servers - I haven't attempted a master/slave mysql config
with automatic failover yet, but it appears to be something that's
pretty feasible. I've thrown some fairly heavy loading against a
moderately powerful linux box and haven't had much issue; mysql seems to
be generally fast (if loose). If you have $$$, you could try an M$
$ql$erver clu$ter with Advanced $erver.... should only cost $50KUS or so
to license...
 
Hope this helps-
 
Tim
  

--
 Tim Howland
 Organic, Inc.
 tel : 212-827-2233
 thowland at organic.com
 www.organic.com <http://www.organic.com/> 

Message: 1

Date: Mon, 5 Apr 2004 18:43:30 +0100

From: "Denham, Martin" <Martin.Denham at edfenergy.com>

To: <opencms-dev at opencms.org>

Subject: [opencms-dev] Cluster

Reply-To: opencms-dev at opencms.org

Hi,

I have just started looking into OpenCMS, have a simple demo app
working, a= nd it looks good. However I do not yet understand the more
advanced issues.

I am about to recommend use of OpenCms to my manager, but could you
assure = me that OpenCms works fine in a clustered environment because
our external = web sites are all clustered (2 servers). As I said I do
not yet understand= the more advanced features of OpenCMS.

btw Angus, I also have been reviewing CMS systems and although Magnolia
loo= ks like a fine system it did not appear to support version control
of docum= ents, which is a key requirement for us - but I might be wrong
about that.

Thank you for your time.

regards

Martin

 



More information about the opencms-dev mailing list