On 14/04/2010 11:34 AM, senad.cimic@xxxxxxxxxxxxxxxxxx wrote:
Hi Ron,
Thank you for the quick response. I'm still not clear on these
unfortunately:
Issue 1:
I believe squid should use query parameters as well when evaluating
cached objects. Let's say I request object from squidA
http://site1:8080/RSSSource/rss/feed?max=1. Let's say squidA doesn't
have it in cache, so it will get it from the backend server. If I
request the same object while it is fresh in cache, it will get it from
cache. Similarly, if I request object with different query parameter
http://site1:8080/RSSSource/rss/feed?max=2 it will recognize that it is
a request for a different object (which is not cached) and it will
retrieve it from the backend server. The issue in these scenarios is
that it never checks if its sibling has those objects.
It is impossible for squid to know what Tomcat will do with ?max=1
It needs to let Tomcat generate a new page.
Issue 2:
I'm using ICP to communicate between siblings. If cacheA receives
request for an object that is in its cache but expired, it should send
ICP query to squidB, correct? Depending if it is available in squidB,
squidB will respond with either UDP_HIT or UDP_MISS response, so there
shouldn't be any loops, correct?
Beyond my pay scale. Perhaps someone with a more detailed knowledge of
peer caches will explain what has to be done to make this work if it is
possible.
Thanks again,
Senad
-----Original Message-----
From: Ron Wheeler [mailto:rwheeler@xxxxxxxxxxxxxxxxxxxxx]
Sent: Wednesday, April 14, 2010 9:11 AM
To: Cimic, Senad (Legal)
Subject: Re: Reverse Proxy Cluster Issues
On 14/04/2010 9:13 AM, senad.cimic@xxxxxxxxxxxxxxxxxx wrote:
Hi,
I am first time squid user and was wondering if could get some help. I
tried to find answers to these questions on-line, but
unsuccessfully...
I have 2 squid boxes setup as reverse proxies in a cluster (they're
using each other as siblings). On the backend I'm using single tomcat
server that both squid boxes use to retrieve content. Squid version
I'm
using is 3.0. I'm running into couple issues:
Issue #1:
Whenever squid box receives request for url that contains querystring
(e.g. - http://site1:8080/RSSSource/rss/feed?max=1) it does not
contact
sibling cache for that resource, but it retrieves it from the backend
server right away. What's odd is that it works (sometimes...) when
query
string is not present (e.g. http://site1:8080/RSSSource/rss/feed).
Issue #2:
Let's say squidA receives request for some resource (e.g.
http://site1:8080/RSSSource/rss/feed). If squidA doesn't have it in
its
cache, it will check if it's available from squidB. However, if squidA
has expired version of that resource, it doesn't contact squidB but
retrieves it directly from the backend server, which should not be the
case (it should check if squidB had valid copy available), correct?
Here are relevant squid.conf lines for one of the squids (everything
else is unchanged, config for the second squid is the same except for
sibling references):
########################################################################
##########
http_port 80 accel vhost
icp_port 3130
acl sites_server1 dstdomain site1
acl siblings src address.of.squidA.com
cache_peer address.of.backend.server.com parent 8080 0 no-query
no-digest originserver name=server1
cache_peer address.of.squidA.com sibling 80 3130 name=sibling1
no-digest
allow-miss weight=5
cache_peer_access server1 allow sites_server1
cache_peer_access server1 allow siblings
cache_peer_access sibling1 allow sites_server1
http_access allow sites_server1
http_access allow siblings
http_access deny all
icp_access allow siblings
icp_access deny all
miss_access deny siblings
########################################################################
###########
I tried using HTCP instead of ICP, but I got same results... Does
anyone
know solution to these 2 problems? One thing I didn't mention is that
tomcat backend server is including conditional get headers in
responses,
however I don't think it matters...
Let me know if more info needed. Thanks in advance!
Issue # 1 is the correct behaviour. Squid has no way of predicting what
you might want to do with those arguments.
Issue #2 looks like a good decision. What is both have expired versions?
They could get into a loop going back and forth forever unless someone
is really careful.
Ron