Надграждания
Процедура
deploy/scripts/upgrade.sh 1.1.0 # backup, pull, migrate, rolling restart
deploy/scripts/upgrade.sh 1.1.0 --stop-first # when the release notes say so
Скриптът:
- прави резервно копие;
- задава
RMM_VERSIONв.envи изтегля образите (пропуска се приRMM_SKIP_PULL=1, както прави работният процес за разгръщане); - изпълнява
migrate up; - стартира толкова нови бекенди, колкото работят в момента, до старите;
- спира старите, след като новите са в изправно състояние (агентите се свързват отново към новите);
- изпълнява миграциите и рестартира Entrosity Hub;
- създава наново контейнера на портала.
Учение по надграждане (два бекенда, заявка на всеки 100 ms през цялото време): нито една неуспешна заявка към API по време на фазата на бекендите; прекъсване от около 1 s, докато контейнерът на портала (който терминира TLS) се създаваше наново; общо 16–18 s.
Проверки на схемата
Бекендът отказва да стартира със схема, за която не е изграден, например:
- "database is at version 9, this server needs 10; run
migrate up"; - "… newer than this server" след опит за връщане към по-стара версия.
Миграциите в рамките на минорно издание са само добавящи, така че
старите бекенди продължават да работят по време на последователното
рестартиране. Издание, чиято миграция не е обратно съвместима, посочва това
в бележките си; използвайте --stop-first.
Незавършена миграция
Ако миграция е прекъснала по средата (migration N failed half-way):
- отстранете причината;
docker compose -f docker-compose.prod.yml --env-file .env run --rm migrate force <N-1>;- изпълнете
upgrade.shотново.
Връщане към по-стара версия
В продукционна среда миграциите не се връщат обратно:
- възстановете резервното копие, направено от
upgrade.sh, сrestore.sh, катоRMM_VERSIONе зададена на предишната версия; - приложете отново
.env.bak, ако надграждането е променило.env.
migrate down съществува само за разработка.
Съвместимост на агентите и конекторите
| Сървър | Агенти / конектори |
|---|---|
| 1.x | 1.0.0 и по-нови (протокол /v1; само добавящи промени) |
- Агентите и конекторите се обновяват сами (Издания на агента).
RMM_MIN_AGENT_VERSIONкара всичко по-старо да получи най-новото издание веднага. Задайте я след корекция на сигурността или преди издание на сървъра да прекрати поддръжката на стари агенти.- Сървърът никога не отказва агент заради версията му (това би прекъснало пътя му за обновяване); агентите, които не могат да се обновят, продължават да работят, докато сървърът поддържа версията на техния протокол.