ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как использовать Varnish для повышения производительности HTTP

Как использовать Varnish HTTP для повышения производительности HTTP

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

Чтобы убедиться, что ваше веб-приложение соответствует этим ожиданиям, вы можете использовать технологии оптимизации для повышения производительности. Введите Varnish – надежный HTTP-ускоритель, который может революционизировать скорость и эффективность вашего веб-приложения.

В этой статье мы рассмотрим мощь и потенциал Varnish, расскажем о его ключевых функциях, преимуществах и вариантах использования. Мы поделимся точными шагами по установке, настройке и оптимизации для достижения максимальной производительности. Кроме того, мы рассмотрим соображения безопасности и представим некоторые инструменты мониторинга, чтобы гарантировать, что Varnish остается надежным и эффективным.

 

Что такое Varnish?

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

Varnish имеет открытый исходный код и доступен для различных операционных систем, включая основные дистрибутивы Linux, macOS и Windows. Вот некоторые из его ключевых особенностей::

 

Почему вы должны использовать Varnish?

В дополнение к очевидным преимуществам повышения производительности и быстродействия, вот несколько других причин, по которым вам следует использовать Varnish:

 

Рабочий процесс Varnish

Чтобы понять, как работает Varnish, давайте рассмотрим его рабочий процесс:

 

Важность оптимизации HTTP

Оптимизация HTTP включает в себя набор методов, которые могут быть использованы для повышения производительности веб-сайта. Примеры стратегий оптимизации включают кэширование, уменьшение размера изображений, минимизацию CSS и использование сети доставки контента (CDN).

 

Факторы, влияющие на производительность HTTP

При оптимизации производительности HTTP вашего веб-сайта важно учитывать следующие факторы:

 

Зачем беспокоиться об оптимизации HTTP?

Давайте рассмотрим несколько причин, по которым оптимизация HTTP имеет решающее значение для успеха в Интернете:

 

Установка и настройка Varnish

В этом разделе мы поделимся шагами по началу работы с Varnish на сервере Ubuntu. Давайте начнем.

 

Установка Varnish в Ubuntu

 

Настройка Varnish в Ubuntu

Теперь, когда Varnish установлен в нашей системе, мы выполним несколько шагов по его настройке.

 

Шаг № 1 – Настройка systemd

Файл конфигурации systemd для Varnish находится по адресу: /lib/systemd/system/varnish.service Вы можете изменить настройки в этом файле в соответствии с вашими потребностями. Для этого выполните следующую команду, которая откроет файл в редакторе по умолчанию:

sudo systemctl edit --full varnish

 

Например, если вы хотите увеличить максимальное количество открытых файловых дескрипторов для Varnish, вы можете изменить параметр LimitNOFILE в файле, который по умолчанию равен 131072. Вы также можете установить максимальный размер основного файла, используя параметр LimitCORE, который по умолчанию равен бесконечности.

Инструкция ExecStart в файле включает различные параметры командной строки, передаваемые процессу varnishd при запуске. Вы можете передать желаемый порт, размер кэша и любые другие параметры в Varnish, изменив эту команду. Например, мы изменили порт на 80 и установили размер кэша на 5 гигабайт. Команда ExecStart обновлена до:

ExecStart=/usr/sbin/varnishd \ 
           	  -a :80 \ 
           	  -a www.site24x7.com,PROXY \ 
           	  -p feature=+http2 \ 
           	  -f /etc/varnish/default.vcl \ 
           	  -s malloc,5g

 

После внесения всех изменений в файл сохраните его и выполните следующую команду:

sudo systemctl daemon-reload

 

Шаг # 2 – Настройка Apache для работы с Varnish

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

 

Шаг # 3 – Настройка серверных систем с использованием VCL

Файл VCL по умолчанию находится по адресу /etc/varnish/default.vcl. Спецификация серверной части по умолчанию в файле использует IP 127.0.0.1 и порт 8080.

backend default { 
	.host = "127.0.0.1"; 
	.port = "8080"; 
}

 

Если на последнем шаге вы выбрали другой порт, укажите это здесь. Вы также можете добавить дополнительные серверные части в свои настройки Varnish, используя тот же синтаксис.

backend python { 
	.host = "127.0.0.1"; 
	.port = "7000"; 
}

 

