Varnish Server выдает ошибку 503, когда бэкэнд не работает

Varnish Server выдает ошибку 503, когда бэкэнд не работает

Varnish сразу начинает показывать ошибку 503 Service Unavailable, когда бэкенд сайта падает. Конфигурация такова, что все должно кэшироваться на 7 дней.

Я бы ожидал, что сайт останется работоспособным, если бэкенд будет недоступен в течение часа. Кэш-сервер должен по-прежнему обслуживать страницы из своего кэша.

Сайт полностью статический, просмотров страниц в день 300.000. Пока что соотношение показов 2:5 (ПРОМАХ - ПОПАДАНИЕ), думаю, должно быть и выше.

Конфигурация /etc/varnish/default:

backend www {
   .host = "ip address here";
   .port = "http";
   .connect_timeout = 1s;
   .first_byte_timeout = 5s;
   .between_bytes_timeout = 2s;
}
sub vcl_deliver {
        if (obj.hits > 0) {
                set resp.http.X-Cache = "HIT";
        }
        else {
                set resp.http.X-Cache = "MISS";
        }
}
sub vcl_recv {
        #if (req.request == "GET" && req.url ~ "\.(js|css|jpg|jpeg|png|gif|gz|tgz|bz2|tbz|mp3|ogg|swf|cgi|ico)$") {
                unset req.http.cookie;
                return (lookup);
        #}
}
sub vcl_fetch {
        if (beresp.http.Set-Cookie) {
        #if (req.request == "GET" && req.url ~ "\.(js|css|jpg|jpeg|png|gif|gz|tgz|bz2|tbz|mp3|ogg|swf|cgi|ico)$") {
                unset beresp.http.set-cookie;
                set beresp.ttl = 7d;
                return(deliver);
        }
}

Файл .htaccess с сайта:

<IfModule mod_headers.c>
SetEnv force-no-vary
Header append Vary: Accept-Encoding
Header unset Pragma
Header unset ETag
Header unset Last-Modified
FileETag None

# YEAR
<filesMatch "\.(ico|gif|jpg|jpeg|png|flv|pdf)$">
  Header set Cache-Control "max-age=29030400"
</filesMatch>
# WEEK
<filesMatch "\.(js|css|swf)$">
  Header set Cache-Control "max-age=604800"
</filesMatch>
# 3 DAYS
<filesMatch "\.(php|cgi|pl|htm)$">
  Header set Cache-Control "max-age=259200"
</filesMatch>
</ifModule>

решение1

Вам необходимо рассмотреть возможность внедрения режима Grace и/или режима Saint.

Режимы Varnish Grace и Saint

Режим Grace позволяет обслуживать устаревший контент, когда ваши бэкенды неисправны или работают медленно, а режим Saint позволяет вам повторить попытку использования другого бэкенда, если используемый вами бэкенд выдает ошибку.

Связанный контент