Совсем недавно я запустил обновление онлайн-миграции через YaST на SUSE Linux Enterprise Server (SLES) 15.1–15.2, и после этого у меня были следующие их версии:
SLES 15.2
Apache 2.4.43
MariaDB 10.4.17
PHP 7.4.6
Varnish 6.2.1
Моя основная архитектура Linux теперь выглядит следующим образом:
Предварительные тесты не выявили конфликтов или проблем до обновления, и он перезагрузился и работал нормально, когда все было завершено. После проверки всего этого я заметил, что varnish.service (varnishd) не запустился. У меня никогда не было проблемы с запуском Varnish, будь то SUSE Linux, CentOS, Ubuntu и т. Д. Я думал, что сначала мой собственный файл vcl вызывал проблемы, поэтому я выбрал файл конфигурации по умолчанию, с которым он идет (/ etc /varnish/vcl.conf) просто чтобы начать с основ, но безрезультатно. Произошла точно такая же проблема.
Тогда я решил сделать снимок и скомпилировать Varnish из исходников. С помощью YaST я удалил пакет varnish и все его файлы конфигурации и службы, а затем загрузил последний файл архива TAR (varnish-6.6.0.tgz) прямо из https://varnish-cache.org/. По иронии судьбы после компиляции и создания Varnish таким образом, та же проблема возникает, когда я пытаюсь запустить Varnish.
Как и в случае скомпилированного (v6.6.0) или сервисного пакета (v6.2.1), я получаю следующие ошибки, точно такие же между ними:
В нем описывается Дочерний объект, не отвечающий на интерфейс командной строки, его уничтожение, а затем упоминается ошибка связи интерфейса командной строки (hdr). И, наконец, сигнал о смерти ребенка = 6.
Что больше всего озадачивает, так это то, что при любом способе настройки Varnish он не работает одинаково. Я полагаю, это будет означать, что проблема не в Varnish как таковом, а в конфигурации сервера? Я просмотрел все форумы по Varnish, которые мог найти, и не нашел ничего более специфичного. Я даже попытался запустить его, попробовав разные параметры CLI (например, настройки тайм-аута, задержки пула и т. Д.), Но он все равно этого не сделает. Опять же, это связано с тем, что загружен самый простой / стандартный файл конфигурации и ничего больше.
# Marker to tell the VCL compiler that this VCL has been adapted to the
# new 4.0 format.
vcl 4.0;
# Default backend definition. Set this to point to your content server.
backend default {
.host = "127.0.0.1";
.port = "80";
}
А теперь самое главное ... Я взял еще один сервер (разработка), очистил его и установил SLES 15.2 с нуля, и все, включая Varnish, работает! Так что что-то с обновлением на месте каким-то образом останавливает Varnish. Однако я не могу взять основной (производственный) сервер SLES 15.2 и начать с него таким же образом из-за множества других вещей, которые в настоящее время установлены и настроены на нем.
Я пытаюсь восстановить Varnish и запустить его в текущей обновленной среде, но, похоже, ничего не работает. Кроме того, в журналах Varnish (/var/log/varnish/varnish.log) нет ничего, что могло бы дать мне какую-либо подсказку.
Я не понимаю, что попробовать и куда идти дальше. Я даже попытался запустить Varnish в режиме отладки (-d), а затем попытался заставить ребенка начать таким образом, и это та же самая ошибка.
И, в конце концов, я не могу проверить наличие паники, потому что Varnish вообще не запускается.
Итак, напомним, буквально все, что я сделал, это запустил обновление на месте с SLES 15.1 до 15.2, перезагрузился, когда все было сделано, и теперь все остальные службы запускаются нормально, за исключением Varnish (который отлично работал на 15.1).
ОБНОВЛЕНИЕ №1: я попытался запустить лак без файла vcl и без серверной части (varnishd -b none), но возникла ошибка. Затем я просто заменил none на localhost и снова вернулся к той же ошибке, что и раньше.
ОБНОВЛЕНИЕ № 2: Вот результат выполнения команды strace -f varnishd.
assert()
в коде. Это строка, запускаемая вашей установкой: github.com/varnishcache/varnish-cache/blob/6.6/bin/varnishd/mgt/. Я поговорю с разработчиками Varnish и посмотрю, что они думают. - person Thijs Feryn   schedule 19.05.2021