Подумайте на мгновение о том, что произошло, когда вы перешли на текущую страницу. Вы либо нажали на ссылку, которую получили через рассылку, либо на ссылку на домашней странице Tecmint.com, а затем попали на эту статью.
В нескольких словах вы (или ваш браузер на самом деле) отправили HTTP-запрос на веб-сервер, который хостит этот сайт, и сервер отправил обратно HTTP-ответ.
Несмотря на то, насколько это просто звучит, этот процесс включает в себя гораздо больше. Много обработки должно быть выполнено на стороне сервера, чтобы представить красиво отформатированную страницу, которую вы можете видеть со всеми ресурсами в ней – статическими и динамическими.
Не вдаваясь в подробности, вы можете представить, что если веб-сервер должен отвечать на множество подобных запросов одновременно (давайте начнем с нескольких сотен), он может привести себя или весь систему к замедлению в скором времени.
И вот где Varnish, высокопроизводительный HTTP-ускоритель и обратный прокси, может спасти ситуацию. В этой статье я объясню, как установить и использовать Varnish в качестве фронтенда для Apache или Nginx, чтобы кэшировать HTTP-ответы быстрее и без дополнительной нагрузки на веб-сервер.
Однако, поскольку Varnish обычно хранит свой кэш в памяти вместо на диске, нам нужно будет быть внимательными и ограничивать выделенное для кэширования оперативное пространство. Мы обсудим, как это сделать через минуту.
Содержание
Как работает Varnish

Установка кэша Varnish на сервере Linux
Этот пост предполагает, что вы установили сервер LAMP или LEMP. Если нет, пожалуйста, установите один из этих стеков перед продолжением.
- Как установить сервер LAMP на дистрибутивах, основанных на RHEL
- Как установить сервер LAMP на Ubuntu
- Как установить сервер LAMP на Debian
- Как установить сервер LEMP на дистрибутивах, основанных на RHEL
- Как установить сервер LEMP на Ubuntu
- Как установить сервер LEMP на Debian
Официальная документация рекомендует устанавливать Varnish из собственного репозитория разработчика, поскольку он всегда предоставляет последнюю версию. Вы также можете выбрать установку пакета из официальных репозиториев вашего дистрибутива, хотя они могут быть немного устаревшими.
Также, обратите внимание, что репозитории проекта предоставляют поддержку только для 64-разрядных систем, в то время как для 32-разрядных машин вам придется обратиться к официально поддерживаемым репозиториям вашего дистрибутива.
В этой статье мы установим Varnish из репозиториев, официально поддерживаемых каждым дистрибутивом. Главная причина этого решения заключается в обеспечении единообразия метода установки и обеспечении автоматического разрешения зависимостей для всех архитектур.
Установка Varnish в Linux на основе Debian
На дистрибутивах на основе Debian, вы можете установить Varnish с помощью команды apt, как показано.
# apt update # apt install varnish

Установка Varnish в Linux на основе RHEL
На дистрибутивах на основе RHEL таких как CentOS, Rocky и AlmaLinux, вам нужно включить репозиторий EPEL перед установкой Varnish с помощью команды yum как показано.
# yum install epel-release # yum update # yum install varnish

Если установка завершится успешно, у вас будет одна из следующих версий varnish в зависимости от вашего дистрибутива:
# varnishd -V varnishd (varnish-6.5.1 revision 1dae23376bb5ea7a6b8e9e4b9ed95cdc9469fb64)
Наконец, вам нужно запустить Varnish вручную, если процесс установки этого не сделал, и включить его запуск при загрузке.
# systemctl start varnish # systemctl enable varnish # systemctl status varnish

По умолчанию порт 6081 используется сервисом varnish, и вы можете подтвердить это, выполнив следующую команду netstat.
# netstat -tunlp | grep 6081

