Перейти к содержанию

Обновление Space Disp версии 5.7.2 на 6.0

Общая информация

Примечание

Убедиться, что Space Disp на всех узлах соответствует версии 5.7.2. Если версия отличается – необходимо обновить до версии 5.7.2.


Перед обновлением узлов, необходимо отключить использование Space Gateway на стороне Space Disp.

В данном разделе описывается сценарий обновления Space Disp версии 5.7.2 на базе ОС Astra Linux SE 1.7.5 на Space Disp 6.0 на базе ОС Astra Linux SE 1.8.2.

Рассматривается типовая схема для 500-2000 подключений, со следующей конфигурацией кластера:

  • Узел с ролью DB
  • Узел с ролью Leader
  • Узел 1 с ролью Manager
  • Узел 2 с ролью Manager

Процесс обновления

Подготовка ВМ

Для обновления рассматриваемой конфигурации кластера необходимо подготовить 4 ВМ с ОС Astra Linux SE 1.8.2 для обновления Space Disp. Необходимо выполнить следующие шаги:

  1. Создать 4 ВМ.

    Для создания ВМ необходимо выполнить шаги по созданию ВМ в среде SpaceVM.

  2. Установить ОС Astra Linux SE 1.8.2 на 4 ВМ.

    Для установки ОС необходимо выполнить шаги по установке Astra Linux SE 1.8.


Монтирование ISO-образа

  1. В Web-интерфейсе SpaceVM примонтировать к ВМ ISO-образ установочного диска Space Disp 6.0. В разделе CD-ROM подробного просмотра ВМ нажать кнопку Монтировать образ:

    • В открывшемся окне Монтирование ISO-образа необходимо выбрать тип хранилища, его наименование и ISO-образ установочного диска.

    • Для сохранения изменений нажать кнопку Монтировать.

  2. Примонтировать ISO-образ установочного диска Space Disp 6.0 в файловую систему ОС Astra Linux, выполнив команду:

    sudo mount /media/cdrom
    

    Примечание

    При установке в режиме ЗПС необходимо скопировать публичный ключ dakom_m_pub.key с ISO-образа установочного диска Space Disp 6.0 на ВМ и выполнить перезагрузку ВМ с использованием следующих команд:

    sudo cp /media/cdrom/dakom_m_pub.key /etc/digsig/keys/
    sudo update-initramfs -uk all
    sudo reboot
    

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

Примечание

Если используется внешняя БД, шаги с переносом БД можно пропустить.

Необходимо создать резервную копию содержимого текущей БД на ВМ со Space Disp версии 5.7.2. Для этого необходимо выполнить команду:

sudo bash /opt/db_backup.sh /opt/

где аргумент /opt/ — директория сохранения резервной копии.

В результате выполнения команды в указанной директории для создания резервной копии БД будут находиться файлы резервной копии.

Пример вывода содержимого директории /opt/
root@astra:/opt# ls
02-06-2025_14-48-48_vdi_backup.sql.gz db_backup.sh multivdi
02-06-2025_15-45-31_vdi_backup.sql.gz db_restore.sh vdi-build-info.txt

Изменение параметров подключения к БД и сохранение секретов

На узле с текущей ролью Leader с установленным Space Disp версии 5.7.2 необходимо выполнить следующие действия для сохранения старых секретов и изменения адреса БД:

  1. Вывести список всех контейнеров командой:

    sudo docker ps
    
  2. Получить ID контейнера vdi-tornado командой:

    CONTAINER_ID=$(sudo docker ps --filter "name=multivdi_vdi-tornado" --format "{{.ID}}")
    
  3. Записать текущие параметры подключения к БД в файл old_secrets командой:

    sudo docker exec -it $CONTAINER_ID cat /run/secrets/LOC_SET > old_secrets
    

    где CONTAINER_ID — полученный на предыдущем шаге ID контейнера vdi-tornado.

  4. Открыть сохранённый файл old_secrets для редактирования командой:

    sudo nano ./old_secrets
    
  5. Изменить параметр DB_HOST на IP-адрес ВМ с ОС Astra Linux SE 1.8.2, на которой будет размещена новая БД.

  6. Удалить стек командой:

    sudo docker stack rm multividi
    
  7. Сохранить данные подключения командой:

    sudo docker secret rm LOC_SET && sudo docker secret create LOC_SET old_secrets
    

Подготовка БД на новой ВМ

