backend web1 {
.host = "192.168.1.128";
.port = "80";
.probe = backend_healthcheck;
}
backend web2 {
.host = "192.168.1.129";
.port = "80";
.probe = backend_healthcheck;
}
import directors;
sub vcl_init {
new rr = directors.round_robin();
rr.add_backend(web1);
rr.add_backend(web2);
}
acl purgers {
"127.0.0.1";
"192.168.1.0"/24;
}
sub vcl_recv {
if (req.method == "GET" && req.http.cookie) {
return(hash);
}
if (req.url ~ "test.txt") {
return(pass);
}
if (req.method == "PURGE") {
if (!client.ip ~ purgers) {
return(synth(405,"Method not allowed"));
}
return(hash);
}
if (req.http.X-Forward-For) {
set req.http.X-Forward-For = req.http.X-Forward-For + "," + client.ip;
} else {
set req.http.X-Forward-For = client.ip;
}
if (req.http.host ~ "www.cluster.com") {
set req.backend_hint = rr.backend() ;
} else {
return(synth(404,"error domain name"));
}
}
sub vcl_miss {
return(fetch);
}
sub vcl_hit {
if (req.method == "PURGE") {
unset req.http.cookie;
return(synth(200,"Purged"));
}
}
sub vcl_backend_response {
if (bereq.url ~ "\.(jpg|jpeg|gif|png)$") {
set beresp.ttl = 10s;
}
if (bereq.url ~ "\.(html|css|js)$") {
set beresp.ttl = 20s;
}
if (beresp.http.Set-Cookie) {
return(deliver);
}
}
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "@_@ HIT from " + server.ip;
} else {
set resp.http.X-Cache = "@_@ oh,god,MISS";
}
}
Server Software: Apache/2.2.15
Server Hostname: www.cluster.com
Server Port: 80
Document Path: /1.txt
Document Length: 4 bytes
Concurrency Level: 100
Time taken for tests: 0.343 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 271000 bytes
HTML transferred: 4000 bytes
Requests per second: 2913.94 [#/sec] (mean)
Time per request: 34.318 [ms] (mean)
Time per request: 0.343 [ms] (mean, across all concurrent requests)
Transfer rate: 771.17 [Kbytes/sec] received
Server Software: Apache/2.2.15
Server Hostname: www.cluster.com
Server Port: 80
Document Path: /1.txt
Document Length: 4 bytes
Concurrency Level: 100
Time taken for tests: 0.103 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 377951 bytes
HTML transferred: 4056 bytes
Requests per second: 9729.05 [#/sec] (mean)
Time per request: 10.278 [ms] (mean)
Time per request: 0.103 [ms] (mean, across all concurrent requests)
Transfer rate: 3590.92 [Kbytes/sec] received