В версии 1.0 была обновлена версия СУБД PostgreSQL с версии 15 на версию 17!.
Обновление выполняется с версии 0.9. Для обновления с версии ниже потребуется сначала обновиться до версии 0.9, а затем до версии 1.0. |
Обновление осуществляется в два основных этапа:
Для обновления в режиме онлайн установки в однохостовом режиме и установки с резервированием потребуется отдельный дополнительный хост с ОС Ubuntu 24 для запуска плейбуков Ansible. |
Подготовка хоста для запуска плейбуков Ansible.
Требования к VM на которой выполняется запуск плейбуков Ansible.
Перед обновлением необходимо сделать резервную копию БД в соответствие с инструкцией: v1.0_3.8 Создание резервной копии данных БД
Для установки с резервированием.
Переместить полученный архив с резервной копией данных в домашнюю папку пользователя на хосте с NAICE или на другой хост. Это требуется для возможности отката установки после обновления обратно на версию 0.9.
Установить пакеты и все необходимые зависимости из официального репозитория 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 указать:
# Группа хостов для установки 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:
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 необходимо подтвердить выполнение операции:
|
После этого будет выполнен плейбук для выполнения обновления - необходимо дождаться его выполнения.
Проверить успешность запуска контейнеров можно, перейдя в директорию для установки 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 и выполнить команду:
|
Результатом выполнения команд будет проверка состояния кластера, которая сопровождается выводом лога, в конце которого ожидается вывод:
|
Обновление будет состоять из пяти основных этапов:
Перед обновлением необходимо сделать резервную копию БД в соответствие с инструкцией: v1.0_3.8 Создание резервной копии данных БД
Для установки с резервированием.
Переместить полученный архив с резервной копией данных в домашнюю папку пользователя на хосте с NAICE или на другой хост. Это требуется для возможности отката установки после обновления обратно на версию 0.9.
Перед обновлением требуется подготовить хост для запуска плэйбуков 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/* |
| Если была удалена сама директория data, то потребуется создать её руками, изменив ей владельца на worker:root, в противном случае контейнер с постгресом не сможет запуститься! |
Выполнить плэйбук:
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 |
| Последовательно запускать важно, т.к. иначе они могут оба запуститься как мастер, а если мастер уже есть - вторая нода запускается как backup и успешно синхронизируется с первой. Это требуется обязательно проконтролировать. |
Поместить бэкап на мастер-ноду по пути /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 требуется обязательного наличия резервной копии данных БД, которую надо создать перед обновлением на версию 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 |
Все плэйбуки требуется запускать из директории, которая использовалась при изначальной установки 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:
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 |