Varnish Cache (обычно известный как Varnish) – это популярный, с открытым исходным кодом обратный прокси-ускоритель HTTP, предназначенный для ускорения веб-серверов. Он разработан для чрезмерно используемых конечных точек API, а также для динамических сайтов, обслуживающих огромные объемы контента и имеющих высокий трафик.
В основном он помогает снизить нагрузку на процессор, поддерживает балансировку нагрузки на веб-серверах и позволяет веб-браузеру быстро загружать сайты за счет хранения кэша в оперативной памяти. Используют его многие крупные компании, включая Facebook, Twitter и Wikipedia, чтобы упомянуть лишь несколько.
Требования
В этой статье я объясню, как установить и использовать Varnish Cache 6.5 как фронтэнд для веб-сервера Apache в CentOS 7 (также работает на RHEL 7).
Шаг 1: Установка веб-сервера Apache на CentOS 7
1. Сначала установите сервер Apache HTTP из репозиториев программного обеспечения CentOS по умолчанию, используя менеджер пакетов YUM, следуя этим инструкциям.
# yum install httpd

2. После установки Apache запустите его на время и включите автоматический запуск при загрузке системы.
# systemctl start httpd # systemctl enable httpd # systemctl status httpd

3. Затем обновите правила брандмауэра системы для разрешения входящих пакетов на порт 80, используя следующие команды.
# firewall-cmd --zone=public --permanent --add-service=http # firewall-cmd --reload

Шаг 2: Установите кэш Varnish на CentOS 7
4. Теперь есть предварительно скомпилированные пакеты RPM для последней версии Varnish Cache 6 (т.е. 6.5 на момент написания), поэтому вам нужно добавить официальный репозиторий Varnish Cache.
Прежде чем это сделать, вам нужно включить репозиторий EPEL для установки нескольких зависимых пакетов, как показано ниже.
# yum install -y epel-release
5. Затем установите pygpgme, пакет для обработки подписей GPG, и yum-utils, набор полезных утилит, расширяющих возможности yum различными способами.
# yum install pygpgme yum-utils
6. Теперь создайте файл с именем /etc/yum.repos.d/varnishcache_varnish65.repo, содержащий нижеуказанную конфигурацию репозитория.
# vi /etc/yum.repos.d/varnishcache_varnish65.repo
Важно: Убедитесь, что замените el
и 7
в конфигурации ниже на вашу дистрибутив Linux и версию:
[varnishcache_varnish65] name=varnishcache_varnish65 baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/$basearch repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 [varnishcache_varnish65-source] name=varnishcache_varnish65-source baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/SRPMS repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300
7. Теперь выполните команду ниже, чтобы обновить локальный кэш yum и установить пакет кэша varnish (не забудьте принять ключ GPG, набрав y
или yes
во время установки пакета):
# yum -q makecache -y --disablerepo='*' --enablerepo='varnishcache_varnish65' # yum install varnish

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

10. Вы можете подтвердить успешную установку Varnish, увидев местоположение исполняемого файла Varnish и установленную версию на вашей системе.
$ which varnishd $ varnishd -V
Пример вывода
varnishd (varnish-6.5.1 revision 1dae23376bb5ea7a6b8e9e4b9ed95cdc9469fb64) Copyright (c) 2006 Verdens Gang AS Copyright (c) 2006-2020 Varnish Software
Шаг 3: Настройка Apache для работы с кэшем Varnish
11. Теперь настройте Apache для совместной работы с кэшем Varnish. По умолчанию Apache слушает порт 80, вам нужно изменить порт HTTPD по умолчанию на 8080 – это обеспечит работу HTTPD за кэшированием Varnish.
Вы можете использовать команду sed для изменения порта 80 на 8080, как показано ниже.
# sed -i "s/Listen 80/Listen 8080/" /etc/httpd/conf/httpd.conf
Примечание: Также вам нужно изменить порт в конфигурации виртуального хоста для каждого сайта, который вы хотите обслуживать через Varnish. Вот конфигурация для нашего тестового сайта (/etc/httpd/conf.d/tecmint.lan.conf).
<VirtualHost *:8080> DocumentRoot "/var/www/html/tecmint.lan/" ServerName www.tecmint.lan # Other directives here </VirtualHost>
12. Затем откройте файл конфигурации systemd для Varnish и найдите параметр ExecStart, который указывает порт, на котором слушает Varnish, и измените его значение с 6081 на 80, как показано на скриншоте.
# systemctl edit --full varnish
Конфигурация должна выглядеть так после завершения.
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

13. Затем настройте Apache как бэкенд-сервер для прокси-сервера Varnish в файле конфигурации /etc/varnish/default.vcl.
# vi /etc/varnish/default.vcl
Найдите раздел backend и определите хост IP и порт. Ниже приведена конфигурация бэкенда по умолчанию, укажите на ваш реальный сервер контента.
backend default { .host = "127.0.0.1"; .port = "8080"; }
Если ваш бэкенд-сервер работает на другом сервере с адресом 10.42.1.10, то параметр хоста должен указывать на этот IP-адрес.
backend server1 { .host = "10.42.1.10"; .port = "8080"; }
14. После выполнения всех необходимых настроек перезапустите HTTPD и кэш Varnish, чтобы внести вышеперечисленные изменения в действие.
# systemctl daemon-reload # systemctl restart httpd # systemctl restart varnish
Шаг 4: Проверка кэша Varnish на Apache
15. Наконец, проверьте, включен ли и работает ли Varnish с сервисом HTTPD, используя команду cURL ниже, которая может использоваться для просмотра заголовка HTTP.
# curl -I http://localhost
Пример вывода
HTTP/1.1 200 OK Date: Wed, 06 Jan 2021 08:36:07 GMT Server: Apache/2.4.6 (CentOS) Last-Modified: Thu, 16 Oct 2014 13:20:58 GMT ETag: "1321-5058a1e728280" Accept-Ranges: bytes Content-Length: 4897 Content-Type: text/html; charset=UTF-8 X-Varnish: 131085 Age: 0 Via: 1.1 varnish (Varnish/6.5) Connection: keep-alive
Для получения дополнительной информации ознакомьтесь с репозиторием Varnish Cache на Github: https://github.com/varnishcache/varnish-cache
В этом руководстве мы объяснили, как настроить прокси Varnish Cache 6.5 для сервера Apache HTTP на CentOS 7. Если у вас есть какие-либо вопросы или дополнительные идеи для обсуждения, используйте форму обратной связи ниже, чтобы написать нам.
Source:
https://www.tecmint.com/install-varnish-cache-on-centos-7-for-apache/