Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление
printablefalse

Обновление версии ПО ECCM состоит из следующих этапов:

  1. 0. Создание резервной копии данных;
  2. 1. Скачивание и распаковка архива с новой версией файлов запуска ЕССМ;
  3. 2. Остановка старой версии ECCM;
  4. 3. Запуск новой версии ЕССМ.
Примечание

Начиная с версии 2.7, сервисы ЕССМ используют версию PostgreSQL 16.11.

Если обновление до версии 2.10 осуществляется с версии 2.6 (или более ранней), то перед выполнением шагов из данного раздела выполните обновление до версии 2.7 (так как необходимо обновить базу данных PostgreSQL с версии 14.2 до версии 16.11). Подробная инструкция по обновлению БД приведена в разделе "Обновление 2.6 -> 2.7".

Создание резервной копии

Подсказка

Для возможности отката к предыдущей версии перед началом обновления рекомендуем создать резервную копию данных. В случае если ECCM установлен на сервере с использованием виртуализации, следует сделать Snapshot системы. В ином случае — создать резервную копию базы данных eccm средствами PostgreSQL. Подробная инструкция по созданию резервной копии базы данных приведена в разделе "Резервное копирование базы данных ЕССМ".

Получение и распаковка архива

Подсказка

Для offline-установки воспользуйтесь инструкцией по загрузке установочных файлов и установке образов проекта, приведенной в разделе "Offline-установка ЕССМ"

Перед установкой новой версии ЕССМ необходимо предварительно скачать архив с файлами системы. Файлы, необходимые для запуска проекта, распространяются в виде архива .tar.gz. Их можно получить с общедоступного облака.

Предупреждение

При обновлении до любой более новой версии (в том числе патча 2.10.x) получите новый установочный архив с помощью команды ниже. Запуск на старой версии не допускается, т. к. скрипт compose-tools.sh и конфигурационные файлы могут изменяться между патчами.

Загрузите архив на сервер и распакуйте его. Рекомендуется распаковывать архив в заранее созданную отдельную директорию:

Блок кода
wget "https://cloud.eltex-co.ru/index.php/s/P8xDfmyo3XyEs0g/download?path=%2F&files=eccm-2.10.tar.gz" -O eccm-2.10.tar.gz
[ ! -d eccm ] && mkdir eccm
sudo tar -zxvf eccm-2.10.tar.gz -C eccm/

Scroll Pagebreak

Подсказка

Для удобства работы рекомендуется предварительно разместить файлы для запуска новой версии в соседнюю директорию от старой, например:

Без форматирования
$ tree -L 2 --dirsfirst
.
├── 2.9
│   ├── backup
|   ├── eccm
│   ├── keepalived
│   ├── peeper
│   ├── postgres
│   ├── root-ca-generator
│   ├── script-libs
│   ├── witness
│   ├── README.md
│   ├── .env.cluster
│   ├── args-compose-tools.log
│   ├── compose-tools.sh
│   ├── generate-cert.sh
│   └── technical_support.sh
└── 2.10
    ├── backup
    ├── eccm
    ├── keepalived
    ├── peeper
    ├── postgres
    ├── root-ca-generator
    ├── script-libs
    ├── witness
    ├── README.md
    ├── .env.cluster
    ├── args-compose-tools.log
    ├── compose-tools.sh
    ├── generate-cert.sh
    ├── technical_support.sh
    └── update_password.sh



Примечание

В случае многохостовой установки скачайте и распакуйте архив и на сервер с ЕССМ, и на сервер с базой данных.

Примечание

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

Остановка старой версии ECCM

Остановка сервисов ЕССМ при однохостовой установке

Когда ECCM запущен на одном хосте (ЕССМ и база данных находятся на одном сервере), для остановки старой версии ЕССМ и удаления контейнеров выполните команду из директории с файлами запуска старой версии ECCM:

Блок кода
cd <путь до каталога с файлами запуска ECCM 2.9>
sudo ./compose-tools.sh --stop

Scroll Pagebreak

Остановка сервисов ЕССМ при многохостовой установке

Когда ECCM запущен на нескольких хостах (ЕССМ на одном сервере, база данных — на другом), для остановки старой версии ЕССМ и удаления контейнеров выполните на каждом хосте команды, приведенные ниже.

Блок кода
cd <путь до каталога с файлами запуска ECCM 2.9>
sudo ./compose-tools.sh --stop --delete-containers

Остановка сервисов ЕССМ в отказоустойчивой системе

Раскрыть
titleОстановка сервисов ЕССМ в отказоустойчивой системе с БД на отдельном сервере

Когда ЕССМ запущен в отказоустойчивой системе с БД на отдельном сервере, для остановки старой версии ЕССМ сначала остановите кластер приложений. Перейдите на сервера Master-app и Slave-app и выполните команды, приведенные ниже.

