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

Перенос Space Disp на SpaceVM 7

Внимание

Для корректной работы инфраструктуры необходимо обеспечить сетевую доступность экземпляров Space Disp к API-интерфейсу контроллера SpaceVM.
При размещении экземпляров Space Disp на виртуальных машинах внутри кластера SpaceVM необходимо учитывать версию платформы:

  • Для SpaceVM 6.5.9 допустимо подключать виртуальные машины непосредственно к сети управления (mgmt).
  • Для SpaceVM 7.0.2 требуется организовать внешнюю маршрутизацию между сетью mgmt и сетью виртуальных машин, поскольку они изолированы. Реализация сети для взаимодействия ВМ с API запланирована в будущих релизах SpaceVM 7. Подробнее о работе с сетями в документации SpaceVM 7.0.2.

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

Space VDI версии 6.2.0 получил совместимость со SpaceVM версии 7.0.2.

Для использования кластера на SpaceVM 7.0.2 перед обновлением Space Disp необходимо:

  1. Установить SpaceVM 7.0.2 в соответствии с документацией.

  2. Ознакомиться с матрицей совместимости компонентов Space VDI.

  3. Выполнить перенос узлов кластера с ролями Leader, Manager и БД с SpaceVM 6.5.9 на SpaceVM 7.0.2

Перед началом работ по переносу узлов кластера необходимо:

  1. Запланировать перерыв в работе сервиса на период переноса узлов.

  2. Проверить доступность всех узлов кластера командой sudo docker node ls. При выявлении проблем устранить их до начала процесса переноса.

  3. Выполнить резервное копирование узлов кластера.

Внимание

В тексте статьи IP-адреса являются примерами. Необходимо производить настройку в соответствии с существующей инфраструктурой.

Шаг 1. Перенос БД на SpaceVM 7

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

Внимание

  • Если в кластере используется внешняя БД, не из состава установки SpaceVDI, необходимо сразу перейти к шагу 2. В этом случае перенос БД не требуется и IP-адрес останется прежним.
  • Если шлюз включен, перед переносом его необходимо выключить в настройках диспетчера.
  1. В Web-интерфейсе SpaceVM 6.5.9 перейти в раздел Виртуальные машины.
  2. Выключить все ВМ установки диспетчера.
  3. Создать резервную копию ВМ с БД для дальнейшего экспорта согласно документации.

    Настройки параметров резервного копирования

    img

  4. Созданную резервную копию перенести на установку SpaceVM 7.0.2.


Перенос резервной копии на SpaceVM 7

  1. В Web-интерфейсе SpaceVM 7.0.2 перейти в раздел Хранилища - Файлы.
  2. Загрузить файл резервной копии ВМ с БД удобным способом.
  3. После загрузки выбрать резервную копию.
  4. Обновить информацию и перейти в Конфигурация копии ВМ.
  5. В открывшемся окне запустить восстановление ВМ с помощью кнопки Восстановить ВМ.
  6. В разделе Виртуальные машины выбрать восстановленную ВМ.
  7. В окне подробного просмотра информации в разделе Сетевые настройки - Интерфейсы удалить старый интерфейс.
  8. Добавить новый интерфейс согласно документации.
  9. Запустить восстановленную ВМ с БД.

Подключение новой БД

  1. В Web-интерфейсе SpaceVM 6.5.9 включить ВМ с компонентами Space Disp.

    Корректный порядок: сначала включить ВМ с БД, а потом все остальные ВМ.

    Кластер должен запуститься с прежним набором IP-адресов.

  2. Переключить установку Space Disp 6.1 на новую ВМ с БД на SpaceVM 7.0.2. Выполняется 1 раз на любом из узлов с ролью Leader или Manager.

    • Получить значение параметра ancestor в столбце IMAGE вывода команды:

      sudo docker ps
    • Получить доступ к настройкам кластера с помощью команды:

      sudo docker exec -it $(sudo docker ps --filter "ancestor=space-dispatcher-backend:6.1.0.1380" --format "{{.ID}}" | head -1) cat /run/secrets/LOC_SET > old_secrets
    • В файле old_secrets исправить параметр DB_HOST на IP-адрес новой ВМ с БД на SpaceVM 7.

      Пример исправления параметра DB_HOST

      #DB_HOST = 'gAAABqZxc_KFw6-SWx-xrU0zzeselqMBiP1WG8q7_owYsDjm5eYXvhHFa-i5Cq93MeY1B6A=='
      DB_HOST = '10.253.33.104'
  3. Удалить стек командой:

    sudo docker stack rm multivdi

    Дождаться выполнения команды. Процесс займёт около минуты.

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

    sudo docker secret rm LOC_SET
  5. Импортировать отредактированный файл old_secrets в качестве новых секретов командой:

    sudo docker secret create LOC_SET old_secrets
  6. Создать стек, задействовав новые секреты, командой:

    sudo docker stack deploy --resolve-image never -c /opt/multivdi/multivdi-stack.yml multivdi
  7. Выключить старую ВМ с БД на SpaceVM 6.5.9.

  8. Запустить кластер с новой БД и убедиться в корректности его работы, выполнив вход в панель администратора.
  9. Перейти в Web-интерфейс SpaceVM 7.0.2.
  10. На ВМ с БД выполнить обновление ОС Astra Linux SE до версии 1.8.5.46, затем провести обновление в соответствии с инструкцией.