На ВМ с ОС Astra Linux SE 1.8.2, где будет размещена БД, необходимо выполнить следующие шаги:

  1. Установить роль DB с помощью скрипта:

    sudo bash /media/cdrom/install.sh db
    

    Внимание

    Логин и пароль устанавливаемой БД должны совпадать с логином и паролем БД на Space Disp версии 5.7.2

  2. Копировать резервную копию БД с узла с установленным Space Disp версии 5.7.2 на ВМ с ОС Astra Linux SE 1.8.2. Для этого выполнить команду:

    sudo scp user@10.0.0.0:/opt/*.sql.gz /opt/
    

    где:

    • 10.0.0.0 — IP‑адрес узла с Space Disp версии 5.7.2, на котором была сделана резервная копия БД.
    • /opt/*.sql.gz — путь к файлам резервной копии на удалённом сервере.
  3. Удалить временную БД на ВМ командой:

    sudo -u postgres psql -c "DROP DATABASE vdi;"
    
  4. Создать новую пустую БД с необходимым набором привилегий командой:

    sudo -u postgres psql -c "CREATE DATABASE vdi encoding 'UTF-8' lc_collate 'en_US.UTF-8' lc_ctype 'en_US.UTF-8' template 'template0' owner 'vdi';"
    

    где owner 'vdi' — пользователь БД, указанный при создании БД в шаге 1.

  5. Восстановить БД из резервной копии командой:

    sudo bash /opt/db_restore.sh /opt/12-03-2025_15-32-44_vdi_backup.sql.gz
    

Переключение узлов

Необходимо выполнить переключение текущих узлов на новый адрес БД. Для этого на ВМ любого из узлов кластера с установленным Space Disp версии 5.7.2 необходимо выполнить следующие шаги:

  1. Создать стек командой:

    sudo docker stack deploy --resolve-image never -c /opt/multivdi/multivdi-stack.yml multividi
    
  2. Убедиться, что все контейнеры запущены и имеют статус healthy, выполнив команду:

    sudo docker ps
    
  3. Убедиться, что авторизация в Web-интерфейсе Space Disp пользователя с правами администратора по адресу любого из узлов кластера 5.7.2 является успешной.

  4. Удалить файл old_secrets:

    sudo rm old_secrets
    
  5. Вывести в терминал токен для подключения новых узлов в кластер:

    sudo docker swarm join-token manager -q
    

Подключение новых узлов

На ВМ с ОС Astra Linux SE 1.8.2, где предполагается размещение роли Leader выполнить следующие шаги:

  1. Добавить новый узел с установленным Space Disp версии 6.0 в кластер выполнив команду запуска скрипта на установку с ролью Manager:

    sudo bash /media/cdrom/install.sh multi manager {leader_address} {join_token}
    
  2. Повторить предыдущий шаг на ВМ с ОС Astra Linux SE 1.8.2, где предполагается размещение ролей Manager.

    Внимание

    При присоединении новых узлов в кластер перед исполнением команды проверять на каком узле на текущий момент находится роль Leader для указания корректного IP-адреса в команде. Проверку произвести при помощи команды sudo docker node ls на любом узле кластера 5.7.2.


    Количество узлов с установленным Space Disp версии 6.0 должно быть равно количеству узлов кластера обновляемого Space Disp 5.7.2.

    Пример

    Если обновляется кластер 5.7.2 из 3 ВМ (Leader-Manager-Manager), то на данном шаге в кластере должно быть 6 ВМ:

    - `Leader` 5.7.2
    - `Manager` 5.7.2
    - `Manager` 5.7.2
    - `Manager` 6.0
    - `Manager` 6.0
    - `Manager` 6.0
    

Завершение обновления

Для того чтобы Leader мигрировал на узел кластера с установленным Space Disp версии 6.0, необходимо понизить статус всех узлов кластера с установленным Space Disp версии 5.7.2 с ролью Manager. Для этого необходимо:

  1. Выполнить команду на любом из узлов кластера с установленным Space Disp версии 6.0:

    sudo docker node demote {id}
    

    В команде аргумент {id} — ID узла, полученный командой sudo docker node ls.

  2. Выполнить команду из предыдущего шага для остальных узлов кластера с установленным Space Disp версии 5.7.2.

  3. Отключить ВМ кластера 5.7.2 с ролью Manager командой:

    sudo poweroff
    
  4. Отключить все ВМ кластера с установленным Space Disp версии 5.7.2 командой:

    sudo poweroff
    
  5. На одной из ВМ с ОС Astra Linux SE 1.8.2 на узле кластера 6.0 выполнить команду удаления узла кластера 5.7.2:

    sudo docker node rm {id}
    

    В команде аргумент {id} — ID узла, полученный командой sudo docker node ls.

  6. Выполнить команду из предыдущего шага для всех узлов с установленным Space Disp версии 5.7.2.

  7. Пересоздать стек командами:

    sudo docker stack rm multividi
    sudo docker stack deploy --resolve-image never -c /opt/multivdi/multivdi-stack.yml multividi
    sudo docker stack deploy --resolve-image never -c /opt/multivdi/multivdi-stack.yml multividi
    
  8. Убедиться, что Web-интерфейс Space Disp доступен до IP-адресу с установленным Space Disp версии кластера 6.0.