Varnish — это прокси-сервер обратного кэширования [2] , используемый в качестве ускорителя HTTP для динамических веб-сайтов с большим содержанием контента , а также API . В отличие от других веб-ускорителей , таких как Squid , который начинал свою жизнь как кэш на стороне клиента, или Apache и nginx , которые в первую очередь являются исходными серверами , Varnish был разработан как HTTP-ускоритель. Varnish ориентирован исключительно на HTTP , в отличие от других прокси-серверов , которые часто поддерживают FTP , SMTP и другие сетевые протоколы .
Инициатором проекта выступило онлайн-отделение норвежской таблоидной газеты Verdens Gang . Архитектором и ведущим разработчиком является датский независимый консультант Пол-Хеннинг Камп [2] (известный разработчик FreeBSD ), а управление, инфраструктуру и дополнительные разработки первоначально обеспечивала норвежская консалтинговая компания по Linux Linpro. Позже поддержка, управление и развитие Varnish была выделена в отдельную компанию Varnish Software.
Varnish — бесплатное программное обеспечение с открытым исходным кодом , доступное по лицензии BSD, состоящей из двух пунктов . Коммерческая поддержка доступна, среди прочего, от Varnish Software.
Версия Varnish 1.0 была выпущена в 2006 году, [3] [4] Varnish 2.0 в 2008 году, [5] Varnish 3.0 в 2011 году, [6] Varnish 4.0 в 2014 году, [7] Varnish 5.0 в 2016 году, [8] Varnish 6.0 в Март 2018 г., [9] и Varnish 7.0 в сентябре 2021 г. [10]
Varnish хранит данные в виртуальной памяти и оставляет задачу принятия решения о том, что храниться в памяти, а что выгружаться на диск, операционной системе . Это помогает избежать ситуации, когда операционная система начинает кэшировать данные, когда они перемещаются на диск приложением.
Varnish сильно поточен : каждое клиентское соединение обрабатывается отдельным рабочим потоком. При достижении настроенного ограничения количества активных рабочих потоков входящие соединения помещаются в очередь переполнения; когда эта очередь достигнет настроенного предела, входящие соединения будут отклонены.
Основным механизмом настройки является язык конфигурации Varnish (VCL), доменно-ориентированный язык (DSL), используемый для написания перехватчиков, вызываемых в критических точках обработки каждого запроса. Большинство политических решений оставлено на усмотрение кода VCL, что делает Varnish более настраиваемым и адаптируемым, чем большинство других HTTP-ускорителей. [ нужна цитация ] Когда скрипт VCL загружается, он транслируется в C , компилируется в общий объект системным компилятором и загружается непосредственно в ускоритель, который, таким образом, можно переконфигурировать без перезапуска.
Ряд параметров времени выполнения управляют такими вещами, как максимальное и минимальное количество рабочих потоков, различные тайм-ауты и т. д. Интерфейс управления из командной строки позволяет изменять эти параметры, а также компилировать, загружать и активировать новые сценарии VCL. , без перезапуска акселератора.
Чтобы свести к минимуму количество системных вызовов в быстром пути, данные журнала хранятся в общей памяти , а задача мониторинга, фильтрации, форматирования и записи данных журнала на диск делегируется отдельному приложению.
Varnish Cache может ускорить доставку информации в несколько сотен раз. Чтобы обеспечить правильную работу и производительность, Varnish предоставляет показатели, которые можно отслеживать в следующих областях: [11]
Varnish Cache поставляется с инструментами мониторинга и журналирования. Одним из наиболее часто используемых является лакстат, который дает подробный снимок текущей производительности Varnish. Он обеспечивает доступ к статистике в памяти, такой как попадания и промахи в кэше, потребление ресурсов, созданные потоки и многое другое. [12]
Запуск лакстата из командной строки возвращает постоянно обновляемый список всех доступных метрик Varnish. Если добавлен флаг -1, лакстат завершит работу после однократной печати списка. [13] Varnishstat можно использовать как отдельный инструмент для выборочной проверки состояния кэша. Чтобы отображать метрики с течением времени, сопоставлять их с другими статистическими данными по всей инфраструктуре и настраивать оповещения о любых проблемах, которые могут возникнуть, службы мониторинга могут интегрироваться с Varnish и собирать метрики Lacstat.
Varnishlog — это инструмент, который можно использовать для отладки или настройки конфигурации Varnish, поскольку он предоставляет подробную информацию о каждом отдельном запросе.
Varnish поддерживает балансировку нагрузки с использованием как циклического перебора , так и случайного директора, причем оба имеют взвешивание для каждого бэкэнда. Также доступна базовая проверка работоспособности серверных частей. [14]
Varnish Cache также включает в себя: