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
[email protected]
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc

Reply via email to