...
| Подсказка |
|---|
Для возможности отката к предыдущей версии перед началом обновления рекомендуем создать резервную копию данных. В случае если ECCM установлен на сервере с использованием виртуализации, следует сделать Snapshot системы. В ином случае — создать резервную копию базы данных eccm средствами PostgreSQL. Подробная инструкция по созданию резервной копии базы данных приведена в разделе "Резервное копирование базы данных ЕССМ". |
| Блок кода |
|---|
| title | Бэкап текущей директории ECCM |
|---|
[ -d eccm/2.9 ] && sudo cp eccm/2.9 "eccm/eccm-backup-2.9-$(date +%Y%m%d)" #создание бэкапа текущей директории ECCM, если она существует |
Получение и распаковка архива
...
| Раскрыть |
|---|
| title | Остановка сервисов ЕССМ в отказоустойчивой системе с БД на отдельном сервере |
|---|
|
Когда ЕССМ запущен в отказоустойчивой системе с БД на отдельном сервере, для остановки старой версии ЕССМ сначала остановите кластер приложений. Перейдите на сервера Master-app и Slave-app и выполните команды, приведенные ниже. | Блок кода |
|---|
cd <путь до каталога с файлами запуска ECCM 2.8>
sudo ./compose-tools.sh --stop --delete-containers |
Остановка Master-db и Slave-db должна быть произведена в определенном порядке в соответствии с ролью узла БД. Для того чтобы узнать текущую роль узла, перейдите на сервер Witness и выполните следующие команды: | Блок кода |
|---|
| cd <путь до каталога с файлами запуска ECCM 2.9>/witness/scripts
bash check-postgres-cluster.sh |
Вывод скрипта отобразит роль сервера в БД, а также его статус: | Блок кода |
|---|
| Состояние 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 | Смена роли БД в отказоустойчивой системе |
|---|
| Если вывод скрипта отображения ролей сервера в БД соответствует следующему: | Блок кода |
|---|
| Состояние 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 и принудительно остановите контейнер: | Блок кода |
|---|
| docker stop eccm-postgres |
Далее перейдите на сервер Witness и выполните следующие команды: | Блок кода |
|---|
| cd <путь до каталога с файлами запуска ECCM 2.9>/witness/scripts
bash check-postgres-cluster.sh |
Дождитесь следующего вывода: | Блок кода |
|---|
| Состояние 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 и возобновите работу контейнера: | Блок кода |
|---|
| docker start eccm-postgres |
На сервере Witness-узла убедитесь, что роли БД распределились в соответствии со следующим примером: | Блок кода |
|---|
| Состояние 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.8>
sudo ./compose-tools.sh --stop --delete-containers |
После полной остановки старой версии ЕССМ на сервере Standby при помощи аналогичной команды одновременно остановите оставшиеся узлы системы. | Предупреждение |
|---|
При нарушении последовательности остановки узлов система не запустится. |
Также произведите остановку утилиты Keepalived на узлах Master и Slave при помощи следующей команды: | Блок кода |
|---|
sudo systemctl stop keepalived |
Для отказоустойчивой системы после успешной остановки старой версии ЕССМ на каждом узле необходимо произвести копирование сертификатов в директорию с новой версией: | Блок кода |
|---|
cd <путь до каталога с файлами запуска ЕССМ 2.8>
sudo cp cluster-cert/* <путь до каталога с файлами запуска ЕССМ 2.9>/cluster-cert/ |
В версии ЕССМ 2.9 конфигурационный файл .env.cluster был изменен. Повторно заполните данный файл, а также произведите изменение значения параметра RECONFIGURE_CLUSTER на true. Для синхронизации конфигурационных файлов между узлами воспользуйтесь инструкцией в разделе "Запуск ЕССМ в отказоустойчивой системе". | Предупреждение |
|---|
Изменение параметра RECONFIGURE_CLUSTER инициализирует принудительное назначение ролей. При отсутствии изменения данного параметра узел Slave не будет обновлен и система может не запуститься. |
|
...
| Раскрыть |
|---|
| title | Смена роли БД в отказоустойчивой системе |
|---|
|
Если вывод скрипта отображения ролей сервера в БД соответствует следующему: | Блок кода |
|---|
| Состояние 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-узла и принудительно остановите контейнер: | Блок кода |
|---|
| docker stop eccm-postgres |
Далее перейдите на сервер Witness и выполните следующие команды: | Блок кода |
|---|
| cd <путь до каталога с файлами запуска ECCM 2.9>/witness/scripts
bash check-postgres-cluster.sh |
Дождитесь следующего вывода: | Блок кода |
|---|
| Состояние 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 и возобновите работу контейнера: | Блок кода |
|---|
| docker start eccm-postgres |
На сервере Witness-узла убедитесь, что роли БД распределились в соответствии со следующим примером: | Блок кода |
|---|
| Состояние 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 |
|
...
В версии ЕССМ 2.8 конфигурационный файл .env.cluster был изменен. Повторно заполните данный файл, а также произведите изменение значения параметра RECONFIGURE_CLUSTER на true. Для синхронизации конфигурационных файлов между узлами воспользуйтесь инструкцией в разделе "Запуск ЕССМ в отказоустойчивой системе".
| Предупреждение |
|---|
Изменение параметра RECONFIGURE_CLUSTER инициализирует принудительное назначение ролей. При отсутствии изменения данного параметра узел Slave не будет обновлен и система может не запуститься. |
...
При запуске будет предложено создать файл .env.personal при его отсутствии. После подтверждения будет предложено добавить ключ шифрования в созданный файл — подтвердите данное действие. Подробнее о файле Описание файла и переменной можно узнать на странице приведено в разделе "Инструкция по установке и запуску".
Запуск новой версии ЕССМ при многохостовой установке
...
Подтвердите создание файла .env.personal и создание ключа шифрования. Подробнее о файле Описание файла и переменной можно узнать на странице приведено в разделе "Инструкция по установке и запуску".
Синхронизируйте файл между сервером с базой данных и сервером с ECCM:
...
Во время запуска Master-узла необходимо подтвердить создание файла .env.personal и переменной ключа шифрования. Подробнее о файле Описание файла и переменной можно узнать на странице приведено в разделе "Инструкция по установке и запуску".
После того как мастер будет инициализирован и готов к работе, синхронизируйте .env.personal между узлами:
...