sharding with varnish: generating director identifier from an integer
Enno van Amerongen
enno at tty.nl
Thu Nov 15 15:52:33 CET 2012
Hi List,
My coworkers and I are working on a sharding VMOD and we got to the point
it's actually working (woohoo!).
Now, our implementation is pretty straightforward:
- get id from url
- do a "id mod n" to pick correct shard ( = director)
- set req.backend = shardN
Right now we have a very long if/elsif codepath that looks like this:
var.set_int("shard", sharding.get_mod_n(req.url,420));
if (var.get_int("shard") == 0) {
set req.backend = shard0;
set req.http.X-Varnish-Backend = "shard0";
}
elsif (var.get_int("shard") == 1) {
set req.backend = shard1;
set req.http.X-Varnish-Backend = "shard1";
}
...
So my question is, is it possible to *generate* the correct backend director,
so we only need one line of VCL, instead of the long if/else, like so:
set req.backend = shard + sharding.get_mod_n(req.url,420);
Yet, this does not work, maybe there's a workaround, or maybe someone else found a solution?
Thanks in advance!
Regards,
Enno
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-misc/attachments/20121115/053d8253/attachment.html>
More information about the varnish-misc
mailing list