Назад | Перейти на главную страницу

Обратный прокси-сервер с отказоустойчивым кешированием

Есть ли способ настроить лак или любой другой кэширующий обратный прокси-сервер для обслуживания страниц из своего кеша при сбое серверной части? На данный момент, если серверная часть выйдет из строя 503 Service Unavailable ошибка будет возвращена браузеру. Я бы предпочел, чтобы посетители видели кешированную версию, а не страницу с ошибкой, пока серверная часть исправляется.

Моя установка:

[varnish (общедоступный IP-адрес)] <===> [маршрутизатор] <===> [веб-сервер (частный IP-адрес)]

PS: у меня только один внутренний веб-сервер.

Да, есть, со Squid. Марк Ноттингем работал над этим в Yahoo, см. это отличное сообщение в блоге для всех деталей.

Во-первых, Squid 3.0 - это довольно большая переработка кодовой базы Squid, поэтому не следует слепо развертывать новейшую версию Squid, а сначала проверьте, какие версии Squid имеют эту функциональность. Возможно, его не перенесут на 3.0.

Я думаю, что womble прав насчет Varnish и делает это через VCL Varnish, но я никогда не настраивал что-то подобное с Varnish, поэтому не могу сказать.

Теоретически, если объект устарел, вы не хотите, чтобы он обслуживался кешем - если он не устарел, срок действия должен быть увеличен ...

С другой стороны, Varnish признает, что теория и практика расходятся, так что есть grace директива в VCL что я считать обрабатывает этот случай, а также более прозаические способы использования, описанные на этой странице.

2.1.0 представил режим святого, который работает с изяществом: http://varnish-cache.org/wiki/VCLExampleSaintMode

Хак, который должен сработать: вы можете время от времени создавать кешируемую страницу и настраивать обработчик 503 для использования кешированной страницы.

Добавьте / измените, если необходимо, в ваш conf:

ErrorDocument 503 /my_cached_page.html

Varnish имеет функцию под названием «отсрочка», которая позволяет вам назначать период отсрочки, в течение которого объект будет сохранен после истечения срока жизни. Если ваш бэкэнд выходит из строя, Varnish обслуживает украшенный (устаревший) объект.

Проверьте это:

http://varnish.projects.linpro.no/wiki/VCLExampleGrace

Ага; stale-if-error / max-stale есть в Squid 2.7 и 2.HEAD, но не в 3.x (пока).