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

Ошибки при обновлении с помощью скрипта zvirt-update

1. Проблема

При обновлении zVirt до версии 4.2 выполнение скрипта zvirt-update завершается ошибкой

2. Решение

Если не удаётся выявить и исправить причину неудачного обновления с помощью zvirt-update, можно попытаться выполнить ручное обновление по процедуре, описанной ниже.

2.1. Алгоритм обновления

Перед обновлением важно учесть следующее:

  • В кластере, использующем функции программно-определяемой сети, при нарушении порядка обновления возможна недоступность ВМ по сети до момента обновления всех гипервизоров и менеджера управления.

  • Ошибки, допущенные при выполнении обновления менеджера управления, несут риск потери управления над средой виртуализации или данных. Перед обновлением сделайте резервную копию данных менеджера управления, прочтите данную инструкцию полностью и только потом приступайте к выполнению.

Обновление zVirt в режиме Hosted Engine
  1. Обновите стандартные хосты.

  2. Обновите все свободные хосты с ролью HostedEngine. Под "свободными" понимаются хосты, на которых в текущий момент не выполняется ВМ HostedEngine.

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

  4. Обновите ВМ HostedEngine.

Обновление zVirt в режиме Standalone
Обновление zVirt в режиме Standalone All-in-One

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

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

  • Хост, на котором может выполняться ВМ HostedEngine (хост с ролью Hosted Engine).

  • Хост, на котором не может выполняться ВМ HostedEngine (стандартный хост).

