Последовательное обновление приложения распределенного сервера

Учитывая

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

Представьте, что для приложения доступен пакет обновления SW. Обновление включает изменения как в приложении, так и в схеме Db.

Проблема

Администратор начинает установку обновления на первом сервере приложений. В результате сервер приложений и схема Db будут обновлены до новой версии.

После запуска обновления Db оставшиеся серверы приложений должны быть каким-то образом уведомлены, что они должны прекратить использование Db, пока они не получат обновление. Интересно, есть ли известные решения для этого?

Используемая технология

  • Серверы приложений: демоны Linux, работающие за lighttpd-1.4.35 на Ubuntu 16
  • Db: MySQL-5.7 поверх Ubuntu 16
  • Загрузить балансировщик: еще не определился (предложения приветствуются)
0
задан 30 March 2017 в 17:28
1 ответ

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

Конечно, самое безопасное решение - полностью остановить приложение, внести необходимые изменения в приложение и БД и снова запустить приложение. Это может быть или не выполнимо в соответствии с вашими требованиями.

Если время простоя не требуется или не требуется минимальное время простоя, вы должны предоставить две работающие независимые копии одновременно. Выполните обновление одной копии (приложение + БД + любые другие зависимости), сохраняя доступ пользователей ко второй копии. Обновите вторую копию после запуска первой копии и перенаправления пользователей на первую обновленную копию.

2
ответ дан 4 December 2019 в 13:34

Теги

Похожие вопросы