Converting 3-to-5 - strange "No backend" errors
Guillaume Quintard
guillaume at varnish-software.com
Thu Mar 30 14:43:45 CEST 2017
I think you forgot to commit the backend addtions.
--
Guillaume Quintard
On Wed, Mar 29, 2017 at 6:12 PM, Mark Hanford <mark at hanfordonline.co.uk>
wrote:
> 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.
>
> _______________________________________________
> varnish-misc mailing list
> 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/20170330/95ce2b86/attachment-0001.html>
More information about the varnish-misc
mailing list