Обновление ПО «zVirt Max»
1. Рекомендуемый алгоритм обновления
-
Переведите в режим обслуживания хост с ролью HostedEngine, на котором в текущий момент времени работает ВМ HostedEngine (обозначен значком
). Дождитесь окончания миграции ВМ HostedEngine. Выполните обновление этого хоста. -
Обновите все свободные хосты с ролью HostedEngine. Под "свободными" понимаются хосты, на которых в текущий момент не выполняется ВМ HostedEngine (обозначены значком
). -
При необходимости обновите версии совместимости кластеров и центров данных.
2. Подготовка репозиториев с обновлениями
Процесс подготовки репозиториев не зависит от архитектуры zVirt Max и в любом режиме работы выполняется идентично.
Порядок действий:
-
Отмонтируйте устаревшие репозитории и удалите их, выполните очистку имеющихся конфигураций репозиториев:
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} -
Организуйте офлайн-репозитории из последних актуальных образов
zvirt_max_certified_XXXXXXXXXXXX.isoиzvirt_max_certified_extras_XXXXXXXXXXXX.isoодним из следующих способов:
2.1. Создание и публикация централизованных офлайн-репозиториев zVirt Max 1.2 на хосте инсталляции c помощью httpd
При организации централизованных офлайн-репозиториев с пакетами обновления zVirt Max 1.2 на одном из хостов инсталляции, все хосты инсталляции будут обновляться из одного источника. В этом случае не требуется подключать ISO-образы отдельно на каждом хосте.
Порядок действий:
-
Выберите хост в инсталляции, который будет использован для публикации репозиториев.
-
Установите и настройте службу httpd на выбранном хосте:
dnf install httpd firewall-cmd --zone=public --permanent --add-service=http firewall-cmd --zone=public --permanent --add-service=https firewall-cmd --reload -
Загрузите ISO-образы zVirt Max 1.2 с предоставленных носителей.
-
Создайте дополнительные каталоги и примонтируйте 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 -
Создайте символические ссылки на примонтированные каталоги репозиториев для публикации их в httpd:
cd /var/www/html/ ln –s /mnt/main/ ln –s /mnt/extras/ -
Запустите службу 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/
-
-
На обновляемых хостах создайте конфигурационный файл репозиториев:
touch /etc/yum.repos.d/offline_zvirtmax_1_2.repo -
Приведите конфигурационный файл репозиториев к следующему виду:
[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-образы.
-
-
По завершении обновления всей инсталляции zVirt Max 1.2 остановите службу httpd на хосте с размещенными репозиториями:
systemctl stop httpd
2.2. Создание локальных файловых офлайн-репозиториев zVirt Max 1.2 на основе ISO-образа
При использовании данного способа в качестве источника обновлений будут использоваться ISO-образы, подключенные к каждому хосту инсталляции. В этом случае все действия по организации офлайн-репозиториев необходимо выполнить на каждом хосте инсталляции.
|
Предполагается, что каталоги /mnt/main, /mnt/extras созданы на этапе установки zVirt Max 1.1. Если каталогов нет, необходимо их создать:
|
Порядок действий:
-
Загрузите ISO-образы zVirt Max 1.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 -
На обновляемых хостах и на ВМ HostedEngine (в случае архитектуры развертывания HostedEngine) создайте конфигурационный файл репозиториев:
touch /etc/yum.repos.d/offline_zvirtmax_1_2.repo -
Приведите конфигурационный файл репозиториев к следующему виду:
[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. Обновление Менеджера управления
-
Если Менеджер управления развернут в архитектуре HostedEngine, включите на хосте с ВМ HostedEngine режим глобального обслуживания кластера в разделе веб-интерфейса либо с помощью командной строки, подключившись по SSH к хосту и выполнив следующие команды:
hosted-engine --set-maintenance --mode=global hosted-engine --vm-statusУбедитесь, что включен режим глобального обслуживания - в выводе должна присутствовать следующая строка:
!! Cluster is in GLOBAL MAINTENANCE mode !! -
Подключитесь по SSH к ВМ HostedEngine.
-
Создайте резервную копию базы данных Менеджера управления:
engine-backup --mode=backup --file=/usr/share/ovirt-engine/backup.tgz --log=/var/log/ovirt-engine/backup.logСохраните полученные файлы в хранилище вне среды виртуализации.
-
Удалите все зафиксированные версии пакетов из списка
versionlock.listи убедитесь, что список пуст с помощью команд:dnf versionlock clear dnf versionlock list -
Подготовьте репозитории с обновлениями на ВМ HostedEngine (если действия по подготовке репозиториев ранее не были выполнены).
Если на ВМ HostedEngine недостаточно места, выполните подготовку централизованных офлайн-репозиториев. -
Проверьте, что репозитории подключены правильно: выводы следующих команд не должны содержать ошибки, состояние репозиториев zVirt Max 1.2 должно быть в статусе «Включено», репозитории РЕД ОС не должны быть подключены:
dnf repolist all dnf clean all dnf makecache -
Проверьте установку дополнительных модулей с помощью команды:
dnf module listПри наличии модулей отключите их:
dnf -y module disable <module_name>Или убедитесь, что в конфигурации репозитория включена опция
module_hotfixes=1:grep "module_hotfixes" /etc/yum.repos.d/* -
Запустите терминальный мультиплексор и выполните команды обновления пакетов:
tmux dnf update --best --allowerasing -
Отключите все официальные репозитории, предоставляемые РЕД ОС:
sed -i "s|enabled=1|enabled=0|g" /etc/yum.repos.d/RedOS* -
Переустановите rpm-пакеты сервиса ovirt-engine:
dnf -y reinstall python3-ovirt-engine-lib ovirt-* -
Установите дополнительные пакеты исправлений:
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 -
Если ранее был заменен 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"
-
-
Запустите установку Engine:
engine-setup --offline -
Дождитесь окончания установки.
В случае, если установка пакета
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) -
-
Подключитесь по SSH к хосту с ролью HostedEngine.
-
Остановите ВМ HostedEngine:
hosted-engine --vm-shutdown -
Дождитесь остановки ВМ HostedEngine. Статус можно проверить следующей командой:
hosted-engine --vm-status -
После остановки (в статусе указано значение down) запустите ВМ HostedEngine:
hosted-engine --vm-startОжидаемый статус ВМ HostedEngineEngine status: {"vm": "up", "health": "good", "detail": "Up"} -
Отключите режим глобального обслуживания:
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 должно быть в статусе «Включено», репозитории РЕД ОС не должны быть подключены:
dnf repolist all dnf clean all dnf makecache -
Проверьте установку дополнительных модулей с помощью команды:
dnf module listПри наличии модулей отключите их:
dnf -y module disable <module_name>Или убедитесь, что в конфигурации репозитория включена опция
module_hotfixes=1:grep "module_hotfixes" /etc/yum.repos.d/* -
Выключите ВСЕ виртуальные машины, которые привязаны к данному хосту или мигрируйте их на другой хост, который не участвует в обновлении.
Если во время обновления хотя бы одна виртуальная машина будет включена, то при обновлении хоста возникнет ошибка: Error: Running QEMU processes found, cannot upgrade Vdsm, которая не позволит завершить обновление. -
Если на хосте выполняется ВМ HostedEngine и нет возможности её мигрировать на хост с ролью HostedEngine, то необходимо её принудительно выключить. Для этого на хосте с ролью HostedEngine выполните команду:
hosted-engine --vm-shutdown -
Запустите терминальный мультиплексор и выполните команды обновления пакетов:
tmux dnf update --best --allowerasingЕсли хост использует UEFI, выполните следующую команду обновления пакетов:
tmux dnf update --best --allowerasing --exclude=grub2* --exclude=shim-* -
Отключите все официальные репозитории, предоставляемые РЕД ОС:
sed -i "s|enabled=1|enabled=0|g" /etc/yum.repos.d/RedOS* -
Установите дополнительные пакеты исправлений:
dnf install -y fix-versionlock-symlink dnf install -y cloud-init-fixЕсли после выполнения команды возникает ошибка, связанная с отсутствием какого-либо пакета исправлений, скачайте актуальный образ extras из репозитория https://repo-zvirt-max.rockitsoft.ru/repository/1.2 или обратитесь в техническую поддержку. -
Выполните переустановку rpm-пакетов хоста:
dnf -y reinstall vdsm-* -
После завершения установки перезапустите сервис vdsm:
systemctl restart vdsmd.service -
Выполните перезагрузку хоста:
reboot -
Включите ВМ, ранее выключенные на данном хосте, или мигрируйте ВМ обратно на этот хост. Если на данном хосте ранее выполнялась ВМ HostedEngine и её принудительно выключили (ввиду отсутствия возможности миграции на хост с ролью HostedEngine), то необходимо её включить:
hosted-engine --vm-start
Обновление хоста завершено.