Re: [squid-users] Reverse Proxy Cluster Issues

From: Ron Wheeler <rwheeler_at_artifact-software.com>
Date: Wed, 14 Apr 2010 12:58:09 -0400

On 14/04/2010 11:34 AM, senad.cimic_at_thomsonreuters.com 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_at_artifact-software.com]
> Sent: Wednesday, April 14, 2010 9:11 AM
> To: Cimic, Senad (Legal)
> Subject: Re: [squid-users] Reverse Proxy Cluster Issues
>
> On 14/04/2010 9:13 AM, senad.cimic_at_thomsonreuters.com 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
>
>
>
Received on Wed Apr 14 2010 - 16:58:45 MDT

This archive was generated by hypermail 2.2.0 : Wed Apr 14 2010 - 12:00:04 MDT