PURGING objects on multiple instances of varnish
Puneet
puneet.arora at insticator.com
Wed May 29 20:00:16 CEST 2013
Hi,
The VCL subroutines are following:
sub vcl_recv {
if (req.request == "PURGE") {
if (!client.ip ~ purge) {
error 405 "Not allowed.";
}
return(lookup);
}
//// rest of the code
}
sub vcl_miss {
##purge content from cache only via localhost
if (req.request == "PURGE") {
purge;
error 404 "Not in cache.";
}
return (fetch);
}
sub vcl_hit {
if (req.request == "PURGE") {
purge;
error 200 "Purged.";
}
return (deliver);
}
sub vcl_hash {
hash_data(req.url);
if (req.http.host) {
hash_data(req.http.host);
} else {
hash_data(server.ip);
}
return (hash);
}
Thanks
Puneet
From: Stephen Wood [mailto:smwood4 at gmail.com]
Sent: Wednesday, May 29, 2013 1:32 PM
To: Puneet
Cc: varnish-misc at varnish-cache.org
Subject: Re: PURGING objects on multiple instances of varnish
What does your VCL look like?
On Wed, May 29, 2013 at 9:50 AM, Puneet <puneet.arora at insticator.com
<mailto:puneet.arora at insticator.com> > wrote:
Hi Stephen,
Yes the Varnish will use hash_director.
The Load Banalcer is executing in Round Robin manner. The LB is connected to
4 instances of Varnish which will be given requests in Round Robin fashion.
Now, in order to send the request to Varnish directly, I need the host to be
the IP & Port of the varnish instances.
i.e. let I have ONE varnish instance at 192.168.0.23 at port 3002
so the request will be for " -XPURGE http://192.168.0.23:3002/
<http://192.168.0.23:3002/%3cpath-to-object> <path-to-object> "
By, doing that Varnish gives a response stating "405 Object Not in Cache"
Thanks
Puneet
From: Stephen Wood [mailto:smwood4 at gmail.com <mailto:smwood4 at gmail.com> ]
Sent: Tuesday, May 28, 2013 5:42 PM
To: Puneet
Cc: varnish-misc at varnish-cache.org <mailto:varnish-misc at varnish-cache.org>
Subject: Re: PURGING objects on multiple instances of varnish
Generally speaking, the varnish setup you are describing would use a hash
director and not round-robin, so that the object would only be cached on one
of your varnish nodes and therefore only require a single purge request.
If your object lives on multiple nodes, then you could do something simple
like send a HTTP request to every one of your hosts. This would require you
to keep a list of your hosts and also create the appropriate permissions on
all of your varnish instances:
$ for i in `cat varnish_host.list`; do curl -XPURGE <http://$i/object;done>
http://$i/object;done
I hope that helps. Maybe somebody can offer a better solution than myself.
On Tue, May 28, 2013 at 2:17 PM, Puneet <puneet.arora at insticator.com
<mailto:puneet.arora at insticator.com> > wrote:
Hi All,
I am using a Load Balancer (LB) in front of Varnish instances. Just say the
LB is listening on Port: 80 and there are multiple instances of Varnish on
different port nos.
i.e. I have a single LB which is connected to 4 instances of varnish, and LB
is executing in a round-robin fashion.
Now, how can I purge objects on Varnish and maintain consistency among
different instances of Varnish.
Thanks
Puneet
_______________________________________________
varnish-misc mailing list
varnish-misc at varnish-cache.org <mailto:varnish-misc at varnish-cache.org>
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-misc/attachments/20130529/1a487d96/attachment.html>
More information about the varnish-misc
mailing list