Блок кода
cd <путь до каталога с файлами запуска ECCM 2.9>
sudo ./compose-tools.sh --stop --delete-containers

 Остановка Master-db и Slave-db должна быть произведена в определенном порядке в соответствии с ролью узла БД. Для того чтобы узнать текущую роль узла, перейдите на сервер Witness и выполните следующие команды:

Блок кода
titleWitness-node
cd <путь до каталога с файлами запуска ECCM 2.10>/witness/scripts
bash check-postgres-cluster.sh

Вывод скрипта отобразит роль сервера в БД, а также его статус: 

Блок кода
titleWitness-node
Состояние PostgreSQL-кластера по данным witness:
Primary:
  - master (100.110.3.203), статус: * running
Standby:
  - slave (100.110.3.204), статус: running, upstream: master
Witness:
  - witness (100.110.3.67), статус: * running, upstream: master

 Для корректного обновления обязательным условием является роль Standby для сервера Slave.

Раскрыть
titleСмена роли БД в отказоустойчивой системе

Если вывод скрипта отображения ролей сервера в БД соответствует следующему:

Блок кода
titleWitness-node
Состояние PostgreSQL-кластера по данным witness:
Primary:
  - slave (100.110.3.204), статус: * running
Standby:
  - master (100.110.3.203), статус: running, upstream: slave
Witness:
  - witness (100.110.3.67), статус: * running, upstream: slave

 То необходимо принудительно сменить мастерство БД на узлах системы. Перейдите на сервер Slave-db и принудительно остановите контейнер:

Блок кода
titleSlave-db
docker stop eccm-postgres

 Далее перейдите на сервер Witness и выполните следующие команды:

Блок кода
titleWitness-node
cd <путь до каталога с файлами запуска ECCM 2.10>/witness/scripts
bash check-postgres-cluster.sh

 Дождитесь следующего вывода:

Блок кода
titleWitness-node
Состояние PostgreSQL-кластера по данным witness:
Primary:
  - master (100.110.3.203), статус: * running
  - slave (100.110.3.204), статус: - failed, upstream: ?
Standby:
  - не найден
Witness:
  - witness (100.110.3.67), статус: * running, upstream: master
Обнаружен split brain, witness указывает на мастерство: 100.110.3.203

 После того как Master-db получит роль Primary, вернитесь на сервер Slave и возобновите работу контейнера:

Блок кода
titleSlave-db
docker start eccm-postgres

 На сервере Witness-узла убедитесь, что роли БД распределились в соответствии со следующим примером:

Блок кода
titleWitness-node
Состояние PostgreSQL-кластера по данным witness:
Primary:
  - master (100.110.3.203), статус: * running
Standby:
  - slave (100.110.3.204), статус: running, upstream: master
Witness:
  - witness (100.110.3.67), статус: * running, upstream: master

Далее произведите остановку БД с ролью Standby при помощи следующей команды:

Блок кода
cd <путь до каталога с файлами запуска ECCM 2.9>
sudo ./compose-tools.sh --stop --delete-containers

После полной остановки старой версии ЕССМ на сервере Standby при помощи аналогичной команды одновременно остановите оставшиеся узлы системы.

Предупреждение

При нарушении последовательности остановки узлов система не запустится. 

 Также произведите остановку утилиты Keepalived на узлах Master и Slave при помощи следующей команды:

Блок кода
sudo systemctl stop keepalived

Для отказоустойчивой системы после успешной остановки старой версии ЕССМ на каждом узле необходимо произвести копирование сертификатов в директорию с новой версией:

