[Zope] Apache/Zope: methods for serving high traffic?

Toby Dickenson tdickenson@geminidataloggers.com
Fri, 04 May 2001 13:29:27 +0100


On Thu, 03 May 2001 13:31:50 -0700, sean.upton@uniontrib.com wrote:

I spent some time planning a site with similar characteristics last
year... The project was canned before it got out of a lab environment,
so I can only offer untested advice.

>	a.
>[REQUEST]->(LOADBALANCER)->(SQUID+REDIRECTOR)->(APACHE)->(ZSERVER)
>	b.
>[REQUEST]->(LOADBALANCER)->(SQUID+REDIRECTOR)->(APACHE)->(PCGI)->(ZOPE)
>	c. [REQUEST]->(LOADBALANCER)->(SQUID+REDIRECTOR)->(ZSERVER)


You have a squid in this mix, which you say you are using as a
redirector only. How important is caching to you? In my project
caching was all important; cache misses were very expensive

In all of those scenarios squid will cache based on the
post-redirector url. If you are load balancing between n back-end
servers then you will need  n times larger cache space, and can expect
a smaller cache hit ratio (worst case; n times smaller)


What type of load balancing processing are you planning for the squid
redirector? If just a random selection, are you aware than Apache's
mod_rewrite can do that? (some of Apache's other features make it
attactive for the front-end of this proxy pipeline, but squid is not a
bad choice either)

Unlike in your application, we expected that ZEO-server latency would
be a significant factor. To reduce latency in filling ZEO client
caches we were planning to distribute load between back-end Zope's
based on dataset affinity..... That is preferring to send a request to
a Zope that has recently handled a different request for the same
data. We looked at doing this in a squid redirector, but it is not so
easy to share state between the multiple redirector processes.
Eventually we chose to implement this in a new http proxy.

Our final configuration looked like:

REQUEST->(LoadBalancer)->[(Apache)->(Squid)->(redirector)]->[(ZServer)]



Toby Dickenson
tdickenson@geminidataloggers.com