Шаг 2. Перенос узлов кластера на SpaceVM 7

Создание новых узлов кластера

  1. Перейти в Web-интерфейс SpaceVM 6.5.9.
  2. На одной из старых ВМ с ролью Leader или Manager определить IP-адрес лидера командой:

    sudo docker node ls
  3. Вывести значение токена добавления нового узла в кластер командой:

    sudo docker swarm join-token manager -q
  4. Для добавления новых узлов полученные данные необходимо сохранить.

  5. Перейти в Web-интерфейс SpaceVM 7.0.2.
  6. Создать новые узлы для ввода в кластер.

    • Установку выполнить сразу с версии 6.2.
    • Количество: количество узлов с ролью Manager + узел с ролью Leader.
    • Каждый узел необходимо установить с ролью Manager и добавить в существующий кластер:
    sudo bash /media/cdrom/install.sh manager {leader_address} {join_token}
    • В качестве leader_address указать IP-адрес текущего лидера (п.2).
    • В качестве join_token указать токен добавления нового узла (п.3).

Вывод старых узлов из кластера

  1. Лишить прав управления кластером старые узлы на SpaceVM 6.5.9, включая узел с ролью Leader, командой:

    sudo docker node demote {id}

    Получить id узла можно с помощью команды sudo docker node ls.

  2. Выключить старые узлы командой:

    poweroff
  3. Удалить старые узлы из кластера командой:

    sudo docker node rm {id}

Настройка работы кластера

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

    sudo docker stack rm multivdi
  2. Создать обновленные секреты с сертификатами для nginx и redis, последовательно выполнив команды:

    sudo cat "/opt/multivdi/pki/nginx-apache/ssl.crt" | sudo docker secret create WEB_SSL_CRT -
    sudo cat "/opt/multivdi/pki/nginx-apache/ssl.key" | sudo docker secret create WEB_SSL_KEY -
    sudo cat "/opt/multivdi/pki/nginx-apache/dhparam.pem" | sudo docker secret create WEB_DH_PARAM -
    sudo cat "/opt/multivdi/pki/ca/ca_cert.pem" | sudo docker secret create CA_CERT_PEM -
    sudo cat "/opt/multivdi/pki/redis/srv_cert.pem" | sudo docker secret create REDIS_SRV_CRT -
    sudo cat "/opt/multivdi/pki/redis/srv_key.pem"  | sudo docker secret create REDIS_SRV_KEY -
  3. Собрать стек командой:

    sudo docker stack deploy --resolve-image never -c /opt/multivdi/multivdi-stack.yml multivdi
  4. Дождаться запуска кластера и убедиться в корректности его работы, выполнив вход в панель администратора.


Шаг 3. Настройка event-exporter для новой БД

Внимание

Данный шаг требуется только при использовании функционала экспорта событий БД и не оказывает влияния на функциональность Space VDI.

  1. На одном из узлов создать новый ключ для event-exporter с помощью скрипта agent-key-gen c новым адресом БД, например:

    cd /opt/event-exporter && sudo ./agent-key-gen --ex --db-pass vdi --db-host 10.253.33.194 --db-user vdi
  2. Обновленный ключ /opt/event-exporter/key.bin копировать на узлы с ролями Leader и Manager.

  3. Перезапустить службу event-exporter.service на всех узлах кластера. Остановить службу на узлах, где выгрузка не требуется.