Порядок действий:
  1. Переведите хост в режим обслуживания. Дождитесь миграции виртуальных машин с этого хоста. Если на хосте есть привязанные к нему виртуальные машины, выключите их. Если обновляемый хост является единственным хостом с ролью Hosted Engine и на нем выполняется ВМ HostedEngine, то необходимо её принудительно выключить:

    • Подключитесь к этому хосту по SSH и выполните следующую команду:

      hosted-engine --vm-shutdown
    • Дождитесь выключения ВМ HostedEngine. Её статус можно проверить с помощью следующей команды:

      hosted-engine --vm-status
  2. Удалите репозиторий zvirt-repos-stable и очистите директорию /etc/yum.repos.d/:

    dnf remove -y zvirt-repos-stable
    rm -rf /etc/yum.repos.d/*
    dnf clean all
  3. С помощью команды wget скачайте пакет zvirt-repos-stable с новыми репозиториями и установите его:

    wget --user=<имя_пользователя> --password=<пароль> https://repo-zvirt.orionsoft.ru/repository/zvirt-4/4.2/packages/zvirt-repos-stable-4.2-X.XXXX.zvirt.el8.noarch.rpm
    
    dnf install -y zvirt-repos-stable-4.2-X.XXXX.zvirt.el8.noarch.rpm

    <имя_пользователя> и <пароль> берутся из лицензионного сертификата, выданного при покупке продукта

  4. Включите репозитории:

    dnf config-manager --enable "*"
  5. Настройте доступ к репозиториям:

    zvirt-credentials.py -u <имя_пользователя> -p <пароль>

    Если утилита не найдена, переустановите её:

    wget --user=<имя_пользователя> --password=<пароль> https://repo-zvirt.orionsoft.ru/repository/zvirt-4/4.2/packages/zvirt-credentials-0.1.1-1.33204.zvirt.el8.noarch.rpm (1)
    dnf install -y zvirt-credentials-0.1.1-1.33204.zvirt.el8.noarch.rpm
    1 <имя_пользователя> и <пароль> берутся из лицензионного сертификата, выданного при покупке продукта.
  6. Удалите все зафиксированные версии rpm-пакетов из списка versionlock.list и убедитесь, что список пуст:

    dnf versionlock clear
    dnf versionlock list
    rm -rf /etc/dnf/modules.d/*
  7. Выполните следующие команды для удаления старого релиза:

    rm -rf /etc/dnf/protected.d/*-release-host-node.conf
    dnf remove -y zvirt-release-host-node
    dnf install -y zvirt-release-host-node
  8. Обновите или установите (если он отсутствует) метапакет zvirt-hosted-engine:

    dnf update/install -y zvirt-hosted-engine --allowerasing
  9. Выполните команду обновления пакетов.:

    dnf -y update --allowerasing
  10. После завершения установки перезапустите сервис vdsmd:

    systemctl restart vdsmd.service
  11. Выведите хост из режима обслуживания.

  12. Если перед обновлением хоста была выключена ВМ HostedEngine:

    1. перезапустите сервисы HA:

      systemctl restart ovirt-ha-broker.service
      systemctl restart ovirt-ha-agent.service
    2. запустите ВМ HostedEngine:

      hosted-engine --vm-start
    3. Убедитесь в корректности статуса ВМ HostedEngine (для запуска требуется некоторое время)

      hosted-engine --vm-status

На этом обновление хоста завершено.

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

2.3.1. Архитектура HostedEngine

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

    hosted-engine --set-maintenance --mode=global
  2. Убедитесь, что глобального обслуживания активирован:

    hosted-engine --vm-status

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

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

  4. Удалите репозиторий zvirt-repos-stable и очистите директорию /etc/yum.repos.d/:

    dnf remove -y zvirt-repos-stable
    rm -rf /etc/yum.repos.d/*
    dnf clean all
  5. С помощью команды wget скачайте пакет zvirt-repos-stable с новыми репозиториями и установите его:

    wget --user=<имя_пользователя> --password=<пароль> https://repo-zvirt.orionsoft.ru/repository/zvirt-4/4.2/packages/zvirt-repos-stable-4.2-X.XXXX.zvirt.el8.noarch.rpm
    
    dnf install -y zvirt-repos-stable-4.2-X.XXXX.zvirt.el8.noarch.rpm

    <имя_пользователя> и <пароль> берутся из лицензионного сертификата, выданного при покупке продукта

  6. Включите репозитории:

    dnf config-manager --enable "*"
  7. Настройте доступ к репозиториям:

    zvirt-credentials.py -u <имя_пользователя> -p <пароль>

    Если утилита не найдена, переустановите её:

    wget --user=<имя_пользователя> --password=<пароль> https://repo-zvirt.orionsoft.ru/repository/zvirt-4/4.2/packages/zvirt-credentials-0.1.1-1.33204.zvirt.el8.noarch.rpm (1)
    dnf install -y zvirt-credentials-0.1.1-1.33204.zvirt.el8.noarch.rpm
    1 <имя_пользователя> и <пароль> берутся из лицензионного сертификата, выданного при покупке продукта.
  8. Создайте dump ovirt-engine:

    su - postgres -c "pg_dumpall > ~/pgdump_file.sql"
  9. Остановите сервисы postgresql и ovirt-engine:

    systemctl stop postgresql.service ovirt-engine.service
  10. Выполните перенос конфигурации postgresql:

    mv /var/lib/pgsql/data /var/lib/pgsql/data_old
  11. Удалите все зафиксированные версии пакетов из списка versionlock.list и убедитесь, что список пуст:

    dnf versionlock clear
    dnf versionlock list
    rm -rf /etc/dnf/modules.d/*
  12. Обновите или установите (если он не установлен) пакет zvirt-appliance:

    dnf update/install -y zvirt-appliance --allowerasing
  13. Инициализируйте postgresql и восстановите базы данных

    postgresql-setup --initdb
    cp /var/lib/pgsql/data_old/pg_hba.conf /var/lib/pgsql/data/
    cp /var/lib/pgsql/data_old/pg_ident.conf /var/lib/pgsql/data/
    cp /var/lib/pgsql/data_old/postgresql.conf /var/lib/pgsql/data/
    systemctl start postgresql.service
    su - postgres -c 'psql -f ~/pgdump_file.sql postgres'
  14. Запустите настройку Менеджера управления:

    engine-setup --offline
  15. Выполните команду обновления пакетов:

    dnf -y update --allowerasing
  16. После завершения настройки перезапустите сервис ovirt-engine:

    systemctl restart ovirt-engine.service
  17. После обновления Менеджера управления на хосте в ВМ HostedEngine выключите режим глобального обслуживания:

    hosted-engine --set-maintenance --mode=none
  18. Убедитесь что глобальное обслуживание выключено

    hosted-engine --vm-status

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

2.3.2. Архитектура Standalone (All-in-one)

Порядок действий:
  1. Если Менеджер управления развернут в варианте All-in-one, переведите хост с Менеджером управления в режим обслуживания.

    Дождитесь миграции виртуальных машин с этого хоста. Если на хосте есть привязанные к нему виртуальные машины, выключите их.

  2. Подключитесь по SSH к хосту с Менеджером управления.

  3. Удалите репозиторий zvirt-repos-stable и очистите директорию /etc/yum.repos.d/:

    dnf remove -y zvirt-repos-stable
    rm -rf /etc/yum.repos.d/*
    dnf clean all
  4. С помощью команды wget скачайте пакет zvirt-repos-stable с новыми репозиториями и установите его:

    wget --user=<имя_пользователя> --password=<пароль> https://repo-zvirt.orionsoft.ru/repository/zvirt-4/4.2/packages/zvirt-repos-stable-4.2-X.XXXX.zvirt.el8.noarch.rpm
    
    dnf install -y zvirt-repos-stable-4.2-X.XXXX.zvirt.el8.noarch.rpm

    <имя_пользователя> и <пароль> берутся из лицензионного сертификата, выданного при покупке продукта

  5. Включите репозитории:

    dnf config-manager --enable "*"
  6. Настройте доступ к репозиториям:

    zvirt-credentials.py -u <имя_пользователя> -p <пароль>

    Если утилита не найдена, переустановите её:

    wget --user=<имя_пользователя> --password=<пароль> https://repo-zvirt.orionsoft.ru/repository/zvirt-4/4.2/packages/zvirt-credentials-0.1.1-1.33204.zvirt.el8.noarch.rpm (1)
    dnf install -y zvirt-credentials-0.1.1-1.33204.zvirt.el8.noarch.rpm
    1 <имя_пользователя> и <пароль> берутся из лицензионного сертификата, выданного при покупке продукта.
  7. Создайте dump ovirt-engine:

    su - postgres -c "pg_dumpall > ~/pgdump_file.sql"
  8. Остановите сервисы postgresql и ovirt-engine:

    systemctl stop postgresql.service ovirt-engine.service
  9. Выполните перенос конфигурации postgresql:

    mv /var/lib/pgsql/data /var/lib/pgsql/data_old
  10. Удалите все зафиксированные версии пакетов из списка versionlock.list и убедитесь, что список пуст:

    dnf versionlock clear
    dnf versionlock list
    rm -rf /etc/dnf/modules.d/*
  11. Обновите релиз:

    rm -rf /etc/dnf/protected.d/*-release-host-node.conf
    dnf remove -y zvirt-release-host-node
    dnf install -y zvirt-release-host-node
  12. Обновите или установите (если не установлен) пакет zvirt-standalone:

    dnf update/install -y zvirt-standalone --allowerasing
  13. Инициализируйте postgresql и восстановите БД

    postgresql-setup --initdb
    cp /var/lib/pgsql/data_old/pg_hba.conf /var/lib/pgsql/data/
    cp /var/lib/pgsql/data_old/pg_ident.conf /var/lib/pgsql/data/
    cp /var/lib/pgsql/data_old/postgresql.conf /var/lib/pgsql/data/
    systemctl start postgresql.service
    su - postgres -c 'psql -f ~/pgdump_file.sql postgres'
  14. Запустите настройку Менеджера управления:

    engine-setup --offline
  15. Выполните команду обновления пакетов:

    dnf -y update --allowerasing
  16. После завершения настройки перезапустите сервис ovirt-engine:

    systemctl restart ovirt-engine.service
  17. Если Менеджер управления развернут в варианте All-in-One:

    1. Перезапустите сервис vdsmd:

      systemctl restart vdsmd.service
    2. После того как портал администрирования станет доступен, выведите хост из режима обслуживания.