Varnish Cache – это бесплатный программный продукт с открытым исходным кодом, современный и высокопроизводительный ускоритель веб-приложений. Это быстрый обратный прокси-сервер HTTP, кеширующий контент для увеличения производительности вашего веб-сервера путем хранения веб-контента в памяти сервера – в кеше. Он настраивается для работы перед исходным сервером, таким как Apache (HTTPD) веб-сервер.
Когда клиент запрашивает контент, Varnish принимает запрос HTTP, отправляет его на исходный сервер, кеширует возвращенные объекты и отвечает на запрос клиента. В следующий раз, когда клиент запросит тот же контент, Varnish будет обслуживать его из кеша. Таким образом, он сокращает время ответа и потребление сетевой полосы пропускания при будущих эквивалентных запросах.
Varnish также работает как маршрутизатор запросов HTTP, брандмауэр веб-приложений, балансировщик нагрузки и многое другое. Он настраивается с использованием гибкого языка конфигурации Varnish (VCL), который расширяется с помощью модулей Varnish (также известных как VMODs), поддерживает Edge Side Includes (ESL), сжатие и разжатие Gzip и многое другое.
В этой статье вы узнаете, как установить веб-сервер Apache HTTPD и Varnish Cache 6 на новый сервер CentOS/RHEL 8, включая настройку Varnish для работы перед сервером HTTPD.
Предварительные требования:
- A server with CentOS 8 Installation
- A server with RHEL 8 installation with enabled Red Hat subscription on your system.
Шаг 1: Установка веб-сервера Apache на CentOS/RHEL 8
1. Начните с обновления всех установленных программных пакетов в системе следующим образом, используя команду DNF.
# dnf update
2. Затем выполните следующую команду для установки веб-сервера Apache HTTP из репозитория AppStream.
# dnf install httpd
3. Как только установка завершится, запустите службу httpd, включите ее для автоматического запуска при загрузке системы и проверьте ее статус, чтобы подтвердить, что она запущена и работает, используя команду systemctl.
# systemctl start httpd # systemctl enable httpd # systemctl status httpd

4. По умолчанию CentOS/RHEL 8 включает полностью заблокированный брандмауэр (выполните firewall-cmd –state для подтверждения). Вы должны открыть доступ к службе HTTP в брандмауэре, чтобы позволить пользователям получать доступ к веб-сайтам или приложениям, работающим по протоколу HTTP, а также перезагрузить настройки firewalld, чтобы применить новые изменения.
# firewall-cmd --zone=public --permanent --add-service=http # firewall-cmd --reload
Шаг 2: Установка кэша Varnish 6.4 на CentOS/RHEL 8
5. Теперь, когда веб-сервер Apache работает, вы можете продолжить установку Varnish Cache на системе с помощью следующей команды.
# dnf module install varnish

6. После успешной установки вы можете проверить версию Varnish, установленную на вашей системе.
# varnishd -V

7. Затем основной исполняемый файл устанавливается как /usr/sbin/varnishd. Кроме того, файлы конфигурации Varnish хранятся в каталоге /etc/varnish, где:
- /etc/varnish/default.vcl – это основной файл конфигурации Varnish, написанный с использованием VCL.
- /etc/varnish/secret – это файл секрета Varnish.
8. Теперь запустите службу Varnish, чтобы в дальнейшем включить ее автоматически при загрузке системы в случае перезагрузки сервера, и проверьте ее статус, чтобы убедиться, что она работает, следуя указанным ниже инструкциям.
# systemctl start varnish # systemctl enable varnish # systemctl status varnish

Шаг 3: Настройка Apache для работы с кэшем Varnish
9. Теперь пришло время настроить Varnish Cache для запуска перед службой Apache. По умолчанию сервер Apache настроен на прослушивание порта 80, что определено в основном файле конфигурации /etc/httpd/conf/httpd.conf.
Откройте его для редактирования с помощью вашего любимого текстового редактора.
# vi /etc/httpd/conf/httpd.conf
Найдите параметр Listen. Для запуска Varnish перед сервером Apache вы должны изменить порт по умолчанию 80 на 8080 (или любой другой порт на ваш выбор), как показано на следующем снимке экрана.
Этот порт будет добавлен как порт сервера-источника в файле конфигурации Varnish позже.

Конфигурация виртуального хоста для каждого веб-сайта/приложения, которое будет обслуживаться через Varnish, должна быть настроена на прослушивание указанного порта. Вот конфигурация для нашего тестового сайта (/etc/httpd/conf.d/tecmint.lan.conf).
<VirtualHost *:8080> DocumentRoot "/var/www/html/tecmint.lan/" ServerName www.tecmint.lan # Other directives here </VirtualHost>

Важно: Чтобы предотвратить использование стандартной тестовой страницы сервера Apache HTTP, закомментируйте все строки в файле /etc/httpd/conf.d/welcome.conf или просто удалите файл.
# rm /etc/httpd/conf.d/welcome.conf
10. Затем проверьте синтаксис конфигурации httpd на наличие ошибок. Если всё в порядке, перезапустите службу httpd, чтобы применить изменения.
# httpd -t # systemctl restart httpd

