Преминете към основното съдържание

Надграждания

Процедура​

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

Скриптът:

  1. прави резервно копие;
  2. задава RMM_VERSION в .env и изтегля образите (пропуска се при RMM_SKIP_PULL=1, както прави работният процес за разгръщане);
  3. изпълнява migrate up;
  4. стартира толкова нови бекенди, колкото работят в момента, до старите;
  5. спира старите, след като новите са в изправно състояние (агентите се свързват отново към новите);
  6. изпълнява миграциите и рестартира Entrosity Hub;
  7. създава наново контейнера на портала.

Учение по надграждане (два бекенда, заявка на всеки 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):

  1. отстранете причината;
  2. docker compose -f docker-compose.prod.yml --env-file .env run --rm migrate force <N-1>;
  3. изпълнете upgrade.sh отново.

Връщане към по-стара версия​

В продукционна среда миграциите не се връщат обратно:

  1. възстановете резервното копие, направено от upgrade.sh, с restore.sh, като RMM_VERSION е зададена на предишната версия;
  2. приложете отново .env.bak, ако надграждането е променило .env.

migrate down съществува само за разработка.

Съвместимост на агентите и конекторите​

СървърАгенти / конектори
1.x1.0.0 и по-нови (протокол /v1; само добавящи промени)
  • Агентите и конекторите се обновяват сами (Издания на агента).
  • RMM_MIN_AGENT_VERSION кара всичко по-старо да получи най-новото издание веднага. Задайте я след корекция на сигурността или преди издание на сървъра да прекрати поддръжката на стари агенти.
  • Сървърът никога не отказва агент заради версията му (това би прекъснало пътя му за обновяване); агентите, които не могат да се обновят, продължават да работят, докато сървърът поддържа версията на техния протокол.