Varnish makes a great load balancer with a very simple configuration process, tolerance features and exceptional caching performance. Things have changed between version 3 and 4 so this article gives an example of how to build a load balancer with Varnish 4.
vcl 4.0;
import std;
import directors;
#Specify the first server backend.
backend Server1 {
.host = "10.1.1.2";
.port = "80";
}
#Specify the second server backend.
backend Server2 {
.host = "10.1.1.3";
.port = "80";
}
sub vcl_init {
new cluster1 = directors.round_robin();
cluster1.add_backend(Server1);
cluster1.add_backend(Server2);
}
# The rule to use the 'pool1' director - the load balancer.
sub vcl_recv {
set req.backend_hint = cluster1.backend();
if (req.url ~ "(?i)\.(jpeg|jpg|png|gif|ico|swf|js|css|gz|rar|txt|bzip)$") {
unset req.http.Cookie;
return (hash);
} else {
return (pass);
}
}
Put the above in the “/etc/varnish/default.vcl” file. Check the configuration with the following command:
varnishd -C -f /etc/varnish/default.vcl
If it works (you will get plenty of output) you can then go ahead and start Varnish.