Приведенная выше команда настроит другой сервер для нашего веб-приложения на основе Python.

 

Шаг # 4 – Перезапуск Apache и Varnish

Наконец, мы готовы перезапустить Apache и Varnish, чтобы можно было применить все изменения. Выполните следующую команду:

sudo systemctl restart apache2 varnish

 

Получение максимальной отдачи от Varnish

В отличие от большинства систем, Varnish не использует директивы конфигурации, а вместо этого полагается на VCL для настройки. Хотите ли вы реализовать список контроля доступа, добавить проверки работоспособности, использовать хеширование для кэшированных данных или обслуживать контент на основе устройства пользователя, вы можете добиться этого с помощью VCL. Давайте рассмотрим несколько советов и хитростей по оптимизации конфигурации Varnish.

Настройка правил кэширования на основе шаблонов URL и заголовков

Определяя определенные правила в VCL, вы можете управлять тем, какой контент следует кэшировать и на какой срок. Один из подходов заключается в создании правил кэширования на основе шаблонов URL. Varnish позволяет сопоставлять URL-адреса с помощью регулярных выражений и соответствующим образом применять определенные директивы кэширования. Давайте рассмотрим пример:

sub vcl_recv { 
  # Сопоставляйте URL-адреса, начинающиеся с "/articles/".
 if (req.url ~ "^/articles/") { 
	# Установите более длительное время работы кэша (TTL) для статей
	set beresp.ttl = 1h; 
  } 

  # Сопоставляйте URL-адреса, заканчивающиеся на ".css" или ".js".
  if (req.url ~ "\.(css|js)$") { 
	# Кэшируйте эти статические ресурсы на более длительный срок
	set beresp.ttl = 7d; 
  } 
}

 

В приведенном выше фрагменте кода мы устанавливаем более длинный TTL для статей на нашем веб-сайте, поскольку они обновляются реже. Мы также кэшируем статические ресурсы на более длительный срок.

Аналогичным образом вы также можете настроить правила кэширования на основе конкретных заголовков запросов или ответов. Вот пример:

sub vcl_backend_response { 
  # Кэшируйте ответы с определенным значением заголовка
  if (beresp.http.X-Cacheable == "true") { 
	# Установите пользовательский TTL кэша для кэшируемых ответов
	set beresp.ttl = 1h; 
  } 
}

 

В приведенном выше фрагменте мы обновляем TTL результата кэша, если ответ содержит определенный заголовок.

Настройка стратегий недействительности кэша

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

 

Настройка Varnish для еще большей производительности

Несколько параметров в Varnish можно настроить для оптимизации производительности в зависимости от ваших конкретных потребностей. Вот несколько примеров.:

 

Интеллектуальная маршрутизация между несколькими серверными системами

Если вы используете несколько серверных систем, вы можете использовать VCL для реализации логики маршрутизации запросов на основе таких факторов, как заголовки запросов, шаблоны URL-адресов или другие условия. Рассмотрим этот пример.:

sub vcl_recv { 
  if (req.http.User-Agent ~ "Mobile") { 
	# Перенаправлять мобильных пользователей на определенный внутренний сервер
	set req.backend_hint = mobile_backend; 
  } else if (req.url ~ "^/auth/") { 
	# Перенаправляйте запросы на аутентификацию на выделенный внутренний сервер
	set req.backend_hint = auth_backend; 
  } else { 
	# Перенаправляйте все остальные запросы на сервер по умолчанию
	set req.backend_hint = default_backend; 
  } 
}

 

В приведенном выше фрагменте кода мы перенаправляем запросы мобильных клиентов на выделенный мобильный серверный сервер, запросы аутентификации – на серверный сервер аутентификации, а все остальные запросы – на внутренний сервер по умолчанию.

Соображения о высокой доступности

Примите во внимание следующие рекомендации для обеспечения высокой доступности:

 

Соображения безопасности при использовании Varnish

Varnish предлагает несколько средств контроля безопасности для защиты ваших веб-серверов от кибератак.

 

Инструменты Varnish для мониторинга

Varnish поставляется в комплекте с различными инструментами для мониторинга и создания отчетов.

 

Заключение

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

Exit mobile version