Как установить кэш Varnish для Apache на CentOS/RHEL 8

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.

Предварительные требования:

Шаг 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
Verify Apache Web Server Status

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
Install Varnish Cache on CentOS 8

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

# varnishd -V
Check Varnish Version

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
Verify Varnish Cache Status

Шаг 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 позже.

Change Apache Default Port

Конфигурация виртуального хоста для каждого веб-сайта/приложения, которое будет обслуживаться через 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 Virtual Host Configuration

Важно: Чтобы предотвратить использование стандартной тестовой страницы сервера Apache HTTP, закомментируйте все строки в файле /etc/httpd/conf.d/welcome.conf или просто удалите файл.

# rm /etc/httpd/conf.d/welcome.conf 

10. Затем проверьте синтаксис конфигурации httpd на наличие ошибок. Если всё в порядке, перезапустите службу httpd, чтобы применить изменения.

# httpd -t
# systemctl restart httpd
Check Apache Configuration

Настройка 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
Change Varnish Listen Port

Сохраните изменения в файле и выйдите.

Настройка серверов 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";
}
Configure Varnish Backend Servers

Если ваш сервер бэкенда работает на другом хосте, например, на другом сервере с адресом 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
Check Varnish and Apache Listening Sockets

Шаг 4: Проверка кэша Varnish и настройки Apache

14. Для проверки настройки кэша Varnish-HTTPD откройте веб-браузер и перейдите по IP-адресу сервера или FQDN, как показано на следующем скриншоте.

http://10.42.0.144
OR
http://www.tecmin.lan

Затем проверьте, обслуживаются ли веб-страницы через кэш Varnish следующим образом. Проверьте заголовки HTTP, щелкнув правой кнопкой мыши на отображаемой веб-странице, выберите Проверить, чтобы открыть инструменты разработчика, затем перейдите на вкладку Сеть и перезагрузите страницу. Затем выберите запрос для просмотра заголовков HTTP, чтобы подтвердить это, как показано на следующем скриншоте.

Check Web Page is Served via Varnish Cache

Кроме того, вы можете выполнить следующую команду curl, чтобы проверить это.

# curl -I http:///10.42.0.144
OR
#curl -I http:///www.tecmint.lan
Check Varnish and Apache Setup

Полезные программы утилиты кэша Varnish

15. Завершим этот руководство, рассмотрев некоторые полезные программы, которые поставляются с дистрибутивом кэша Varnish. Они включают утилиты для администрирования кэша Varnish, отображения подробных журналов и просмотра статистики производительности Varnish, как описано ниже.

varnishadm

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

# varnishadm
> backend.list
Administer Varnish Using Varnishadm Tool

Для получения дополнительной информации читайте man varnishadm.

varnishlog

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

# varnishlog
Varnishlog – Check Varnish Cache Performance

Для получения дополнительной информации читайте man varnishlog.

varnishstat

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

# varnishstat
varnishstat – Show Varnish Statistics

Для получения дополнительной информации читайте man varnishstat.

varnishtop

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

# varnishtop 
varnishtop – Reads Varnish Logs

Для получения дополнительной информации читайте man varnishtop.

varnishhist

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

# varnishhist
varnishstat – Show Varnish Log History

Для получения дополнительной информации ознакомьтесь с 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/