Проверка зависимостей для обновления/апгрейда Discourse

Как мы наблюдали на протяжении многих лет, обновление или апгрейд иногда не удаётся из-за зависимостей. Например, из-за версии Docker или операционной системы.

Моя идея заключается в том, чтобы Discourse выполнял проверку зависимостей, чтобы убедиться, что базовые требования соблюдены. Если проверка не пройдена, система должна предоставить информацию о том, что может потребоваться, и прервать процесс обновления/апгрейда.

Это поможет сократить время простоя форума, прерывая процесс обновления/апгрейда ядра Discourse до того, как он приведёт к сбою.

Они стараются довольно усердно это сделать. Количество вещей, которые могут пойти не так, довольно велико. В основном, если вы не обновляете свою ОС (и, вероятно, Docker), это ваша вина.

Они пытаются проверить версию Docker, и скрипты, которые я использую, обновляют Docker, если известно, что текущая версия проблемная (вероятно, следует просто всегда обновлять Docker).

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

1 лайк

Обновляет ли deos обновление docker_manager docker?

1 лайк

Я определенно пытаюсь переложить вину. Проблема с самостоятельным размещением, точнее говоря, заключается не столько в понимании операционной системы сервера. Большинство пользователей устанавливают ОС и обычно поддерживают её в актуальном состоянии. Однако часто при использовании LTS-версий они могут не знать или не понимать, как обновлять саму ОС. Особенно если они привыкли к rolling-релизам.

Например, в компании, которой я помогаю, после длительного отсутствия обновлений заметили доступное обновление. Поэтому они обновили Docker через веб-интерфейс. Это позволило им затем обновить Discourse.

Из-за того, что Ubuntu LTS была недостаточно новой, обновление Docker не соответствовало минимальным требованиям. Веб-интерфейс всё же разрешил попытку обновления, которое, разумеется, не удалось и привело к падению сайта.

Затем они попытались выполнить пересборку через командную строку, что также не удалось из-за несоответствия минимальным требованиям.

Если бы веб-интерфейс при обновлении определял, что версия Docker не соответствует минимальным требованиям, он мог бы прервать процесс обновления, уведомив о неудовлетворённой зависимости, не допуская падения сайта.

Я бегло осмотрел ситуацию. Похоже, что на сервере запущены и другие службы. Я порекомендовал им попросить своего специалиста изучить возможность обновления LTS до более новой версии. Я не хотел пытаться обновлять ОС сам, чтобы не сломать другие работающие на сервере приложения.

Есть ли простой способ перезапустить контейнер до попытки пересборки через веб и командную строку?

Я попробовал ./launcher start app,

но это не сработало.

Ещё один момент. Из-за того, что сайт Discourse упал, может ли помочь запуск нового сервера с использованием rsync? У них используется стабильная версия вместо рекомендованной с пометкой «тесты пройдены».

Если они запустят ‘do-release-upgrade’ и вручную обновят Docker, поможет ли это обновить PostgreSQL?

Это будет в рамках поддерживаемой версии Ubuntu LTS. Но только версия(и), поддерживаемые в рамках LTS. В данном случае их LTS версия вышла из поддержки. Поэтому она не поддерживает минимальную версию Docker.

Версии Ubuntu LTS, если не ошибаюсь, получают обновления в течение 4 лет.

1 лайк

Не те люди, с которыми я работаю. Они не обновляют систему, даже когда я говорю им, что она устарела и больше не поддерживается.

Я почти уверен, что процессы, работающие внутри контейнера, не могут определить, какая версия Docker запущена под ними.

Возможно, это всё же возможно. Похоже, что изнутри контейнера можно получить информацию о запущенной версии.

https://docs.docker.com/engine/api/v1.30/#operation/SystemVersion

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

Обычно это работает. Исключение — если база данных уже была мигрирована.

Если операционная система устарела, я обычно считаю проще и безопаснее перенести всё на новую виртуальную машину. В идеале это нужно сделать, пока старый сервер ещё работает. См. Перенос сайта Discourse на другой VPS с помощью rsync.

Если у вас есть резервная копия, вы можете пропустить копирование базы данных и её обновление — просто восстановите её на новой базе данных.

1 лайк

Вот почему я сказал «обновить». В случае прекращения поддержки требуется обновление ОС. Но я согласен с вами: есть множество людей, которые плохо следуют инструкциям. :wink:

Когда меня назначили администратором компании, в которой я помогаю бесплатно, :woman_facepalming:

Я предупреждал их более месяца, что форум в какой-то момент упадёт, так как у них не хватает места для выполнения rebuild app. У них был сервер минимального размера (семь лет назад). Если память мне не изменяет, там было всего 25 ГБ места. Конечно, они не послушали. В итоге они заплатили кому-то здесь, чтобы перенести форум на новый сервер. Простой составил около двух недель, возможно, даже больше.

Это определённо было бы здорово, если удастся заставить это работать. Для таких людей, как вы и я, которые здесь постоянно находятся, мы стараемся держать себя в актуальном состоянии, но многие другие посещают форум только после возникновения проблем или ищут дополнения и другие менее серьёзные вопросы поддержки.

Хорошо, я передам им эту информацию. Однако я не знаю, насколько старая у них резервная копия. Поэтому, полагаю, в их случае нужно будет рассмотреть rsync или обновление ОС.

На моём личном сервере, который приближался к устареванию, я много читал и старался не обновлять через веб-интерфейс или командную строку, пока не почувствовал себя комфортно, используя процедуру rsync. У меня всё равно было несколько мелких проблем, в отладке которых мне помогли вы и сообщество.

:clinking_beer_mugs::smiling_face_with_sunglasses::+1::sparkles:

1 лайк