Hi,
To sum up:
* proxy squid 2.6.STABLE16
* accelerator, squid only speak to apache2 (originserver), no other
proxy speaking together.
* I want to weight loadblance the squid query to the parent (origin)
* + I want to filter the url in 2 type static and php. static
o URL are directed to the static peer, not balanced
o any php content URL are directed to php peer with weighted
round-robin selection.
squid behavior seems to be bugged when I put :
cache_peer php-01 parent 80 0 no-query originserver round-robin weight=2
login=PASS
#cache_peer php-02 parent 80 0 no-query originserver round-robin
weight=0 login=PASS
cache_peer php-03 parent 80 0 no-query originserver round-robin weight=2
login=PASS
cache_peer php-04 parent 80 0 no-query originserver round-robin weight=1
login=PASS
cache_peer php-05 parent 80 0 no-query originserver round-robin weight=2
login=PASS
cache_peer php-06 parent 80 0 no-query originserver round-robin weight=2
login=PASS
cache_peer php-07 parent 80 0 no-query originserver round-robin weight=3
login=PASS
cache_peer php-08 parent 80 0 no-query originserver round-robin weight=2
login=PASS
weight are not respected and all the load seems to "fall" on the last
declared peer. Note, I also declare some other peer not involved in the
load balancing scheme.
Particularly, I've re-implemented the round robin behavior via my
redirector. And I first produced a bugged algorithm with was also
counting the static peer in the peer rotation.
bugged algo, static peer selection are also counted and break the round
robin selection.
$n=0;
while(<>)
{
if(static)
{
s/url/static/;
}
else
{
$peer = $all_peer[$n%nb_peer];
}
print;
$n++;
}
I measure load by looking on some MRTG like graph of all the server
pool. And clearly it see, than the load is badly divided on each peer.
config problem.
use "round-robin" for strictly old fashioned round-robin,
"weighted-round-robin" for round-robin with "weight=" load balancing
weighted-round-robin, starts from squid3 I think.
CARP is purpose build load balancing algorithm, and as far as I
know, it should work with originserver.
http://docs.huihoo.com/gnu_linux/squid/html/x2398.html
No. It's a parent proxy/server thing.
"
use 'carp' to define a set of parents which should
be used as a CARP array. The requests will be
distributed among the parents based on the CARP load
balancing hash function based on their weight
"
says so twice to be sure.
FWIW, "originserver" only affects the replies squid produces. Whether
it spoofs being a web server for the data requested.
Yes, but it's some what confusing, because parent seems to name
orginserver and hierarchical proxy.
I've read some old post which say that the algorithm was only available
for "parent" proxy. Which means for me that it can apply to another
proxy not an origin server.
http://www.mail-archive.com/squid-users@xxxxxxxxxxxxxxx/msg09265.html
But as Amos said, it may be the same for squid.
I tested the CARP config and squid complain about the conf syntax:
cache_peer php-01 parent 80 0 no-query no-digest originserver login=PASS
carp-load-factor=0.062500
cache_peer php-03 parent 80 0 no-query no-digest originserver login=PASS
carp-load-factor=0.062500
cache_peer php-04 parent 80 0 no-query no-digest originserver login=PASS
carp-load-factor=0.062500
cache_peer php-05 parent 80 0 no-query no-digest originserver login=PASS
carp-load-factor=0.062500
cache_peer php-06 parent 80 0 no-query no-digest originserver login=PASS
carp-load-factor=0.062500
cache_peer php-07 parent 80 0 no-query no-digest originserver login=PASS
carp-load-factor=0.187500
cache_peer php-08 parent 80 0 no-query no-digest originserver login=PASS
carp-load-factor=0.062500
cache_peer php-09 parent 80 0 no-query no-digest originserver login=PASS
carp-load-factor=0.437500
squid -k parse
2007/11/06 16:08:36| parse_peer: token='carp-load-factor=.062500'
FATAL: Bungled squid.conf line 592: cache_peer varan-01 parent 80 0
no-query no-digest originserver login=PASS carp-load-factor=.062500
Squid Cache: Version 2.6.STABLE16
configure options: '--prefix=/usr' '--exec_prefix=/usr'
'--bindir=/usr/sbin' '--sbindir=/usr/sbin' '--libexecdir=/usr/lib/squid'
'--sysconfdir=/etc/squid' '--localstatedir=/var/spool/squid'
'--datadir=/usr/share/squid' '--enable-async-io' '--with-pthreads'
'--enable-storeio=ufs,aufs,coss,diskd,null' '--enable-linux-netfilter'
'--enable-arp-acl' '--enable-epoll' '--enable-removal-policies=lru,heap'
'--enable-snmp' '--enable-delay-pools' '--enable-htcp'
'--enable-cache-digests' '--enable-underscores' '--enable-referer-log'
'--enable-useragent-log' '--enable-auth=basic,digest,ntlm'
'--enable-carp' '--enable-follow-x-forwarded-for' '--with-large-files'
'--with-maxfd=65536' 'i386-debian-linux' 'build_alias=i386-debian-linux'
'host_alias=i386-debian-linux' 'target_alias=i386-debian-linux'
carp seems to be enabled...
Regards,
Sylvain.