Matt,
we already run blogs.sun.com in a load balanced environment, so we know
that it's possible. it's not perfect yet so there are a few things that
need improving, but it's not all that hard to do.
Dave's comment about a distributed cache being considered is very true,
it's not 'vital' because you could simply disable caching all together
if you wanted and that will definitely work.
At the end of the day it's not Roller's responsibility to provide cache
implementations that work in clustered environments. The cache system
as a whole is completely flexible, so by implementing just a few very
simple classes and tweaking your config you can use a cache system that
does anything you want. You can use custom code or use a 3rd party tool
like OSCache if you want, anything will work.
Extended functionality like this is perfectly suited for inclusion in
the Roller Support project, which is meant to be a place for addons and
extras like themes, plugins, etc. I have been meaning to get our
customizations put up there and just haven't had the time, but I'll try
and do that in the near future so that you can see how we've done it.
We use memcached as our distributed caching tool.
-- Allen
Matthew Cockerill wrote:
Just to follow up on this.
"It would be nice to document this on the wiki."
Absolutely. We're looking at setting up roller as part of our live
website environment.
All our other web applications are load balanced on redundant servers,
and it is awkward that there is no explicit support within roller for
such a non-redundant setup.
Dave - you mention plugging in a distributed cache as something that
might be 'considered' but some mechanism for distributed cache expiry
seems vital, not just optional, no?
Without distributed cache expiry, each of the two servers will get out
of sync with respect to newly posted changes, and so a users who
received a first http response from server 1, and then a subsequent from
server 2, would end up seeing an inconsistent view of the blog.
Rather than making use of a completely different caching implementation,
would it not be simpler to define a way for roller to define a standard
URL for invalidating a particular cache entry.
And to define in its config file, a list of the base URLs of each
particular server
e.g.
http://w01.blogs.acme.org/roller/
http://w02.blogs.acme.org/roller/
http://w03.blogs.acme.org/roller/
Then whenever a content update is made (on any server), a set of
requests would be sent from that server, to:
http://w01.blogs.acme.org/roller/clearcache/[cacheditemID]
http://w02.blogs.acme.org/roller/clearcache/[cacheditemID]
http://w03.blogs.acme.org/roller/clearcache/[cacheditemID]
I noticed some related comments here:
http://rollerweblogger.org/wiki/Wiki.jsp?page=Proposal_CachingRewrite
"
It might be worth taking another look at OSCache and consider having
an OSCacheImpl. A new release (2.2) was made last week. I think they
fixed the leak and concurrency problems long again and they have a
JavaGroups based distributed cache setup. -- DaveJohnson
I suppose I should also say that a JavaGroups based distributed cache
cluster does not excite me. I personally have tried using that exact
setup, oscache + javagroups, and it failed miserably in our environment.
I would be more inclined right now to try a custom solution using simple
http calls, however a custom solution has just as many potential
problems. It's a tough situation and oscache + javagroups may work well
for most Roller users, but I would not be inclined to invest my time on
it until I knew it was going to work for me. -- Allen
"
Allen Gilliland's comments seem to suggest that a full distributed
cache may not be a practical option. I'm not sure "a custom solution
using simple http calls" is the same as I've described above, but either
way, it seems very desirable that some sort of support for distributed
cache expiry be incorporated into the main codebase, rather than each
site wanting to use load balancing having to roll their own solution.
Regards,
Matt
From "Dave Johnson" <[EMAIL PROTECTED]>
Subject Re: Redundant/load balancing Roller installations?
Date Thu, 15 Jun 2006 15:35:38 GMT
We don't have any specific instructions for setting up a distributed
Roller installation, but it is possible and I know of several sites
running distributed. You should be able to setup a system like this
without any code changes to Roller:
Web server #1
Roller
Referrer turnover task, planet sync tasks (out of process)
Web sever #2
Roller
Web sever #N
Roller
File sever / SAN
shared by severs #1 through #N for file uploads
Database server / cluster
shared by #1 though #N for Roller data
You might also consider plugging in a distributed cache, such as
memcache, for Roller's page cache and Hibernate's L2 cache. But that
requires some coding.
The only problem with that is Roller's built-in search engine. I'm not
sure how well it would work in such a setup, since I haven't tried it.
You might have to turn it off. Any Lucene experts around?
It would be nice to document this on the wiki.
- Dave
On 6/14/06, Allen D. Householder <[EMAIL PROTECTED]> wrote:
> I've been unable to find anything in the list archives or on the
> Roller Wiki -- maybe somebody can point me to docs...
>
> We have a customer with a high-availability requirement for their
> Roller installation. The documentation we've seen so far doesn't
> appear to talk about that at all. I find it difficult to imagine that
> Sun and IBM are running roller on a single-point-of-failure web host,
> so how is it actually done?
>
> Any advice, pointers, whatever, will be greatly appreciated.
>
> Thanks!
> -allen-
>
This email has been scanned by Postini.
For more information please visit http://www.postini.com