Если используется более старая версия NAICE (0.6 и менее) - требуется выполнить последовательное обновление до версии 0.7.
Для обновления используется тот же плейбук ansible, что и для установки. При обновлении следует учитывать, что в переменных плейбука требуется указать те же значения переменных, которые использовались ранее для установки версии 0.7.
Выполнять обновление можно только в рамках ранее выбранной схемы: однохостовую установку на однохостовую установку; схему с резервированием на схему с резервированием. |
В версии 0.8 изменен механизм взаимодействия с Active Directory, а именно:
Необходимо внимательно ознакомиться с инструкцией v0.8_4.1 Пример настройки интеграции с Active Directory.
После обновления требуется дополнить в NAICE настройки источника идентификации, который отвечает за взаимодействие с MS AD в соответствии с инструкцией.
Скачать и разархивировать плейбуки установки в соответствие с инструкцией: Получение файлов для работы плейбука.
Указать адрес сервера с NAICE: Настройка доступа к хостам для установки
Переменные расположены в файле "ansible/group_vars/all.yml".
Требуется взять аналогичный файл из плейбука установки версии 0.7 и перенести значения переменных, которые были изменены при установке версии 0.7.
Следует обратить особенное внимание на значение следующих переменных, несоответствие которых может привести к полной неработоспособности после выполнения плейбука. |
Метод разворачивания СУБД PostgreSQL в виде deb пакета или докер контейнера. По умолчанию используется докер контейнер, значение переменной в этом случае false.
externally_installed_postgres: false |
Переменная, которая определяет путь установки NAICE. Значение по умолчанию /etc/docker-naice.
naice_docker_path: /etc/docker-naice |
Переменная, которая определяет путь с серверу лицензирования. Значение по умолчанию https://elm.eltex-co.ru:8099. Переменная требует изменения только при использовании Offline-EML с USB токеном.
gulo_elm_server_url: https://elm.eltex-co.ru:8099 |
Переменные, которые отвечают за используемый сертификат RADIUS для выполнения EAP-PEAP аутентификации. По умолчанию сертификат встроен в контейнер сервиса naice-radius. Данный сертификат не имеет отношения к авторизации типа EAP-TLS, которая имеет свой блок настроек.
Если ранее сертификат был заменён случае необходимости подготовить настройки в соответствии с инструкцией: Замена сертификатов по умолчанию для работы протокола EAP-PEAP (опционально) .
Данный сертификат не имеет отношения к авторизации типа EAP-TLS, которая имеет свой блок настроек. |
Переменные, которые отвечают за используемый сертификат RADIUS для выполнения авторизации EAP-TLS.
Если ранее выполнялась настройка EAP-TLS - требуется повторно подготовить плейбук в соответствии с инструкцией: Добавление сертификатов для работы протокола EAP-TLS (опционально).
Данные действия необходимо выполнять только при обновлении схемы с резервированием. Обновлять однохостовую установку на схему с резервированием нельзя! |
hosts-cluster.ymlДля выполнения установки/обновления NAICE в схеме с резервирование с версии 0.8 данные по хостам установки вынесены в отдельный файл "hosts-cluster.yml". Требуется перенести данные по хостам установки из старого файла "hosts.yml".
Подробное описание настройки: Подготовка к установке
Проверить состояние мастерства репликации и при необходимости необходимо вернуть вернуть к исходному: Master должен находиться на хосте с адресом указанным в хосте "node_primary". При необходимости надо перевести мастерство административно.
Подробное описание проверки состояния: Проверка состояния кластера PostgreSQL
Перевод мастерства: Смена роли ноды на "Primary"
Выполнить на первой ноде команды:
sudo docker exec -it naice-postgres-1 psql -U postgres -c "CREATE ROLE aquila LOGIN ENCRYPTED PASSWORD 'aquila' IN ROLE ursus;" sudo docker exec -it naice-postgres-1 psql -U postgres -c "CREATE DATABASE aquila OWNER aquila;" |
Проверить, что роль aquila создана и у она может работать с БД ursus:
# Выполнить команду на первой ноде кластера
$ sudo docker exec -it naice-postgres-1 psql -U postgres -c "\du"
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-------------------------------
aquila | | {ursus}
lemmus | | {ursus}
lepus | | {}
ovis | | {ursus}
pgwatch2 | 5 connections | {pg_read_all_data,pg_monitor}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
radius | | {ursus}
repmgr | Superuser, Create DB, Replication | {}
ursus | | {}
vulpus | | {lepus}
# Выполнить команду на второй ноде кластера
$ sudo docker exec -it naice-postgres-2 psql -U postgres -c "\du"
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-------------------------------
aquila | | {ursus}
lemmus | | {ursus}
lepus | | {}
ovis | | {ursus}
pgwatch2 | 5 connections | {pg_read_all_data,pg_monitor}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
radius | | {ursus}
repmgr | Superuser, Create DB, Replication | {}
ursus | | {}
vulpus | | {lepus} |
Проверить, что в БД aquila можно войти:
$ sudo docker exec -it naice-postgres-1 psql -U aquila psql (15.8) Type "help" for help. aquila=> \q |
Для выполнения обновления необходимо запустить плейбук установки:
ansible-playbook install-naice.yml |
Подробнее: Установка NAICE.
Первоначально необходимо обновить СУБД PostgreSQL.
Выполнить плейбук:
ansible-playbook docker-postgres-cluster.yml -i hosts-cluster.yml |
Выполнить плейбук:
ansible-playbook reservation-naice-services.yml -i hosts-cluster.yml |
Что бы проверить состояние после выполнения установки необходимо зайти в папку установки NAICE (по умолчанию /etc/docker-naice) и выполнить команду "sudo docker compose ps -a".
Подробнее о проверке состояния: Проверка состояния сервисов после установки.
Проверить состояние кластера СУБД PostgreSQL в соответствие с инструкцией: Проверка состояния кластера PostgreSQL
Проверить состояние сервисов NAICE в соответствии с инструкцией: Проверка состояния кластера NAICE
Выполнить восстановление VM средствами гипервизора из созданной перед установкой резервной копии.
Возможно обновление используя ручное обновление СУБД PostgreSQL. В версии 0.8 в PostgreSQL был добавлен новый пользователь и новая БД aquila. Если уже установлен NAICE версии 0.7, то при ручном обновлении PostgreSQL необходимо выполнить действия в зависимости от способа установки СУБД (docker контейнер или deb-пакеты) и типа установки NAICE: однохостовая установка или схема с резервированием.
Данные действия выполняются до обновления основных сервисов NAICE. |
Дальнейшие действия описаны исходя из пути установки NAICE по умолчанию /etc/docker-naice. Если путь при установке версии 0.7 был изменен - следует использовать его. |
Удаление БД приведет к потере всех данных и созданию пустой БД. Информация о загруженной лицензии так же будет сброшена: потребуется повторная активация продукта с использованием ранее полученного файла лицензии. Требуется проверить не утрачен ли данный файл и при необходимости повторно запросить его в коммерческом отделе компании Элтекс. |
Если нет необходимости в данных, которые были добавлены в NAICE версии 0.7, выполнить следующие действия:
Удалить все файлы из директории с данными PostgreSQL:
cd /etc/docker-naice sudo rm -r var/pgdata/ |
Изменить версию образа контейнера на актуальную в переменных окружения .env:
sudo nano .env POSTGRES_VERSION_TAG: 0.8.4 |
Перезапустить контейнеры с обновлением образов:
sudo docker compose down && sudo docker compose pull && sudo docker compose up -d postgres |
ansible-playbook install-naice.yml |
Для сохранения данных при обновлении с версии 0.7 последовательность действий следующая:
Закомментировать проброс volume в контейнер в docker-compose.yml:
cd /etc/docker-naice
sudo nano docker-compose.yml
postgres:
container_name: naice-postgres
image: nexus.eltex.loc:9012/naice/postgres:${POSTGRES_VERSION_TAG}
# volumes:
# - ./var/pgdata:/var/lib/postgresql/data |
Измените версию образа контейнера на актуальную в переменных окружения .env:
sudo nano .env POSTGRES_VERSION_TAG: 0.8.4 |
Перезапустить контейнер:
sudo docker compose down && sudo docker compose pull && sudo docker compose up -d postgres |
sudo docker compose down postgres && sudo docker compose up -d postgres |
Выполнить команды:
sudo docker exec -it naice-postgres psql -U postgres -c "CREATE ROLE aquila LOGIN ENCRYPTED PASSWORD 'aquila' IN ROLE ursus;" sudo docker exec -it naice-postgres psql -U postgres -c "CREATE DATABASE aquila OWNER aquila;" |
ansible-playbook install-naice.yml |
Выполнить команды:
psql -U postgres -c "CREATE ROLE aquila LOGIN ENCRYPTED PASSWORD 'aquila' IN ROLE ursus;" psql -U postgres -c "CREATE DATABASE aquila OWNER aquila;" |
ansible-playbook install-naice.yml -e "externally_installed_postgres=True" |
Удаление БД приведет к потере всех данных и созданию пустой БД. Информация о загруженной лицензии так же будет сброшена: потребуется повторная активация продукта с использованием ранее полученного файла лицензии. Требуется проверить не утрачен ли данный и файл и при необходимости повторно запросить его в коммерческом отделе компании Элтекс. |
Данную инструкцию нужно выполнить на каждой ноде, сначала на Standby, затем на Primary (в рамках стандартного процесса обновления зарезервированной инсталляции без потери доступа). |
Удалить все файлы из директории с данными PostgreSQL (на каждой ноде):
cd /etc/docker-naice sudo rm -r postgres/data |
Изменить версию образа контейнера на актуальную в переменных окружения .env:
sudo nano docker-compose.repmgr.yml ... image: naice-build-hosted.registry.eltex.loc/naice/postgres-repmgr:0.8.4 ... |
Перезапустить контейнеры с обновлением образов, последовательно на первой и второй ноде кластера:
sudo docker compose down && docker compose pull && docker compose -f docker-compose.repmgr.yml up -d |
$sudo docker exec -it naice-postgres-1 bash $ repmgr -f /opt/bitnami/repmgr/conf/repmgr.conf cluster show ID | Name | Role | Status | Upstream | Location | Priority | Timeline | Connection string ------+------------+---------+-----------+------------+----------+----------+----------+--------------------------------------------------------------------------------------- 1001 | postgres-1 | primary | * running | | default | 100 | 1 | user=repmgr password=repmgr host=postgres-1 dbname=repmgr port=5432 connect_timeout=1 1002 | postgres-2 | standby | running | postgres-1 | default | 100 | 1 | user=repmgr password=repmgr host=postgres-2 dbname=repmgr port=5432 connect_timeout=1 |
ansible-playbook reservation-naice-services.yml -i hosts-cluster.yml |
Закомментировать проброс volume в контейнер в docker-compose.repmgr.yml на каждой ноде:
cd /etc/docker-naice
sudo nano docker-compose.repmgr.yml
...
volumes:
- ./ssh_host_config:/home/worker/.ssh/config
#- ./postgres/data:/bitnami/postgresql/data
- ./postgres/backups:/var/backups
... |
Изменить версию образа контейнера на актуальную в переменных окружения .env:
sudo nano docker-compose.repmgr.yml ... image: naice-build-hosted.registry.eltex.loc/naice/postgres-repmgr:0.8.4 ... |
Перезапустить контейнеры с обновлением образов, последовательно на первой и второй ноде кластера:
sudo docker compose down && docker compose pull && docker compose -f docker-compose.repmgr.yml up -d |
sudo docker compose down && docker compose -f docker-compose.repmgr.yml up -d |
$sudo docker exec -it naice-postgres-1 bash $ repmgr -f /opt/bitnami/repmgr/conf/repmgr.conf cluster show ID | Name | Role | Status | Upstream | Location | Priority | Timeline | Connection string ------+------------+---------+-----------+------------+----------+----------+----------+--------------------------------------------------------------------------------------- 1001 | postgres-1 | primary | * running | | default | 100 | 1 | user=repmgr password=repmgr host=postgres-1 dbname=repmgr port=5432 connect_timeout=1 1002 | postgres-2 | standby | running | postgres-1 | default | 100 | 1 | user=repmgr password=repmgr host=postgres-2 dbname=repmgr port=5432 connect_timeout=1 |
Выполнить команды на первой ноде кластера:
sudo docker exec -it naice-postgres-1 psql -U postgres -c "CREATE ROLE aquila LOGIN ENCRYPTED PASSWORD 'aquila' IN ROLE ursus;" sudo docker exec -it naice-postgres-1 psql -U postgres -c "CREATE DATABASE aquila OWNER aquila;" |
ansible-playbook reservation-naice-services.yml -i hosts-cluster.yml |