Настройка кэша Varnish в Linux
Как мы уже говорили ранее, Varnish находится между внешними клиентами и веб-сервером. По этой причине, и чтобы кэширование стало прозрачным для конечных пользователей, нам нужно:
- Изменить стандартный порт 6081, на котором прослушивает Varnish, на 80.
- Измените стандартный порт, на котором прослушивает веб-сервер, на 8080 вместо стандартного 80.
- Перенаправьте входящий трафик от Varnish к веб-серверу. К счастью, Varnish делает это автоматически после того, как мы выполним шаги 1) и 2).
Изменение порта Varnish
Процесс varnishd контролируется systemd и имеет файл юнита в /usr/lib/systemd/system/varnish.service, который содержит стандартную конфигурацию работы Varnish.
Здесь нам нужно изменить стандартный порт Varnish с 6081 на порт 80 и размер кэша до 1GB как показано при выполнении следующей команды, которая откроет файл юнита в редакторе, как показано.
Примечание: Вы можете изменить количество памяти в соответствии с ресурсами вашего оборудования или, альтернативно, выбрать сохранение кэшированных файлов на диск.
$ sudo systemctl edit --full varnish OR # systemctl edit --full varnish

После внесения изменений в файл /etc/systemd/system/varnish.service вам нужно перезагрузить демон Systemd путем выполнения следующей команды:
# systemctl daemon-reload
Изменение порта Apache или Nginx
После изменения порта Varnish, теперь вам нужно изменить порт вашего Apache или Nginx веб-сервера с дефолтного 80 на самый распространенный сетевой порт – 8080.
---------- On Debian-based Systems ---------- # nano /etc/apache2/ports.conf [On Apache] # /etc/nginx/sites-enabled/default [On Nginx] ---------- On RHEL-based Systems ---------- # vi /etc/httpd/conf/httpd.conf [On Apache] # vi /etc/nginx/nginx.conf [On Nginx]

Как только вы внесете изменения, не забудьте перезапустить Varnish и веб-сервер.
# systemctl restart varnish ---------- On Debian-based Systems ---------- # systemctl restart apache2 # systemctl restart nginx ---------- On RHEL-based Systems ---------- # systemctl restart httpd # systemctl restart nginx
Тестирование кэша Varnish в Linux
Первый тест заключается в выполнении HTTP запроса через команду curl и проверке, что он обрабатывается Varnish:
# curl -I http://localhost

Varnish также включает в себя два удобных инструмента:
- Просмотр логов Varnish в реальном времени, который называется varnishlog.
- Отображение статистики кэша Varnish, которая называется varnishstat.
В качестве второго теста, в следующем скринкасте, мы отобразим как логи, так и статистику на CentOS сервере (dev1, верхняя половина экрана) и на Debian сервере (dev2, нижняя половина экрана) при отправке HTTP запросов и получении ответов.
Тест производительности веб-сервера
Наш третий и последний тест будет заключаться в профилировании веб-сервера и Varnish с помощью инструмента аb профилирования и сравнении времени отклика и нагрузки на процессор в каждом случае.
В данном примере мы будем использовать сервер CentOS, но вы можете использовать любую дистрибутив и получить аналогичные результаты. Следите за средней нагрузкой в верхней части и строкой Запросов в секунду в выводе ab.
С помощью ab мы будем отправлять 50 (-c 50) одновременных запросов одновременно и повторять тест 1000000 раз (указано -n 1000000). Varnish вернет большее количество запросов в секунду и гораздо меньшую среднюю нагрузку.
Важно: Пожалуйста, помните, что Varnish прослушивает порт 80 (стандартный порт HTTP), в то время как Apache прослушивает порт 8080. Вы также можете отметить время, необходимое для завершения каждого теста.
# ab -c 50 -n 100000 http://localhost/index.html
Заключение
В этой статье мы обсудили, как настроить кеш Varnish перед веб-сервером, Apache, или Nginx. Обратите внимание, что мы не углубились в файл конфигурации default.vcl, который позволяет нам более подробно настроить политику кэширования.
Теперь вы можете обратиться к официальной документации для получения дополнительных примеров конфигурации или оставить комментарий, используя форму ниже.
Source:
https://www.tecmint.com/install-varnish-cache-server/