Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Обновление ПО «zVirt Max»

1. Рекомендуемый алгоритм обновления

Обновление ПО «zVirt Max» c архитектурой Hosted Engine:
  1. Подготовьте репозитории с обновлениями.

  2. Обновите Менеджер управления.

  3. Переведите в режим обслуживания хост с ролью HostedEngine, на котором в текущий момент времени работает ВМ HostedEngine (обозначен значком he). Дождитесь окончания миграции ВМ HostedEngine. Выполните обновление этого хоста.

  4. Обновите все свободные хосты с ролью HostedEngine. Под "свободными" понимаются хосты, на которых в текущий момент не выполняется ВМ HostedEngine (обозначены значком he host).

  5. Обновите стандартные хосты.

  6. При необходимости обновите версии совместимости кластеров и центров данных.

2. Подготовка репозиториев с обновлениями

Процесс подготовки репозиториев не зависит от архитектуры zVirt Max и в любом режиме работы выполняется идентично.

Порядок действий:

  1. Отмонтируйте устаревшие репозитории и удалите их, выполните очистку имеющихся конфигураций репозиториев:

    umount /mnt/main
    umount /mnt/extras
    rm -rf /mnt/main
    rm -rf /mnt/extras
    rm -rf /etc/yum.repos.d/*
    dnf clean all

    Если для zVirt Max 1.1 использовались ссылки, удалите их:

    ll /var/zvirt-repo/{main,extras}
    rm /var/zvirt-repo/{main,extras}
  2. Организуйте офлайн-репозитории из последних актуальных образов zvirt_max_certified_XXXXXXXXXXXX.iso и zvirt_max_certified_extras_XXXXXXXXXXXX.iso одним из следующих способов:

2.1. Создание и публикация централизованных офлайн-репозиториев zVirt Max 1.2 на хосте инсталляции c помощью httpd

При организации централизованных офлайн-репозиториев с пакетами обновления zVirt Max 1.2 на одном из хостов инсталляции, все хосты инсталляции будут обновляться из одного источника. В этом случае не требуется подключать ISO-образы отдельно на каждом хосте.

Порядок действий:

  1. Выберите хост в инсталляции, который будет использован для публикации репозиториев.

  2. Установите и настройте службу httpd на выбранном хосте:

    dnf install httpd
    firewall-cmd --zone=public --permanent --add-service=http
    firewall-cmd --zone=public --permanent --add-service=https
    firewall-cmd --reload
  3. Загрузите ISO-образы zVirt Max 1.2 с предоставленных носителей.

  4. Создайте дополнительные каталоги и примонтируйте ISO-образы офлайн-репозиториев:

    mkdir -p /mnt/extras
    mkdir -p /mnt/main
    mount -o loop /root/zvirt_max_certified_XXXXXXXXXXXX.iso /mnt/main
    mount -o loop /root/zvirt_max_certified_extras_XXXXXXXXXXXX.iso /mnt/extras
  5. Создайте символические ссылки на примонтированные каталоги репозиториев для публикации их в httpd:

    cd /var/www/html/
    ln –s /mnt/main/
    ln –s /mnt/extras/
  6. Запустите службу httpd и проверьте доступность репозиториев:

    systemctl start httpd
    curl http://IP хоста/main/
    curl http://IP хоста/extras/

    Где:

    • IP хоста - IP-адрес хоста, на котором размещены репозитории

      Если команда curl возвращает сообщение You don’t have permission to access this resource, выполните следующие команды на данном хосте:

      chcon -R -t httpd_sys_content_t /var/www/html/
      systemctl restart httpd

      И проверьте доступность репозиториев:

      curl http://IP хоста/main/
      curl http://IP хоста/extras/
  7. На обновляемых хостах создайте конфигурационный файл репозиториев:

    touch /etc/yum.repos.d/offline_zvirtmax_1_2.repo
  8. Приведите конфигурационный файл репозиториев к следующему виду:

    [offline_zvirtmax_1_2_main]
    name=zvirt max 1.2 certified main
    baseurl=http://IP/main
    gpgcheck=0
    enabled=1
    module_hotfixes=1
    
    [offline_zvirtmax_1_2_extras]
    name=zvirt max 1.2 certified extras
    baseurl=http://IP/extras
    gpgcheck=0
    enabled=1
    module_hotfixes=1

    Где:

    • baseurl- IP-адрес хоста инсталляции, к которому подключены ISO-образы.

  9. По завершении обновления всей инсталляции zVirt Max 1.2 остановите службу httpd на хосте с размещенными репозиториями:

    systemctl stop httpd

2.2. Создание локальных файловых офлайн-репозиториев zVirt Max 1.2 на основе ISO-образа

При использовании данного способа в качестве источника обновлений будут использоваться ISO-образы, подключенные к каждому хосту инсталляции. В этом случае все действия по организации офлайн-репозиториев необходимо выполнить на каждом хосте инсталляции.

Предполагается, что каталоги /mnt/main, /mnt/extras созданы на этапе установки zVirt Max 1.1.

Если каталогов нет, необходимо их создать:

mkdir -p /mnt/extras
mkdir -p /mnt/main

Порядок действий:

  1. Загрузите ISO-образы zVirt Max 1.2 с предоставленных носителей.

  2. Примонтируйте ISO-образы офлайн-репозиториев zVirt Max 1.1:

    mount -o loop /root/zvirt_max_certified_XXXXXXXXXXXX.iso /mnt/main
    mount -o loop /root/zvirt_max_certified_extras_XXXXXXXXXXXX.iso /mnt/extras
  3. На обновляемых хостах и на ВМ HostedEngine (в случае архитектуры развертывания HostedEngine) создайте конфигурационный файл репозиториев:

    touch /etc/yum.repos.d/offline_zvirtmax_1_2.repo
  4. Приведите конфигурационный файл репозиториев к следующему виду:

    [offline_zvirtmax_1_2_main]
    name=zvirt max 1.2 certified main
    baseurl=file:///mnt/main
    gpgcheck=0
    enabled=1
    module_hotfixes=1
    
    [offline_zvirtmax_1_2_extras]
    name=zvirt max 1.2 certified extras
    baseurl=file:///mnt/extras
    gpgcheck=0
    enabled=1
    module_hotfixes=1

3. Обновление Менеджера управления

Порядок действий:
  1. Если Менеджер управления развернут в архитектуре HostedEngine, включите на хосте с ВМ HostedEngine режим глобального обслуживания кластера в разделе Ресурсы (Compute)  Хосты (Hosts) веб-интерфейса либо с помощью командной строки, подключившись по SSH к хосту и выполнив следующие команды:

    hosted-engine --set-maintenance --mode=global
    hosted-engine --vm-status

    Убедитесь, что включен режим глобального обслуживания - в выводе должна присутствовать следующая строка:
    !! Cluster is in GLOBAL MAINTENANCE mode !!

  2. Подключитесь по SSH к ВМ HostedEngine.

  3. Создайте резервную копию базы данных Менеджера управления:

    engine-backup --mode=backup --file=/usr/share/ovirt-engine/backup.tgz --log=/var/log/ovirt-engine/backup.log

    Сохраните полученные файлы в хранилище вне среды виртуализации.

  4. Удалите все зафиксированные версии пакетов из списка versionlock.list и убедитесь, что список пуст с помощью команд:

    dnf versionlock clear
    dnf versionlock list
  5. Подготовьте репозитории с обновлениями на ВМ HostedEngine (если действия по подготовке репозиториев ранее не были выполнены).

    Если на ВМ HostedEngine недостаточно места, выполните подготовку централизованных офлайн-репозиториев.
  6. Проверьте, что репозитории подключены правильно: выводы следующих команд не должны содержать ошибки, состояние репозиториев zVirt Max 1.2 должно быть в статусе «Включено», репозитории РЕД ОС не должны быть подключены:

    dnf repolist all
    dnf clean all
    dnf makecache
  7. Проверьте установку дополнительных модулей с помощью команды:

    dnf module list

    При наличии модулей отключите их:

    dnf -y module disable <module_name>

    Или убедитесь, что в конфигурации репозитория включена опция module_hotfixes=1:

    grep "module_hotfixes" /etc/yum.repos.d/*
  8. Запустите терминальный мультиплексор и выполните команды обновления пакетов:

    tmux
    dnf update --best --allowerasing
  9. Отключите все официальные репозитории, предоставляемые РЕД ОС:

    sed -i "s|enabled=1|enabled=0|g" /etc/yum.repos.d/RedOS*
  10. Переустановите rpm-пакеты сервиса ovirt-engine:

    dnf -y reinstall python3-ovirt-engine-lib ovirt-*
  11. Установите дополнительные пакеты исправлений:

    dnf install -y ltree-fix
    dnf install -y db-autodetect
    dnf install -y fix-sql-names
    dnf install -y typeosupdater
    dnf install -y python3-spnego
  12. Если ранее был заменен SSL-сертификат, выполните следующие действия:

    Если замена SSL-сертификата не выполнялась, пропустите данный пункт.
    • Добавьте в truststore корневой сертификат внешнего ЦС с помощью команды:

      keytool -import -file /etc/pki/ca-trust/source/anchors/ca.pem -alias companyca -keystore /etc/pki/ovirt-engine/.truststore
    • В /usr/share/zvirt-engine/services/zvirt-engine-backend/zvirt-engine-backend.conf раскомментируйте параметр SERVER_SSL_KEY_STORE_PASSWORD. Укажите в данном параметре пароль для сертификата /etc/pki/ovirt-engine/keys/apache.p12 (т.е. пароль для сертификата, выпущенного сторонним ЦС).
      Пример:

      # The password for apache.p12
      SERVER_SSL_KEY_STORE_PASSWORD="P@ssw0rd"
  13. Запустите установку Engine:

    engine-setup --offline
  14. Дождитесь окончания установки.

    В случае, если установка пакета fix-sql-names осуществляется отдельно от процесса обновления, на ВМ Менеджера управления выполните следующие действия:

    • Установите пакет:

    dnf install -y fix-sql-names

    Пакет fix-sql-names устраняет конфликт SQL-скриптов при обновлении с версии ПО «zVirt Max» 1.1 до ПО «zVirt Max» 1.2

    • Выполните следующие команды:

    /usr/share/ovirt-engine/dbscripts/engine-psql.sh -f /usr/share/ovirt-engine/dbscripts/upgrade/04_04_1360_add_super_user_backup_management_role.sql
    /usr/share/ovirt-engine/dbscripts/engine-psql.sh -f /usr/share/ovirt-engine/dbscripts/upgrade/04_04_1370_add_super_user_report_management_role.sql
    /usr/share/ovirt-engine/dbscripts/engine-psql.sh -f /usr/share/ovirt-engine/dbscripts/upgrade/04_04_1380_add_super_user_v2v_management_role.sql

    Данные команды добавляют недостающие записи в БД.

    Чтобы проверить успешность добавления недостающих записей, выполните команду:

    /usr/share/ovirt-engine/dbscripts/engine-psql.sh -c  "
    SELECT role_id, action_group_id
    FROM roles_groups
    WHERE role_id = (SELECT id FROM roles WHERE name = 'SuperUser')
      AND action_group_id IN (801, 802, 803);
    "

    Пример корректного вывода команды для проверки наличия записей:

                   role_id                | action_group_id
    --------------------------------------+-----------------
     00000000-0000-0000-0000-000000000001 |             801
     00000000-0000-0000-0000-000000000001 |             802
     00000000-0000-0000-0000-000000000001 |             803
    (3 rows)
  15. Подключитесь по SSH к хосту с ролью HostedEngine.

  16. Остановите ВМ HostedEngine:

    hosted-engine --vm-shutdown
  17. Дождитесь остановки ВМ HostedEngine. Статус можно проверить следующей командой:

    hosted-engine --vm-status
  18. После остановки (в статусе указано значение down) запустите ВМ HostedEngine:

    hosted-engine --vm-start
    Ожидаемый статус ВМ HostedEngine
    Engine status: {"vm": "up", "health": "good", "detail": "Up"}
  19. Отключите режим глобального обслуживания:

    hosted-engine --set-maintenance --mode=none
    hosted-engine --vm-status

    В выводе должно отсутствовать уведомление:
    !! Cluster is in GLOBAL MAINTENANCE mode !!

Обновление Менеджера управления на ВМ HostedEngine завершено.

4. Обновление хоста

Алгоритм обновления хоста является идентичным для всех типов хостов:

  • хоста с ролью HostedEngine;

  • стандартного хоста;

  • хоста с ВМ HostedEngine.

Перед обновлением хостов кластера учтите следующие особенности и ограничения:

  • Обновление необходимо производить по одному кластеру.

  • Если в кластере включена миграция, виртуальные машины автоматически мигрируют на другой хост в кластере.

  • В кластере должно быть достаточно памяти для миграции виртуальных машин. В противном случае процесс миграция остановится и завершится сбоем. Уменьшить использование памяти можно путем выключения виртуальных машин в кластере.

  • Виртуальные машины, закрепленные за хостами, не могут мигрировать. Такие виртуальные машины должны быть выключены вручную.

  • ВМ HostedEngine не может мигрировать на стандартные хосты, поэтому убедитесь, что в кластере с ВМ HostedEngine есть хотя бы один дополнительный хост с ролью HostedEngine.

Если в системе есть только один хост с ролью HostedEngine, то ВМ HostedEngine на этом хосте необходимо будет принудительно выключать на время обновления этого хоста.
Для обновления хоста zVirt Max до актуальной версии 1.2 необходимо выполнить следующие действия:
  1. Подготовьте репозитории с обновлениями, если действия по подготовке репозиториев ранее не были выполнены.

  2. Проверьте, что репозитории подключены правильно: выводы следующих команд не должны содержать ошибки, состояние репозиториев zVirt Max 1.2 должно быть в статусе «Включено», репозитории РЕД ОС не должны быть подключены:

    dnf repolist all
    dnf clean all
    dnf makecache
  3. Проверьте установку дополнительных модулей с помощью команды:

    dnf module list

    При наличии модулей отключите их:

    dnf -y module disable <module_name>

    Или убедитесь, что в конфигурации репозитория включена опция module_hotfixes=1:

    grep "module_hotfixes" /etc/yum.repos.d/*
  4. Выключите ВСЕ виртуальные машины, которые привязаны к данному хосту или мигрируйте их на другой хост, который не участвует в обновлении.

    Если во время обновления хотя бы одна виртуальная машина будет включена, то при обновлении хоста возникнет ошибка: Error: Running QEMU processes found, cannot upgrade Vdsm, которая не позволит завершить обновление.
  5. Если на хосте выполняется ВМ HostedEngine и нет возможности её мигрировать на хост с ролью HostedEngine, то необходимо её принудительно выключить. Для этого на хосте с ролью HostedEngine выполните команду:

    hosted-engine --vm-shutdown
  6. Запустите терминальный мультиплексор и выполните команды обновления пакетов:

    tmux
    dnf update --best --allowerasing

    Если хост использует UEFI, выполните следующую команду обновления пакетов:

    tmux
    dnf update --best --allowerasing --exclude=grub2* --exclude=shim-*
  7. Отключите все официальные репозитории, предоставляемые РЕД ОС:

    sed -i "s|enabled=1|enabled=0|g" /etc/yum.repos.d/RedOS*
  8. Установите дополнительные пакеты исправлений:

    dnf install -y fix-versionlock-symlink
    dnf install -y cloud-init-fix
    Если после выполнения команды возникает ошибка, связанная с отсутствием какого-либо пакета исправлений, скачайте актуальный образ extras из репозитория https://repo-zvirt-max.rockitsoft.ru/repository/1.2 или обратитесь в техническую поддержку.
  9. Выполните переустановку rpm-пакетов хоста:

    dnf -y reinstall vdsm-*
  10. После завершения установки перезапустите сервис vdsm:

    systemctl restart vdsmd.service
  11. Выполните перезагрузку хоста:

    reboot
  12. Включите ВМ, ранее выключенные на данном хосте, или мигрируйте ВМ обратно на этот хост. Если на данном хосте ранее выполнялась ВМ HostedEngine и её принудительно выключили (ввиду отсутствия возможности миграции на хост с ролью HostedEngine), то необходимо её включить:

    hosted-engine --vm-start

Обновление хоста завершено.