Общее представление о Varnish
В этом разделе мы рассмотрим ответы на вопросы: - Что представляет собой пакет «Varnish»? - Как называются все его компоненты? - Понадобится ли шестигранный ключ для сборки?
Две основные части Varnish — это два процесса в программе varnishd. Первый процесс называется «менеджером», и его задача — общаться с вами, администратором, и выполнять ваши запросы.
Второй процесс называется «рабочим» или просто «дочерним», и именно он выполняет всю фактическую работу с вашим HTTP-трафиком.
При запуске varnishd, вы запускаете процесс менеджера, и после обработки всех флагов командной строки он запускает для вас дочерний процесс. Если дочерний процесс завершится, менеджер автоматически и немедленно запустит его снова.
Основной причиной такого разделения задач является безопасность: процесс менеджера обычно выполняется с правами «root», чтобы открыть TCP-сокет порт 80, но он запускает дочерний процесс с минимальными правами — как мера защиты.
Процесс менеджера интерактивен; он предлагает интерфейс командной строки (CLI), который можно использовать вручную, из сценариев или программ. CLI предоставляет почти полный контроль над тем, как Varnish обрабатывает ваш HTTP-трафик, и мы приложили значительные усилия, чтобы вам не приходилось перезапускать процессы Varnish, если только вы не хотите внести какие-то очень фундаментальные изменения.
К CLI можно безопасно получить удалённый доступ, используя простую и гибкую схему контроля доступа с предварительно общим ключом (PSK), что облегчает интеграцию Varnish в вашу инфраструктуру управления и операций или привязку её к вашей CMS.
Все это подробно описано в Запуск и работа с Varnish.
Такие вещи, как то, как дочерний процесс должен обрабатывать HTTP-запросы, что кешировать, какие заголовки удалить и т. д., определяются с помощью небольшого языка программирования под названием VCL — Язык конфигурации Varnish. Процесс менеджера будет компилировать программу VCL и проверять её на ошибки,
но дочерний процесс выполняет программу VCL для каждого входящего HTTP-запроса.
Поскольку VCL компилируется в код C, а код C компилируется в машинные инструкции, даже очень сложные программы VCL выполняются за несколько микросекунд, не оказывая никакого влияния на производительность.
И не волнуйтесь, если вы не программист; VCL очень прост в использовании для решения простых задач:
sub vcl_recv {
# Remove the cookie header to enable caching
unset req.http.cookie;
}
Интерфейс командной строки позволяет в любое время компилировать и загружать новые программы VCL, а переключаться между загруженными программами VCL можно мгновенно, не перезапуская дочерний процесс и не пропуская ни одного HTTP-запроса.
Код VCL можно расширить с помощью внешних модулей, называемых VMOD, или даже с помощью встроенного кода C, если вы достаточно смелы, поэтому в плане того, что Varnish может сделать с вашим HTTP-трафиком, нет никаких ограничений.
VCL — Язык конфигурации Varnish подробно описывает VCL и его возможности.
Varnish использует сегмент общей памяти для отчётности и протоколирования своей деятельности и состояния. Для каждого HTTP-запроса в сегмент памяти журнала добавляется ряд очень подробных записей. Другие процессы могут подписываться на записи журнала, фильтровать их и форматировать, например, как записи журналов Apache/NCSA.
Другой сегмент в общей памяти используется для счётчиков статистики, что позволяет контролировать в режиме реального времени, с разрешением до микросекунды, коэффициент попадания в кэш, использование ресурсов и определённые метрики производительности.
Varnish поставляется с рядом инструментов, которые отчитываются из общей памяти, varnishlog, varnishstats, varnishncsa и т. д., а также с библиотекой API, с помощью которой вы можете создавать свои собственные инструменты, если это необходимо.
Отчётность и статистика объясняет, как всё это работает.
Вероятно, вы заинтересовались Varnish, потому что хотите, чтобы ваш веб-сайт работал лучше. Существует множество аспектов настройки производительности веб-сайта, от относительно простых политических решений о том, что кешировать, до разработки географически распределённых многоуровневых CDN с использованием ESI и автоматического переключения.
Varnish и производительность веб-сайта расскажет вам о возможностях и функциях Varnish.
Наконец, следует упомянуть закон Мерфи: что-то пойдёт не так, и, скорее всего, это произойдёт в ноль часов. Скорее всего, во время урагана, когда у вас разрядился телефон, а ваша жена готовила романтический вечер, чтобы отметить годовщину.
Да, мы все были в подобной ситуации, не так ли?
В случае проблем с Диагностикой неполадок Varnish возможно, вы найдёте помощь.
Copyright © 2006 Verdens Gang AS
Copyright © 2006–2020 Varnish Software AS
Licensed under the BSD-2-Clause License.
https://varnish-cache.org/docs/7.4/users-guide/intro.html