Блок кода
cd <путь до каталога с файлами запуска ЕССМ 2.9>
sudo cp cluster-cert/* <путь до каталога с файлами запуска ЕССМ 2.10>/cluster-cert/

В версии ЕССМ 2.10 конфигурационный файл .env.cluster был изменен. Повторно заполните данный файл, а также произведите изменение значения параметра RECONFIGURE_CLUSTER на true. Для синхронизации конфигурационных файлов между узлами воспользуйтесь инструкцией в разделе "Запуск ЕССМ в отказоустойчивой системе".

Предупреждение

Изменение параметра RECONFIGURE_CLUSTER инициализирует принудительное назначение ролей. При отсутствии изменения данного параметра узел Slave не будет обновлен и система может не запуститься.

Остановка старой версии ЕССМ в отказоустойчивой системе должна быть произведена в определенном порядке в соответствии с ролью узла БД. Для того чтобы узнать текущую роль узла, перейдите на сервер Witness и выполните следующие команды:

Блок кода
titleWitness-node
cd <путь до каталога с файлами запуска ECCM 2.10>/witness/scripts
bash check-postgres-cluster.sh

Вывод скрипта отобразит роль сервера в БД, а также его статус:

Блок кода
titleWitness-node
Состояние PostgreSQL-кластера по данным witness:
Primary:
  - master (100.110.3.139), статус: * running
Standby:
  - slave (100.110.2.145), статус: running, upstream: master
Witness:
  - witness (100.110.3.67), статус: * running, upstream: master

Для корректного обновления обязательным условием является роль Standby для сервера Slave.

Раскрыть
titleСмена роли БД в отказоустойчивой системе

Если вывод скрипта отображения ролей сервера в БД соответствует следующему:

Блок кода
titleWitness-node
Состояние PostgreSQL-кластера по данным witness:
Primary:
  - slave (100.110.2.145), статус: * running
Standby:
  - master (100.110.3.139), статус: running, upstream: slave
Witness:
  - witness (100.110.3.67), статус: * running, upstream: slave

 То необходимо принудительно сменить мастерство БД на узлах системы. Перейдите на сервер Slave-узла и принудительно остановите контейнер:

Блок кода
titleSlave-node
docker stop eccm-postgres

 Далее перейдите на сервер Witness и выполните следующие команды:

Блок кода
titleWitness-node
cd <путь до каталога с файлами запуска ECCM 2.10>/witness/scripts
bash check-postgres-cluster.sh

 Дождитесь следующего вывода:

Блок кода
titleWitness-node
Состояние PostgreSQL-кластера по данным witness:
Primary:
  - master (100.110.3.139), статус: * running
  - slave (100.110.2.145), статус: - failed, upstream: ?
Standby:
  - не найден
Witness:
  - witness (100.110.3.67), статус: * running, upstream: master
Обнаружен split brain, witness указывает на мастерство: 100.110.3.139

 После того, как Master-узел получит роль Primary, вернитесь на сервер Slave и возобновите работу контейнера:

Блок кода
titleSlave-node
docker start eccm-postgres

 На сервере Witness-узла убедитесь, что роли БД распределились в соответствии со следующим примером:

Блок кода
titleWitness-node
Состояние PostgreSQL-кластера по данным witness:
Primary:
  - master (100.110.3.139), статус: * running
Standby:
  - slave (100.110.2.145), статус: running, upstream: master
Witness:
  - witness (100.110.3.67), статус: * running, upstream: master

Далее произведите остановку узла с ролью Standby при помощи следующей команды:

Блок кода
cd <путь до каталога с файлами запуска ECCM 2.9>
sudo ./compose-tools.sh --stop --delete-containers

После полной остановки старой версии ЕССМ на сервере Standby при помощи аналогичной команды одновременно остановите оставшиеся узлы системы.

Предупреждение

При нарушении последовательности остановки узлов система не запустится. 

Также произведите остановку утилиты Keepalived на узлах Master и Slave при помощи следующей команды:

Блок кода
sudo systemctl stop keepalived

Для отказоустойчивой системы после успешной остановки старой версии ЕССМ на каждом узле необходимо произвести копирование сертификатов в директорию с новой версией:

Блок кода
cd <путь до каталога с файлами запуска ЕССМ 2.9>
sudo cp cluster-cert/* <путь до каталога с файлами запуска ЕССМ 2.10>/cluster-cert/

В версии ЕССМ 2.10 конфигурационный файл .env.cluster был изменен. Повторно заполните данный файл, а также произведите изменение значения параметра RECONFIGURE_CLUSTER на true. Для синхронизации конфигурационных файлов между узлами воспользуйтесь инструкцией в разделе "Запуск ЕССМ в отказоустойчивой системе".

Предупреждение

Изменение параметра RECONFIGURE_CLUSTER инициализирует принудительное назначение ролей. При отсутствии изменения данного параметра узел Slave не будет обновлен и система может не запуститься.

Запуск новой версии ЕССМ

Подсказка

Для offline-установки воспользуйтесь инструкцией, приведенной в разделе "Инструкция по установке и запуску".

Перенос паролей из предыдущей версии

Перед первым запуском ECCM 2.10 перенесите пользовательские пароли из директории предыдущей версии.

Если в ECCM 2.9 использовался файл .env.personal, скопируйте его в директорию с файлами запуска ECCM 2.10:

Блок кода
languagebash
titleПеренос файла .env.personal
sudo cp <путь до каталога с файлами запуска ECCM 2.9>/.env.personal <путь до каталога с файлами запуска ECCM 2.10>/

Если пароли задавались правкой файла eccm/.env, перенесите значения переменных, содержащих PASSWORD, в файл .env.personal новой версии.

При многохостовой и отказоустойчивой установке выполните перенос на каждом сервере. Если не перенести пароли, при первом запуске ECCM 2.10 они примут значения по умолчанию, и скрипт предложит задать их заново.

Запуск новой версии ЕССМ при однохостовой установке

Для однохостовой системы после успешной остановки старой версии ЕССМ перейдите в директорию, в которую был распакован архив с новой версией ЕССМ, и выполните команду:

Блок кода
cd <путь до каталога с файлами запуска ECCM 2.10>
sudo ./compose-tools.sh --pull --start <IP ADDRESS>
Подсказка

Перед запуском самих контейнеров скрипт проверяет наличие файла .env.personal и в случае его отсутствия предлагает создать его в дополнительном диалоге. При стандартных паролях система также предложит изменить их: вручную или с помощью автоматической генерации. После изменения паролей проект продолжит запуск. Пароли сервисов при обновлении автоматически заменяются со старых на новые из файла .env.personal.

Запуск новой версии ЕССМ при многохостовой установке

Если система была установлена на нескольких хостах, для запуска новой версии ECCM выполните команды, приведенные ниже.

На сервере с базой данных:

Блок кода
cd <путь до каталога с файлами запуска ECCM 2.10>
sudo ./compose-tools.sh --pull --start <IP ADDRESS DATABASE> --database-only
Подсказка

Перед запуском самих контейнеров скрипт проверяет наличие файла .env.personal и в случае его отсутствия предлагает создать его в дополнительном диалоге. При стандартных паролях система также предложит изменить их: вручную или с помощью автоматической генерации. После изменения паролей проект продолжит запуск. Пароли сервисов при обновлении автоматически заменяются со старых на новые из файла .env.personal.

На сервере с ЕССМ:

Для корректной работы конфигурационный файл с паролями .env.personal должен быть идентичен между серверами БД и ECCM. Для синхронизации файла конфигурации между серверами можно воспользоваться утилитой rsync. Для передачи  .env.personal используйте следующую команду после успешного запуска сервера с БД:

Блок кода
languagebash
sudo rsync -av --delete --rsync-path="sudo rsync" <полный_путь_до_директории_eccm>/.env.personal <имя_пользователя_сервера>@<IP-адрес_сервера_назначения>:<полный_путь_до_директории_eccm>

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

Блок кода
cd <путь до каталога с файлами запуска ECCM 2.10>
sudo ./compose-tools.sh --pull --start <IP ADDRESS> --database-host <IP ADDRESS DATABASE> --database-port <PORT DATABASE>

Запуск новой версии ЕССМ в отказоустойчивой системе

Для запуска новой версии ЕССМ в отказоустойчивой системе при стандартной схеме необходимо произвести запуск узла мастера:

Блок кода
titleMaster: eccm/2.10/
sudo ./compose-tools.sh --pull --start <IP ADDRESS> --cluster master
Подсказка

Перед запуском самих контейнеров скрипт проверяет наличие файла .env.personal и в случае его отсутствия предлагает создать его в дополнительном диалоге. При стандартных паролях система также предложит изменить их: вручную или с помощью автоматической генерации. После изменения паролей проект продолжит запуск. Пароли сервисов при обновлении автоматически заменяются со старых на новые из файла .env.personal.

Для корректной работы конфигурационный файл с паролями .env.personal должен быть идентичен между всеми узлами. Для синхронизации файла конфигурации между серверами можно воспользоваться утилитой rsync. Для передачи  .env.personal используйте следующую команду после успешного запуска Master-узла:

Блок кода
languagebash
sudo rsync -av --delete --rsync-path="sudo rsync" <полный_путь_до_директории_eccm>/.env.personal <имя_пользователя_сервера>@<IP-адрес_сервера_назначения>:<полный_путь_до_директории_eccm>

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

После того как мастер будет инициализирован и готов к работе, произведите запуск остальных узлов:

Блок кода
titleSlave: eccm/2.10/
sudo ./compose-tools.sh --pull --start <IP ADDRESS> --cluster slave
Блок кода
titleWitness: eccm/2.10/
sudo ./compose-tools.sh --pull --start <IP ADDRESS> --cluster witness

Восстановите работу утилиты Keepalived на узлах Master и Slave при помощи следующей команды:

Блок кода
sudo systemctl start keepalived
Подсказка

Для запуска ЕССМ в отказоустойчивой системе при запуске БД на отдельных серверах воспользуйтесь инструкцией в разделе "Запуск ЕССМ в отказоустойчивой системе".

После успешного запуска установите значение переменной RECONFIGURE_CLUSTER из конфигурационного файла .env.cluster на значение false.

При необходимости измените пароли сервисов с помощью скрипта update_password.sh, находящегося в директории с файлами запуска ECCM 2.10. Подробности приведены в разделе "Настройка безопасности ECCM".