Программное обеспечение кэширования. Squid

Squid является широко используемой кэширующей системой с открытым исходным кодом, которая работает на большом числе платформ, включая Unix, Solaris, Linux, FreeBSD, NetBSD и OS/2. Другими популярными кэширующими системами являются NetApp [NetaJ, Inktomi [Ink] и Novell Bordermanager [Nov]. Кроме HTTP, Squid способен работать и с другими протоколами (включая FTP, SSL, Gopher и WAIS). Он является настраиваемым кэшем: Можно определить, но каким правилам должен обрабатываться кэшированный ответ (например, тип содержания, продолжительность кэширования и т.д.). Для получения более полного представления о Squid можно ознакомиться с руководством пользователя Squid [Pea97].

Как и для любого другого прокси-сервера, для Squid необходима настройка на стороне клиента. Браузеры должны быть настроены на использование ирокси-сер- вера для любого протокола, поддерживаемого Squid (как это обсуждалось в главе 2, раздел 2.4.2). Например, номер порта для HTTP устанавливается равным 3128, поскольку именно его Squid использует для взаимодействия с Web-клиентами по умолчанию.

Squid может общаться с другими кэшами на данном уровне иерархии по протоколу ICP. Взаимодействие с другими кэшами осуществляется по протоколу UDP через порт 3130 по умолчанию, хотя для взаимодействия может использоваться и HTTP.

Иерархические отношения между кэшами определяются с помощью конфигурационных файлов, иерархия может быть локальной, региональной, национальной и даже интернациональной. Условное кэширование может быть настроено через границы доменов. Например, один Squid может иснользоваться для кэширования ряда национальных доменов, таких как .fr и .au. Для кэширования определенного сайга, прокси-серверы, расположенные вблизи от него, должны быть зарегистрированы в центральной базе данных.

Squid контактирует с набором кэшей на данном уровне иерархии, используя UDP и предполагая, что кэш, который первым сообщает о наличии ресурса, столь же быстро сможет выдать и ответ. Другими словами, Squid собирает информацию, касающуюся загрузки сети, основанную на времени ответа. Ответ, нолученпый от кэша на том же уровне иерархии не должен кэшироваться на запрашивающем кэше. Вместо этого запрашивающий кэш может нросто позволить кэшу на том же уровне иерархии служить кэшем для этого объекта, если кэш находится в той же высокоскоростной сети с малым временен ожидания. Если кэшированной копии запрашиваемого ресурса нет ни на текущем уровне иерархии, пи в родительском кэше, то Sqid направляет запрос исходному серверу. Ответ сервера может быть записан в кэш перед отправкой его клиенту.

Squid способен работать в кластере: множество кэшей в одном сетевом сегменте могут действовать как кэши одиого уровня. Преимущество кластерного кэширования заключается в высокой надежности и низкой цепе, так как используются несколько дешевых Компьютеров, а не мощпый и дорогой сервер. DNS-сервер также участвует в схеме кластерного кэширования. Определение адреса кэширующего сервера выполняется таким образом, что браузер может обращаться к любому кэшу кластера.

Squid использует списки управления доступом (ACL — Access Control List) для определения клиентов, которые могут к нему обращаться как к прокси-серверу. Список IP-адресов используется для фильтрации входящих запросов. Различные адреса могут быть определены для различных протоколов. Например, группа клиентов может использовать Squid как кэш для HTTP-запросов, по не для FTP-за- иросов. Squid может быть настроен гак, чтобы предотвратить доступ к некоторым Web-серверам; ACL в этом случае состоит из пабора домепов. Например, рассмотрим список управления доступом с меткой dumb, содержащий два домепа notbridght.com и nitwit.com:

acl dumb dstdomain notbright.com nitwit.com http_access deny dumb

Эго будет предотвращать запросы к любому из этих двух доменов от клиентов, находящихся позади Squid.

Squid также может функционировать как акселератор для Web-cepвepa: оп может быть расположен перед одним или несколькими исходными серверами и обрабатывать входящие запросы. Для этого Squid должен работать на стандартном для протокола HTTP восьмидесятом порту. После этого Squid можио настроить для обработки запросов к одному или более исходным серверам и в случае необходимости переадресовывать входящие запросы на исходные серверы, находящиеся за Squid. Squid может обрабатывать заголовок Host протокола НТТР/1.1 (см. главу 7, раздел 7.8) для определения, какой исходный сервер должен получить запрос. Squid может обеспечивать более высокую производительность, чем исходный сервер. Когда он настроен как акселератор, то может взять на себя заботу об обновлении ресурсов при изменении их на исходном сервере. Акселератор на основе Squid работает как зеркало и способен отслеживать изменения на исходном сервере. Squid не обязап обрабатывать все запросы. Имеется интересная возможность разделить ресурсы сервера на кэшируемые и пекэшируемые. Squid обрабатывает запросы на кэшируемые ресурсы, а Web-сервер, запущенный на норту, огличиом от стандартного, обрабатывает запросы на пекэшируемые ресурсы. Например, Squid может направлять все CGI-запросы исходному серверу. Если для внешней сети сделать видимым только Squid, то можно предотвратить атаку на исходный сервер, расположенный позади Squid. Например, следующая настройка, сделанная на Squid

acl safe dstdomain safe1.com safe2.com http_access deny !safe

позволяет сделать доступными только серверы safel.com и safe2.com. Кэширующий прокси-сервер будет выдавать отказ при запросе любого другого домена.

Подобно многим другим кэширующим прокси-серверам, Squid при записи ресурса в кэш использует модель истечения срока годности. Последние версии Squid используют различные модели, основанные на частотах обновления ресурсов. Вместо ожидания истечения срока годности ресурса актуалыюсгь объекта проверяется только при необходимости. Истечеиие срока годности ресурса проверяется во время запроса, если объект устаревает, то он обновляется с исходного сервера. При необходимости в результате обновления записывается повая версия ресурса. Squid поддерживает заголовки Cache-Control и Expires, которые могут присутствовать в заголовках запросов и ответов. Предпочтение отдается заголовку клиентского запроса (например, Cache-Control: max-age), а не заголовку Expires ответа сервера. Можно настроить Squid так, что он будет изменять срок годности, указанный в заголовке Expires ответа.

Последние версии Squid также поддерживают дайджесты кэшей. Новая версия способна использовать особенности НТТР/1.1, включая долговременные соединения и аутентификацию ирокси-сервера. Squid поддерживает многопоточиое исполнение, если его поддерживает операционная система. В случае перехватывающих прокси-серверов пакеты, полученные на один порт, перенаправляются на другой, а Squid действует как получатель перенаправленных пакетов. Squid также поддерживает протокол WCCP (обсужденный с разделе 11.9.4).

Источник: Web-протоколы. Теория и практика. — M.: ЗАО «Издательство БИНОМ», 2002 г. – 592 c.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100