Как деплоить/инсталить пакет который не должен прерывать режим работы ?

Автор kred, 29 ноября 2011, 18:16:19

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

kred

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

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

Кто что может предложить ? 

SeHELLioN

Открыть содержимое (спойлер)
Вообще идея то так интересна....но не сталкивался....
Я помню давно была статья про наложение патчей на работающее ядро без перезагрузки, может и не то, что нужно, но возможно и родиться какая нибудь идея... :-\
[свернуть]
Asus m5a97+Amd fx-8350+4x4GB DDR3 1600MGz+asus gtx670 DCII (перешита в top)
Debian stable

dimas000

то ли в xdm, то ли в gdm видел такую фичу. по-моему, в xdm все-таки. там есть в каком-то конфиге опция, при виде которой postinst-скрипт при обновлении пакета не перезапущает демон, чтоб не сыпались запущенные сеансы юзеров. то есть, бинарник-то на диске обновляется, а работать продолжает старый, загруженный в память. ну а при следующем запуске демона уже, соответственно, запускается новый бинарник.
в принципе, осуществить несложно. в postinst пытаемся останавливать демон, но при этом как-нибудь даем init-скрипту знать, что действие stop вызывает именно postinst-скрипт (будь то запуск инит-скрипта с параметром каким, создание пустого файла или еще что). а в stop делаем простую проверку - если установлена в true нужная опция (а-ля "NO_RESTART_ON_UPDATE" или как хошь назови), и при этом остановить демон пытается именно postinst-скрипт (а не просто при выключении или по команде админа) - предпринимаем соответствующие действия. либо ничего, либо реализуем далее необходимое - например, рестарт после закрытия последней клиентской сессии.