3. Техническое описание МУК версии 10.2


МУК (Менеджер Управления Конфигурацией) - это средство, позволяющее пользователю обновлять программное обеспечение SetRetail10? посредством удобного визуального интерфейса.

Обновление до версий SetRetail 10.2.ХХ.ХХ описано в статье Стратегия обновления с версии 10.0.1.52 на версию 10.2.5.0

SetID


Внимание!

Без уникального идентификатора SetId дальнейшее обновление на версии 10.2.30.0 и больше, невозможна!

В версии 10.2.30.0 требуется ввод SetId. Подробнее про SetId в статье (Уникальный идентификатор SetId)

После обновления на версию 10.2.30.0 можно продолжить пользоваться на менеджером управления конфигурацией для обновления на более новые, кликнув по ссылке Продолжить без SetID



Возможности

    • выполнение SH/BAT скрипты
    • копирование файлов
    • выполнение *.sql скриптов
    • обновление *.xml файлов
    • обновление *.properties файлы
    • выполнение исполняемых *.jar файлов

Кассовый

Кассовый МУК состоит из 2-х частей:

    • джарки мониторинга в самой кассе (crystal-cash/modules/ccm/*.jar
    • обновлятор, который ни от кого не зависит (crystal-conf/updater.jar). 

Кассовая часть постоянно опрашивает (раз в минуту) сервер на предмет наличия патчей. При наличии патчей, сервер в некоторый момент отвечает ей и передает этот список, касса начинает работу. Далее следует алгоритм работы по статусам:

UPGRADE_PLANING - обновление запланировано, проставляется на сервере для кассы и держится, пока касса в следующий раз не обратилась за списком патчей
UPGRADE_DOWNLOADING - проставляется кассовой частью Мука пока все патчи скачиваются на кассу (делается это автоматическо при работающей кассе),
UNZIP_FILES - разархивирование патчей
UPGRADE_WAIT_FOR_REBOOT - касса скачала все необходимое и приготовилась обновляться, для этого необходим рестарт
CCM_UPDATE_RESTART, - алгоритм работы МУКа таков, что если в любом патче списка обновления есть новый МУК, то обновлять будем именно им, для этого новый МУК подкладывается взамен старого и необходим технический рестарт обновления, вот этот статус именно для этого 
    1. CHECK_PERMISSIONS - первым делом проверим папку, в которой мы будем работать на предмет, а есть ли у нас права на запись? Без этого никак! Столько уже раз нарывались
  1. BACKUP - делаем полный бекап всего (файлы в папке кассы, МУК, база). Тарим и кладем в crystal-conf/backups. если бекап создался - то он рабочий 100%. Храним последние 10 бекапов, чтоб 
    === если произошла ошибка до этого момента, то отката не будет, т.к. собственно с кассой еще ничего не сделали, при ошибке в последующих шагах, будет выполнен быстрый откат ===
    APPLY_PATCH - начали выполнятся патчи, с этого момента мы уже вмешиваемся в кассу
    TEST_START - после того как все патчи успешно завершились запускаем кассу и убеждаемся, что она поднялась (проставляем этот статус, когда кассовая часть поднимется вместе с кассой, она проставит IN_WORK, если поднимется). Таким образом первая проверка, что касса хотя бы поднимается после обновления
    FAST_REVERT - если в процессе обновления произошли ошибки или тестовый запуск неудался, то ставим этот статус и начинаем быстрый откат - просто восстановим все из бекапа (базу, файлы, настройки - все, т.к. еще ничего не успело поменяться)
    UPGRADE_ERROR_WITH_DOWNGRADE - этот статус стоит у кассы в штатном режиме, когда не удалось обновиться, статус выделен в отдельный, чтоб на визуализации была информация о неудачном обновлении, но касса в обычном работоспособном состоянии
    IN_WORK - обычное штатное состояние кассы

    Структура кассового патча (патчи именуются pos[-lenta]_VERSION_VERSION.zip):

    config/             --
    lib/                --  Обычные файлы, которые будут скопированы поверх старых, структура повторяет папку crystal-cash
    modules/            --
    before.sh           -- скрипт, который выполнится до применения патча 
    restore/
        CCM/updater_new.jar         -- новый МУК
        db/cardsBkp.sql             -- новые базы
        cards_U_VERSION_000.sql     -- скрипты наката для БД cards
        cards_R_VERSION_000.sql     -- скрипты отката БД
        cards_U_VERSION_000.xq      -- скрипты наката для xml настроек
        runJar_E_VERSION_000.jar    -- джарка для исполнения
        deleted_files               -- список удаляемых файлов (относительный путь удаляемого файла на отдельной строке)

       

    Никаких настроек в кассовом МУКе больше нет - IP сервера она берет из кассы, а все остальное и не нужно было. 

    Серверный МУК

    Серверный МУК чуть посложней и состоит из 3-х частей:

    • Сервер для всех клиентов, который собственно раздает обновления и работает с визуализацией (acm/mook.jar)
    • Обновлятор сервера. независимая jarка-клиент очень похожая на кассовую (acm/updater.jar)
    • Бин в сервере ServerStartupListener  - служит лишь для того, чтобы как только сервер поднялся - он проверил статус обновления и поменял его (если нужно) с TEST_START на IN_WORK. Так сервер сам решает, что он поднялся

На сервере нет опрашивателя обновлений как в кассе, т.к. сейчас оба сервиса стоят на одной машине и это просто неэффективно. При перетягивании ползунка сервера, mook.jar меняет содержимое файла update.status сервера и перезапускает службу, далее сервер сам себя обновляет по алгоритму, описанному в кассе (у всех клиентов МУКа теперь единый алгоритм обновления)

Структура серверного патча:

standalone/
    configuration/modules/cards/cars/properties --тут может быть или весь файл целиком, или патч к настройкам (name=value, -name=value)
    deployments/Set10.ear        --Обычные файлы, которые будут скопированы поверх старых, структура повторяет папку crystal-cash
before.bat                       -- скрипт, который выполнится до применения патча 
restore/
    CCM/updater_new.jar          -- новый обновлятор МУК
    CCM/mook_new.jar             -- новый сервер MУК
    set_U_VERSION_000.sql        -- скрипты наката для БД set
    set_R_VERSION_000.sql        -- скрипты отката БД
    config_U_VERSION_000.xq      -- скрипты наката для xml настроек
    runJar_E_VERSION_000.jar     -- джарка для исполнения
    deleted_files                -- список удаляемых файлов (относительный путь удаляемого файла на отдельной строке)

 

update.status

Файл, с подобным содержимым:

#Thu Dec 25 16:31:29 MSK 2014
status=UPGRADE_WAIT_FOR_REBOOT
patches=pos_10.2.1.0_10.2.1.1,pos_10.2.1.1_10.2.3.0

Содержит текущий статус клиента и список патчей в обработке. На кассе находится в crystal-conf/update.status, на сервере в acm/update.status