Hi, 

I have run into problems with cache hierarhy configuration. The idea is to have
two groups of users - hi and low priority, group1 and group2. The hierarchy 
under my control is two-level, like this: 


level 1         level 2         level 3 (beyond my control)

proxy-1.1       proxy-2.1       proxy-3.1 (fast uplink)
        (30 msec)       (2300 msec)

siblings...     siblings...     proxy-3.2 (slow uplink)


I am trying to achieve the following scheme of resolving requests for the 
groups.

group1: (good QoS)

MISS    proxy-1.1------------------>proxy-3.1
if (proxy-3.1 is down) 
        proxy-1.1----->proxy-2.1
if (proxy-2.1 is down)
        proxy-1.1-------------------------------->direct
        
HIT     proxy-1.1
        proxy-1.1 siblings
or HIT  proxy-1.1----->proxy-2.1
or HIT  proxy-1.1------------------>proxy-3.1
or HIT  proxy-1.1------------------>proxy-3.2



group2: (poor QoS)
        
MISS    proxy-1.1----->proxy-2.1
if (proxy-2.1 is down)
        proxy-1.1------------------>proxy-3.2

HIT     proxy-1.1
        proxy-1.1 siblings
or HIT  proxy-1.1----->proxy-2.1
or HIT  proxy-1.1------------------>proxy-3.2
        
        
or verbally: for high priority group 1 resolve ALL misses through high-speed
parent (proxy-3.1), unless it is down. If proxy-3.1 is down, use proxy-2.1 to
resolve misses. If proxy-2.1 is down - go direct.

for low priority group 2 never go direct, for misses - use parent proxy-2.1 if
it is unavailable - use proxy-3.2. If proxy-3.2 is unavailble - fail. 

So I made two acl's for the two groups, say GROUP1 and GROUP2 and configured
squid on proxy-1.1:

...
cache_peer proxy-3.1 parent 3128 3130 weight=5000
cache_peer proxy-2.1 parent 3128 3130 weight=1
cache_peer proxy-3.2 parent 3128 3130 weight=1
cache_peer_access proxy-3.1 allow GROUP1
cache_peer_access proxy-3.1 deny all
always_direct allow LOCAL_DST
never_direct deny LOCAL_DST
never_direct deny !GROUP1
http_access allow GROUP1
http_access allow GROUP2
miss_access allow GROUP1
miss_access allow GROUP2
...

for group2 all works fine, just as illustrated, but for group1 problems occur.
The exact nature is that squid on proxy-1.1 does not always select proxy-3.1 for
resolving MISS'es, even though it is always up. Even for web documents from the
same server during one session it frequently tries to use proxy-2.1 or proxy-3.2
instead of proxy-3.1. As you can see, the weight given to it ubnormally large,
but this does not help. 

The main result should be that all MISS' for GROUP1 are resolved through
proxy-3.1. And only if proxy-3.1 is down, others should be used for GROUP1. 
But this does not happen. What am I ignoring? 


TIA, 

Igor V. Alekseev
Yaroslavl Regional Network

Reply via email to