Занимался пару дней перетряхиванием конфигурации varnish на веб-сервере, решил запротоколировать некоторые моменты, если вдруг понадобится на будущее.
Как проверить статус varnish?
1 |
systemctl status varnish |
Ответ сервера должен выглядеть примерно вот так:
Если демон запущен и работает — вы увидите статус active, а в логах не будет критических ошибок.
Правка конфигурации varnish, применение новых настроек
Настройки варниша вы найдете в /etc/varnish. По умолчанию, основной файл логики называется default.vcl и пишется на VCL (varnish configuration language).
После внесения исправлений varnish требуется перезагрузить.
1 |
systemctl restart varnish |
Если компиляция новой конфигурации прошла успешно — сервер ничего не скажет вам в ответ, а в случае ошибки — проинформирует. Подробности можно посмотреть, запросив снова статус.
Возможно вам потребуется применение конфигурации без очистки кеша. Для этого воспользуйтесь оболочкой varnishadm.
1 2 3 4 5 6 7 8 |
// запустится командный процессор варниша varnishadm // укажите новый конфиг файл vcl.load newconfig /etc/varnish/new-varnish.vcl // примените его vcl.use newconfig // выйдите из оболочки varnishadm quit |
Весь список команд оболочки varnishadm можно посмотреть по команде help (следуйте подсказкам).
Проверка настроек
После внесения изменения в конфигурацию не плохо бы проверить синтаксис и сразу исправить возможные ошибки.
В этом поможет следующая команда varnish:
1 |
varnishd -C -f /etc/varnish/default.vcl |
Демон компилирует (параметр -С), предложенный файл (-f). Файл при этом выводится в консоль. Вывод прерывается, если встречаются ошибки, и varnish сообщает, что именно ему не нравится.
Получить информацию о запущенных процессах демона, его сетевых настройках, PID
Нам помогут команды netstat и grep.
1 |
netstat -plntu | grep varnish |
На картинке в списке фигурирует два процесса, которые слушают 3 порта — 80 и 6081 как фронтенд (для входящих запросов) и 6082 — для управляющего интерфейса. Если слушающие фронтенд демоны имеют разные PID, то вероятно varnish запущен несколько раз, и нужно проверить насколько это правильно в вашем случае.
Достаточно одного демона, чтобы слушать все «входящие» порты, если их несколько, т.к. в параметрах запуска (см. /etc/varnish/varnish.params) можно указать опцию -a, содержащую сразу несколько адресов и портов.
Миграция настроек varnish с версии 3.x к 4.0.x
В доках можно найти большую статью на эту тему.
https://varnish-cache.org/docs/4.1/whats-new/upgrade-4.0.html
Всех случаев статья не охватывает, но большую часть изменений можно выполнить.
Кроме того, обнаружил проект на GIThub, автор которого предлагает скрипт для конвертации старых конфигов в новые. Он заменит старые варианты команд на новые, выполнит некоторые подстановки по шаблонам. В более сложных случаях придется разбираться вручную.