Настройка Varnish для Systemd
11. Чтобы развернуть Varnish перед HTTPD, вам просто нужно настроить его на прослушивание клиентских запросов на стандартном HTTP-порту 80, как объяснено ниже.
Обратите внимание, что в Varnish Cache 6.0 и выше вы должны установить порт, на котором слушает varnish сервер, в файле службы Varnish для systemd. Сначала откройте его для редактирования.
# systemctl edit --full varnish
Найдите строку ExecStart, затем измените значение переключателя -a
(который указывает varnish на адрес и порт) с :6081
на :80
, как показано на следующем скриншоте.
Важно, если вы не укажете адрес, varnishd будет слушать все доступные интерфейсы IPv4 и IPv6, активные на сервере.
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

Сохраните изменения в файле и выйдите.
Настройка серверов Varnish Backend с использованием VCL
12. Теперь вам необходимо настроить исходный сервер, известный в терминологии Varnish как бэкенд. Это сервер, который понимает HTTP и с которым общается Varnish для получения контента – в данном случае это httpd. Он настраивается в основном конфигурационном файле /etc/varnish/default.vcl.
# vi /etc/varnish/default.vcl
Существует раздел конфигурации бэкенда по умолчанию, называемый default. Вы можете изменить “default” на server1 (или любое другое имя на ваш выбор в соответствии со стандартами вашей среды). По умолчанию параметр хост указывает на localhost, предполагая, что бэкенд-сервер работает на локальном хосте.
Затем установите порт на 8080 (порт, который вы определили в конфигурационном файле виртуального хоста Apache), как показано на скриншоте.
backend server1 { .host = "127.0.0.1"; .port = "8080"; }

Если ваш сервер бэкенда работает на другом хосте, например, на другом сервере с адресом 10.42.1.10, то параметр хост должен указывать на этот IP-адрес.
backend server1 { .host = "10.42.1.10"; .port = "8080"; }
Сохраните файл и закройте его.
13. После внесения всех необходимых изменений, касающихся Varnish, перезагрузите конфигурацию менеджера systemd, чтобы отразить новые изменения в файле службы Varnish, а также перезапустите службу Varnish, чтобы применить общие изменения.
# systemctl daemon-reload # systemctl restart varnish
14. В данный момент Varnish и Apache должны слушать порты 80 и 8080 соответственно. Вы можете подтвердить это, используя команду статистики сокетов.
# ss -tpln

Шаг 4: Проверка кэша Varnish и настройки Apache
14. Для проверки настройки кэша Varnish-HTTPD откройте веб-браузер и перейдите по IP-адресу сервера или FQDN, как показано на следующем скриншоте.
http://10.42.0.144 OR http://www.tecmin.lan
Затем проверьте, обслуживаются ли веб-страницы через кэш Varnish следующим образом. Проверьте заголовки HTTP, щелкнув правой кнопкой мыши на отображаемой веб-странице, выберите Проверить, чтобы открыть инструменты разработчика, затем перейдите на вкладку Сеть и перезагрузите страницу. Затем выберите запрос для просмотра заголовков HTTP, чтобы подтвердить это, как показано на следующем скриншоте.

Кроме того, вы можете выполнить следующую команду curl, чтобы проверить это.
# curl -I http:///10.42.0.144 OR #curl -I http:///www.tecmint.lan

Полезные программы утилиты кэша Varnish
15. Завершим этот руководство, рассмотрев некоторые полезные программы, которые поставляются с дистрибутивом кэша Varnish. Они включают утилиты для администрирования кэша Varnish, отображения подробных журналов и просмотра статистики производительности Varnish, как описано ниже.
varnishadm
Первый – varnishadm, который используется для управления работающим экземпляром Varnish. Он устанавливает соединение с интерфейсом командной строки varnishd. Он может влиять на работающий экземпляр Varnish, запуская и останавливая varnishd, изменяя параметры конфигурации, перезагружая VCL, перечисляя бекенды и многое другое.
# varnishadm > backend.list

Для получения дополнительной информации читайте man varnishadm.
varnishlog
Следующая программа – varnishlog, которая используется для доступа к данным, специфичным для запроса (т.е. информация о конкретных клиентах и запросах). Он предоставляет большое количество информации, поэтому обычно необходимо фильтровать ее.
# varnishlog

Для получения дополнительной информации читайте man varnishlog.
varnishstat
У нас также есть varnishstat (статистика Varnish), который используется для доступа к общей статистике, такой как количество общих запросов, количество объектов и многое другое.
# varnishstat

Для получения дополнительной информации читайте man varnishstat.
varnishtop
Затем у нас есть varnishtop, утилита, которая читает журнал Varnish и представляет непрерывно обновляемый список наиболее часто встречающихся записей в журнале.
# varnishtop

Для получения дополнительной информации читайте man varnishtop.
varnishhist
Другая полезная утилита – это varnishhist (история Varnish), которая считывает журналы Varnish и представляет непрерывно обновляемую гистограмму, показывающую распределение последних N запросов по их обработке.
# varnishhist

Для получения дополнительной информации ознакомьтесь с man varnishhist.
Вот и всё! Вы успешно развернули Varnish Cache для ускорения контента вашего веб-приложения, обслуживаемого с помощью сервера Apache HTTP на CentOS/RHEL 8.
Если у вас есть какие-либо вопросы по этой теме или мысли для обмена, воспользуйтесь формой обратной связи ниже. Ознакомьтесь с документацией Varnish Cache 6.0 для получения дополнительной информации.
Если вы хотите включить HTTPS на вашем сайте, ознакомьтесь с нашей следующей статьей, которая покажет, как включить SSL/TLS для кэша Varnish с помощью Hitch на CentOS/RHEL 8.
Source:
https://www.tecmint.com/install-varnish-cache-for-apache-on-centos-rhel-8/