Описание
В версии 1.0 была обновлена версия СУБД PostgreSQL с версии 15 на версию 17!.
Обновление выполняется с версии 0.9. Для обновления с версии ниже потребуется сначала обновиться до версии 0.9, а затем до версии 1.0.
Обновление осуществляется в два основных этапа:
- Подготовка хоста NAICE и хоста для запуска скриптов
- Обновление версии БД и сервисов NAICE
Для обновления в режиме онлайн установки в однохостовом режиме и установки с резервированием потребуется отдельный дополнительный хост с ОС Ubuntu 24 для запуска плейбуков Ansible.
Подготовка хоста для запуска плейбуков Ansible.
Требования к VM на которой выполняется запуск плейбуков Ansible.
Подготовка
Создание резервной копии БД
Перед обновлением необходимо сделать резервную копию БД в соответствие с инструкцией: v1.0_3.8 Создание резервной копии данных БД
Для установки с резервированием.
Переместить полученный архив с резервной копией данных в домашнюю папку пользователя на хосте с NAICE или на другой хост. Это требуется для возможности отката установки после обновления обратно на версию 0.9.
Подготовка хоста для запуска плейбуков Ansible
Установка необходимого дополнительного ПО
Установить пакеты и все необходимые зависимости из официального репозитория Ubuntu соответствующей версии:
sudo apt install sshpass python3-apt ansible -y
Подготовка для однохостовой установки
Заполнение файла конфигурации данными для однохостовой установки
В файле inventory/hosts.yml указать:
common:
hosts:
# Хост для выполнения stand-alone установки NAICE
common_host:
ansible_host: <IP-адрес хоста для NAICE>
ansible_port: 22
ansible_user: <логин пользователя хоста, под которым выполняется запуск плейбука>
ansible_ssh_pass: <пароль пользователя хоста, под которым выполняется запуск плейбука>
ansible_become_password: <пароль для повышения привилегий (sudo) пользователя хоста, под которым выполняется запуск плейбука>
Подготовка для установки с резервированием
Заполнение файла конфигурации данными хостов кластера
В файле inventory/hosts-cluster.yml указать:
- Для обновления СУБД PostgreSQL необходимо задать адреса в разделе postgres-cluster:
# Группа хостов для установки postgres-cluster (primary + standby)
postgres-cluster:
hosts:
node_primary:
ansible_host: <IP-адрес хоста для node-1 PostgreSQL>
ansible_port: 22
ansible_user: <логин пользователя>
ansible_ssh_pass: <пароль пользователя>
ansible_become_password: <пароль для повышения привилегий (sudo)>
forwarded_postgresql_port: 5432
forwarded_ssh_port: 15432
node_standby:
ansible_host: <IP-адрес хоста для node-2 PostgreSQL>
ansible_port: 22
ansible_user: <логин пользователя>
ansible_ssh_pass: <пароль пользователя>
ansible_become_password: <пароль для повышения привилегий (sudo)>
forwarded_postgresql_port: 5432
forwarded_ssh_port: 15432
- Для обновления сервисов NAICE с резервированием необходимо задать адреса в разделе reservation:
# Группа хостов для установки NAICE с резервированием
reservation:
hosts:
master_host:
ansible_host: <IP-адрес хоста 1 для NAICE>
ansible_port: 22
ansible_user: <логин пользователя>
ansible_ssh_pass: <пароль пользователя>
ansible_become_password: <пароль для повышения привилегий (sudo)>
keepalived_interface: <наименование интерфейса, на котором будет настроен VIP-адрес, например eth0>
backup_host:
ansible_host: <IP-адрес хоста 2 для NAICE>
ansible_port: 22
ansible_user: <логин пользователя>
ansible_ssh_pass: <пароль пользователя>
ansible_become_password: <пароль для повышения привилегий (sudo)>
keepalived_interface: <наименование интерфейса, на котором будет настроен VIP-адрес, например eth0>
vars:
keepalived_vip: <VIP-адрес, без маски, например 192.168.0.11>
Обновление
Обновление осуществляется запуском соответствующего плейбука Ansible (Для оффлайн установки плейбуки находятся в директории"naice_install/ansible", для онлайн установки в директории "ansibleNaice-v1.0-14-11-2025/ansible"). По завершении работы плейбука не должно быть ошибок!
Запуск плейбука для обновление однохостовой установки
ansible-playbook master-migration-naice-1.0.yml -i ./inventory/hosts.yml
Запуск плейбука для обновления установки с резервированием
ansible-playbook master-migration-naice-cluster-1.0.yml -i ./inventory/hosts-cluster.yml
Обновление
После запуска плэйбука Ansible необходимо подтвердить выполнение операции:
🚀 БУДЕТ ВЫПОЛНЕНА СЛЕДУЮЩАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ ДЕЙСТВИЙ: 1. 📦 СОЗДАНИЕ БЭКАПА БАЗЫ ДАННЫХ - Создание бэкапа БД: /etc/docker-naice/backups/*.tar.gz - Очистка данных в БД 2. 🔄 ОБНОВЛЕНИЕ - Обновление СУБД - Обновление сервисов на версию 1.0 3. 📥 ВОССТАНОВЛЕНИЕ ДАННЫХ - Восстановление БД из резервной копии текущего бэкапа - Запуск сервисов ✅ Подтвердите выполнение операции (yes/no) : yes
После этого будет выполнен плейбук для выполнения обновления - необходимо дождаться его выполнения.
Проверка состояния сервисов
Проверить успешность запуска контейнеров можно, перейдя в директорию для установки NAICE (по умолчанию - /etc/docker-naice/ ) и выполнив команду для просмотра списка и статуса контейнеров docker compose ps -a. Вывод команды должен быть примерно следующим:
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS epg-service hub.eltex-co.ru/naice/epg-service:1.0-1 "/bin/sh -e /usr/loc…" epg-service 10 days ago Up 10 days (healthy) 0.0.0.0:8100->8100/tcp, [::]:8100->8100/tcp naice-aquila hub.eltex-co.ru/naice/naice-aquila:0.9 "java -cp @/app/jib-…" naice-aquila 10 days ago Up 10 days (healthy) 0.0.0.0:49->49/tcp, [::]:49->49/tcp, 0.0.0.0:5703->5703/tcp, [::]:5703->5703/tcp, 0.0.0.0:8091-8092->8091-8092/tcp, [::]:8091-8092->8091-8092/tcp naice-bubo hub.eltex-co.ru/naice/naice-bubo:0.9 "java -cp @/app/jib-…" naice-bubo 10 days ago Up 10 days (healthy) 0.0.0.0:5704->5704/tcp, [::]:5704->5704/tcp, 0.0.0.0:8093-8094->8093-8094/tcp, [::]:8093-8094->8093-8094/tcp naice-castor hub.eltex-co.ru/naice/naice-castor:0.9 "java -Djava.awt.hea…" naice-castor 10 days ago Up 10 days (healthy) 0.0.0.0:5705->5705/tcp, [::]:5705->5705/tcp, 0.0.0.0:8095-8096->8095-8096/tcp, [::]:8095-8096->8095-8096/tcp naice-gavia hub.eltex-co.ru/naice/naice-gavia:0.9 "java -cp @/app/jib-…" naice-gavia 10 days ago Up 10 days (healthy) 0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp naice-gulo hub.eltex-co.ru/naice/naice-gulo:0.9 "java -cp @/app/jib-…" naice-gulo 10 days ago Up 10 days (healthy) 0.0.0.0:8089-8090->8089-8090/tcp, [::]:8089-8090->8089-8090/tcp naice-lemmus hub.eltex-co.ru/naice/naice-lemmus:0.9 "java -cp @/app/jib-…" naice-lemmus 10 days ago Up 10 days (healthy) 0.0.0.0:8083->8083/tcp, [::]:8083->8083/tcp naice-lepus hub.eltex-co.ru/naice/naice-lepus:0.9 "java -cp @/app/jib-…" naice-lepus 10 days ago Up 10 days (healthy) 0.0.0.0:8087->8087/tcp, [::]:8087->8087/tcp, 0.0.0.0:67->1024/udp, [::]:67->1024/udp naice-nats hub.eltex-co.ru/naice/nats:0.7.1 "docker-entrypoint.s…" nats 10 days ago Up 10 days (healthy) 0.0.0.0:4222->4222/tcp, [::]:4222->4222/tcp, 0.0.0.0:6222->6222/tcp, [::]:6222->6222/tcp, 0.0.0.0:7777->7777/tcp, [::]:7777->7777/tcp, 0.0.0.0:8222->8222/tcp, [::]:8222->8222/tcp naice-ovis hub.eltex-co.ru/naice/naice-ovis:0.9 "java -cp @/app/jib-…" naice-ovis 10 days ago Up 10 days (healthy) 0.0.0.0:5701->5701/tcp, [::]:5701->5701/tcp, 0.0.0.0:8084-8085->8084-8085/tcp, [::]:8084-8085->8084-8085/tcp naice-postgres hub.eltex-co.ru/naice/postgres:0.9.4 "docker-entrypoint.s…" postgres 10 days ago Up 10 days (healthy) 0.0.0.0:5432->5432/tcp, [::]:5432->5432/tcp naice-radius hub.eltex-co.ru/naice/naice-radius:0.9 "/docker-entrypoint.…" naice-radius 10 days ago Up 10 days (healthy) 0.0.0.0:1812-1813->1812-1813/udp, [::]:1812-1813->1812-1813/udp, 0.0.0.0:9812->9812/tcp, [::]:9812->9812/tcp naice-sterna hub.eltex-co.ru/naice/naice-sterna:0.9 "/docker-entrypoint.…" naice-sterna 10 days ago Up 10 days (healthy) 80/tcp, 0.0.0.0:8443->444/tcp, [::]:8443->444/tcp naice-ursus hub.eltex-co.ru/naice/naice-ursus:0.9 "java -cp @/app/jib-…" naice-ursus 10 days ago Up 10 days (healthy) 0.0.0.0:8081-8082->8081-8082/tcp, [::]:8081-8082->8081-8082/tcp naice-vulpus hub.eltex-co.ru/naice/naice-vulpus:0.9 "java -cp @/app/jib-…" naice-vulpus 10 days ago Up 10 days (healthy) 0.0.0.0:5702->5702/tcp, [::]:5702->5702/tcp, 0.0.0.0:8086->8086/tcp, [::]:8086->8086/tcp, 0.0.0.0:8088->8088/tcp, [::]:8088->8088/tcp naice-web hub.eltex-co.ru/naice/naice-web:0.9 "/docker-entrypoint.…" naice-web 10 days ago Up 10 days (healthy) 80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp, 0.0.0.0:80->4200/tcp, [::]:80->4200/tcp
Проверка работоспособности кластера
Зайти на первую ноду, указанную в node_primary и выполнить команду:
|
Зайти на вторую ноду, указанную в node_standby и выполнить команду:
|
Результатом выполнения команд будет проверка состояния кластера, которая сопровождается выводом лога, в конце которого ожидается вывод:
|
Ручное обновление
Обновление будет состоять из пяти основных этапов:
- Создание резервной копии данных БД.
- Выключение сервисов и удаление данных БД.
- Установка новой версии NAICE при помощи плэйбуков Ansible.
- Выключение сервисов и удаление данных БД.
- Восстановление данных БД.
- Запуск сервисов.
Создание резервной копии данных БД
Перед обновлением необходимо сделать резервную копию БД в соответствие с инструкцией: v1.0_3.8 Создание резервной копии данных БД
Для установки с резервированием.
Переместить полученный архив с резервной копией данных в домашнюю папку пользователя на хосте с NAICE или на другой хост. Это требуется для возможности отката установки после обновления обратно на версию 0.9.
Подготовка хоста для запуска плейбуков Ansible
Перед обновлением требуется подготовить хост для запуска плэйбуков Ansible.
Подготовка хоста для запуска плейбуков Ansible.
Требования к VM на которой выполняется запуск плейбуков Ansible.
Выключение сервисов и удаление данных БД
Для однохостовой установки
Остановить сервисы NAICE:
cd /etc/docker-naice sudo docker compose down
Удалить данные БД:
sudo rm -rf /etc/docker-naice/var/pgdata
Для установки с резервированием
Остановить все сервисы на обеих нодах:
sudo docker compose down sudo docker compose -f docker-compose.repmgr.yml down
Удалить данные из директории postgres/data:
sudo rm -rf /etc/docker-naice/postgres/data/*
Установка для однохостовой установки
Выполнить плэйбук:
ansible-playbook install-naice.yml -i inventory/hosts.yml
Установка для схемы с резервированием
Выполнить плэйбук для установки кластера СУБД PostgreSQL:
ansible-playbook install-postgres-cluster.yml -i inventory/hosts-cluster.yml
Выполнить плэйбук для установки кластера NAICE:
ansible-playbook reservation-naice-services.yml -i inventory/hosts-cluster.yml
После выполнения установки выполнить повторно остановку сервисов и удаление БД.
Восстановление данных БД
Для успешного восстановления и обновления данных требуется запустить только контейнер с СУБД PostgreSQL! В случае был выполнен запуск сервисов NAICE до восстановления данных БД - требуется повторно остановить все контейнеры и удалить данные БД!
Для однохостовой установки
Поднять только postgres:
cd /etc/docker-naice sudo docker compose up postgres -d
Запустить скрипт restore_from_previous_version.sh:
sudo docker exec -it naice-postgres /scripts/backup/restore_from_previous_version.sh
Поднять все сервисы:
cd /etc/docker-naice sudo docker compose up -d
Для установки с резервированием
Запустить postgres последовательно на первой и второй нодах:
sudo docker compose -f docker-compose.repmgr.yml up -d
Поместить бэкап на мастер-ноду по пути /etc/docker-naice/postgres/backups
Запустить скрипт восстановления на мастер-ноде:
docker exec naice-postgres-1 /home/worker/scripts/backup/restore_from_previous_version.sh
Запустить сервисы на обеих нодах:
cd /etc/docker-naice sudo docker compose up -d
Откат на версию 0.9 NAICE
Откат на версию 0.9 требуется обязательного наличия резервной копии данных БД, которую надо создать перед обновлением на версию 0.9!
Выключение сервисов и удаление данных БД
Для однохостовой установки
Остановить сервисы NAICE:
cd /etc/docker-naice sudo docker compose down
Удалить NAICE:
cd ~ && sudo rm -rfv /etc/docker-naice
Для установки с резервированием
Остановить все сервисы на всех нодах:
sudo docker compose down sudo docker compose -f docker-compose.repmgr.yml down
Удалить NAICE на всех нодах:
cd ~ && sudo rm -rfv /etc/docker-naice
Повторная установка версии 0.9
Все плэйбуки требуется запускать из директории, которая использовалась при изначальной установки NAICE версии 0.9.
Для однохостовой установки
Выполнить плэйбук:
ansible-playbook install-naice.yml -i inventory/hosts.yml
Для установки с резервированием
Выполнить плэйбук для установки кластера СУБД PostgreSQL:
ansible-playbook install-postgres-cluster.yml -i inventory/hosts-cluster.yml
Выполнить плэйбук для установки кластера NAICE:
ansible-playbook reservation-naice-services.yml -i inventory/hosts-cluster.yml
Восстановление данных БД
Для однохостовой установки
Скопировать ранее созданный бэкап в директорию /etc/docker-naice/backups/.
Запустить скрипт restore.sh:
sudo docker exec -it naice-postgres /scripts/backup/restore_from_previous_version.sh
Для установки с резервированием
Скопировать ранее созданный бэкап на мастер-ноду с СУБД PostgreSQL в директорию /etc/docker-naice/postgres/backups
Запустить скрипт восстановления на мастер-ноде:
docker exec naice-postgres-1 /home/worker/scripts/backup/restore.sh
Повторный запуск NAICE
Выполнить перезапуск сервисов с NAICE
Для однохостовой установки
Перезапустить сервисы NAICE:
cd /etc/docker-naice sudo docker compose down && sudo docker compose up -d
Для установки с резервированием
Перезапустить сервисы NAICE на всех нодах (останавливать контейнеры с СУБД PostgreSQL не требуется):
cd /etc/docker-naice sudo docker compose down && sudo docker compose up -d