Converting 3-to-5 - strange "No backend" errors
Mark Hanford
mark at hanfordonline.co.uk
Wed Mar 29 18:12:19 CEST 2017
Hi folks. I'm in the process of migrating to from v3 to v5, and have
finally got the config compiling at least. Now I'm having some problems
with the backends that I can't seem to work out. Apologies, this is a bit
of a wordy one...
Let's say I have two backends, web01 and web02, and these are put into a
director called admin_director for load-balancing. This is all in
"backends.vcl":
import directors;
probe healthcheck {
.request =
"GET / HTTP/1.1"
"Host: www.mydomain.co.uk"
"Connection: close";
.timeout = 30s;
.interval = 15s;
.window = 10;
.threshold = 8;
.expected_response = 302;
}
backend web01 { .host = "192.168.1.11"; .port = "80"; .first_byte_timeout =
600s; .probe = healthcheck; }
backend web02 { .host = "192.168.1.12"; .port = "80"; .first_byte_timeout =
600s; .probe = healthcheck; }
sub vcl_init {
new admin_director = directors.shard();
admin_director.add_backend(web01);
admin_director.add_backend(web02);
}
I've now removed all my main VCL for clarification, so my vcl_recv.vcl file
contains just:
import std;
sub vcl_recv {
set req.backend_hint = admin_director.backend();
std.log("Backend hint: " + req.backend_hint);
}
I then have my main "default.vcl":
vcl 4.0;
include "backends.vcl";
include "vcl_recv.vcl";
Now to the problem. If I try to access a URL, I always get a "FetchError:
No backend"
* << BeReq >> 3
- Begin bereq 2 fetch
- Timestamp Start: 1490802880.486355 0.000000 0.000000
- BereqMethod GET
- BereqURL /Common/Images/NewLoginImages/training.png
- BereqProtocol HTTP/1.1
- BereqHeader Host: www.mydomain.com
- BereqHeader User-Agent: curl/7.35.0
- BereqHeader Accept: */*
- BereqHeader X-Forwarded-Proto: https
- BereqHeader X-Real-Ip: 1.2.3.4
- BereqHeader Accept-Encoding: gzip
- BereqHeader X-Forwarded-For: 1.2.3.4, 192.168.1.23
- BereqHeader X-Varnish: 3
- VCL_call BACKEND_FETCH
- VCL_return fetch
- FetchError No backend
- Timestamp Beresp: 1490802880.486447 0.000092 0.000092
- Timestamp Error: 1490802880.486452 0.000098 0.000006
- BerespProtocol HTTP/1.1
- BerespStatus 503
- BerespReason Service Unavailable
- BerespReason Backend fetch failed
- BerespHeader Date: Wed, 29 Mar 2017 15:54:40 GMT
- BerespHeader Server: Varnish
- VCL_call BACKEND_ERROR
- BerespHeader Content-Type: text/html; charset=utf-8
- BerespHeader Retry-After: 5
- VCL_return deliver
- Storage malloc Transient
- ObjProtocol HTTP/1.1
- ObjStatus 503
- ObjReason Backend fetch failed
- ObjHeader Date: Wed, 29 Mar 2017 15:54:40 GMT
- ObjHeader Server: Varnish
- ObjHeader Content-Type: text/html; charset=utf-8
- ObjHeader Retry-After: 5
- Length 278
- BereqAcct 0 0 0 0 0 0
- End
* << Request >> 32770
- Begin req 32769 rxreq
- Timestamp Start: 1490803780.494500 0.000000 0.000000
- Timestamp Req: 1490803780.494500 0.000000 0.000000
- ReqStart 192.168.1.23 36896
- ReqMethod GET
- ReqURL /Common/Images/NewLoginImages/training.png
- ReqProtocol HTTP/1.1
- ReqHeader Host: www.mydomain.com
- ReqHeader User-Agent: curl/7.35.0
- ReqHeader Accept: */*
- ReqHeader X-Forwarded-For: 1.2.3.4
- ReqHeader X-Forwarded-Proto: https
- ReqHeader X-Real-Ip: 1.2.3.4
- ReqHeader Accept-Encoding: gzip
- ReqUnset X-Forwarded-For: 1.2.3.4
- ReqHeader X-Forwarded-For: 1.2.3.4, 192.168.1.23
- VCL_call RECV
- Error shard admin_director: no backends
- VCL_Log Backend hint:
- VCL_return hash
- VCL_call HASH
- VCL_return lookup
- VCL_call MISS
- VCL_return fetch
- Link bereq 32771 fetch
- Timestamp Fetch: 1490803780.495705 0.001204 0.001204
- RespProtocol HTTP/1.1
- RespStatus 503
- RespReason Backend fetch failed
- RespHeader Date: Wed, 29 Mar 2017 16:09:40 GMT
- RespHeader Server: Varnish
- RespHeader Content-Type: text/html; charset=utf-8
- RespHeader Retry-After: 5
- RespHeader X-Varnish: 32770
- RespHeader Age: 0
- RespHeader Via: 1.1 varnish (Varnish/5.1)
- VCL_call DELIVER
- VCL_return deliver
- Timestamp Process: 1490803780.495723 0.001223 0.000019
- RespHeader Content-Length: 282
- Debug "RES_MODE 2"
- RespHeader Connection: keep-alive
- Timestamp Resp: 1490803780.495806 0.001305 0.000082
- ReqAcct 238 0 238 250 282 532
- End
But my backend.list seems to always be healthy:
boot.web01 probe Healthy 10/10
Wed, 29 Mar 2017 15:54:18 GMT
boot.web02 probe Healthy 10/10
Wed, 29 Mar 2017 15:54:18 GMT
>From the varnish server, I can reach the backends successfully manually:
curl --resolve www.mydomain.com:192.168.1.11
http://www.mydomain.com/Common/Images/NewLoginImages/training.png
Not sure what it all means.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-misc/attachments/20170329/9000809e/attachment.html>
More information about the varnish-misc
mailing list