Как ускорить Apache с помощью кэша Varnish на CentOS 7

Varnish Cache (обычно известный как Varnish) – это популярный, с открытым исходным кодом обратный прокси-ускоритель HTTP, предназначенный для ускорения веб-серверов. Он разработан для чрезмерно используемых конечных точек API, а также для динамических сайтов, обслуживающих огромные объемы контента и имеющих высокий трафик.

В основном он помогает снизить нагрузку на процессор, поддерживает балансировку нагрузки на веб-серверах и позволяет веб-браузеру быстро загружать сайты за счет хранения кэша в оперативной памяти. Используют его многие крупные компании, включая Facebook, Twitter и Wikipedia, чтобы упомянуть лишь несколько.

Требования

  1. A CentOS 7 with Apache installed
  2. A CentOS 7 with a static IP address

В этой статье я объясню, как установить и использовать Varnish Cache 6.5 как фронтэнд для веб-сервера Apache в CentOS 7 (также работает на RHEL 7).

Шаг 1: Установка веб-сервера Apache на CentOS 7

1. Сначала установите сервер Apache HTTP из репозиториев программного обеспечения CentOS по умолчанию, используя менеджер пакетов YUM, следуя этим инструкциям.

# yum install httpd
Install Apache on CentOS 7

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

# systemctl start httpd
# systemctl enable httpd
# systemctl status httpd
Start and Enable Apache

3. Затем обновите правила брандмауэра системы для разрешения входящих пакетов на порт 80, используя следующие команды.

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --reload
Open Apache Port on Firewall

Шаг 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 
Install Varnish Cache in CentOS 7

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
Start Varnish Cache

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
Change Varnish Cache Port

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/