Перемещение ВМ HostedEngine в другое хранилище

Запланируйте необходимое время простоя виртуальных машин.

Процесс перемещения менеджера виртуализации заключается в развертывании ВМ HostedEngine из резервной копии менеджера zVirt.

Тщательное предварительное планирование стенда исключает необходимость перемещения ВМ HostedEngine.

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

После выполнения процедуры развертывания необходимо произвести настройку хостов.

Остальные хосты и виртуальные машины могут продолжать работать во время процедуры перемещения менеджера виртуализации.

1. Подготовительный этап

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

  2. Развертывание ВМ HostedEngine будет происходит на свободном хосте кластера, для этого потребуется:

    • Перевести выбранный хост в режим обслуживания;

    • Перед развертыванием необходимо выключить действующую ВМ HostedEngine.

  3. На время обновления отключите политику ограничения на хостах через Портал администрирования.

    Отключение политики ограничения:

    • Перейдите Ресурсы  Кластеры;

    • Выберите нужный кластер;

    • Нажмите на кнопку Изменить;

    • Перейдите на вкладку Политика ограничения;

    • Выключите опцию Включить ограничения;

    • Нажмите на кнопку ОК.

  4. Снимите ограничение на количество сессий для пользователя admin.

    Отключение ограничений на количество сессий:

    • Перейдите Управление  Пользователи;

    • Выберите пользователя admin;

    • Нажмите на кнопку Управление ограничениями;

    • В строке Количество сессий установите значение - 0;

    • Нажмите на кнопку ОК.

  5. Запишите MAC-адрес ВМ HostedEngine, если вы используете DHCP и хотите использовать тот же IP-адрес. Сценарий развертывания запрашивает эту информацию.

  6. Перед развертыванием необходимо подготовить новый домен хранения. Сценарий развертывания запросит информацию о новом хранилище для ВМ HostedEngine, переименует старый домен хранения и сохранит его данные для аварийного восстановления.

  7. Домен хранения, из которого перемещается ВМ HostedEngine должен оставаться доступным до окончания всех работ.

  8. Убедитесь, что в кластере установлены последние обновления.

В процессе работ Портал администрирования будет недоступен.

2. Процедура перемещения ВМ HostedEngine

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

  2. Включите режим глобального обслуживания:

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

    hosted-engine --vm-status

    в выводе команды должно быть:

    !! Cluster is in GLOBAL MAINTENANCE mode !!:
  4. Подключитесь по SSH к ВМ HostedEngine.

  5. Остановите сервис ovirt-engine:

    systemctl stop ovirt-engine.service
  6. Cоздайте эталонную резервную копию базы данных менеджера виртуализации:

    engine-backup --scope=all --mode=backup --file=firstbackup.bck --log=firstbackup.log
  7. Сохраните полученные файлы в хранилище вне среды виртуализации.

  8. Выполните команду:

    sudo /usr/share/ovirt-engine/dbscripts/engine-psql.sh -c "select fn_db_delete_config_value('AdminPassword','general');"
  9. Создайте ещё одну резервную копию базы данных менеджера виртуализации:

    engine-backup --scope=all --mode=backup --file=backup.bck --log=backuplog.log
  10. Скопируйте полученные файлы в п.9 на хост выбранный для развертывания, а также в хранилище вне среды виртуализации.

  11. Подключитесь по SSH к хосту, на котором в текущий момент работает ВМ HostedEngine.

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

    hosted-engine --vm-shutdown

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

  13. Подключитесь по SSH к хосту, на котором будет производится развертывание.

  14. Убедитесь, что репозиторий включен и доступен.

  15. Выполните установку пакета ovirt-engine-appliance:

    dnf install -y ovirt-engine-appliance
  16. Перейдите в директорию с резервной копией и запустите процедуру развертывания:

    hosted-engine --deploy --restore-from-file=backup.bck

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

    Continuing will configure this host for serving as hypervisor and will create a local VM with a running engine.
    The provided engine backup file will be restored there, it's strongly recommended to run this tool on an host that wasn't part of the environment going to be restored. If a reference to this host is already contained in the backup file, it will be filtered out at restore time.
    The locally running engine will be used to configure a new storage domain and create a VM there.
    At the end the disk of the local VM will be moved to the shared storage.
    The old hosted-engine storage domain will be renamed, after checking that everything is correctly working you can manually remove it.
    Other hosted-engine hosts have to be reinstalled from the engine to update their hosted-engine configuration.
    Are you sure you want to continue? (Yes, No)
    Renew engine CA on restore if needed?
    Please notice that if you choose Yes, all hosts will have to be later manually reinstalled from the engine.
    Renew CA if needed? (Yes, No)

    выбрать Yes

    Pause the execution after adding this host to the engine?
    You will be able to connect to the restored engine in order to manually review and remediate its configuration.
    This is normally not required when restoring an up to date and coherent backup.
    Pause after adding the host? (Yes, No)
    • на данном этапе необходимо выбрать ответ исходя из конфигурации среды виртуализации. Если на хосте необходимо произвести дополнительные настройки (например, добавить неосновные сети VLAN) выберите - Yes, если в этом нет необходимости выберите - No.

  17. После успешного развертывания подключитесь по SSH к ВМ HostedEngine и проверьте каталог /etc/ovirt-engine-setup.conf.d/ на наличие дополнительных файлов 20-setup-ovirt-post.conf с таким же именем и числом, если файлы есть – удалите их (например, 20-setup-ovirt-post.conf.20210528124601).

  18. Выполните вход на Портал администрирования.

3. Настройка хостов

3.1. Настройка хоста, на котором располагается предыдущая версия ВМ HostedEngine

  1. Удалите хост из кластера.

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

    ovirt-hosted-engine-cleanup
  3. Перезагрузите хост.

  4. Добавьте хост в кластер.

3.2. Настройка хостов для размещения на них ВМ HostedEngine

  1. Перейдите на вкладку Ресурсы  Хосты.

  2. Выберите хост и переведите его в режим обслуживания.

  3. Нажмите на кнопку Настройки, далее Регистрация сертификата.

  4. Дождитесь окончания выполнения операции.

  5. Нажмите на кнопку Настройки, далее Переустановить.

  6. Перейдите на вкладку Hosted Engine.

  7. В выпадающем меню выберите DEPLOY и нажмите OK.

3.3. Настройка остальных хостов

  1. Перейдите на вкладку Ресурсы  Хосты.

  2. Выберите хост и переведите его в режим обслуживания.

  3. Нажмите на кнопку Настройки, далее Регистрация сертификата.

  4. Дождитесь окончания выполнения операции и включите хост.

4. Удаление домена hosted_storage_old

4.1. Требования

  1. Менеджер виртуализации zVirt установлен и запущен;

  2. Отсутствует необходимость в аварийном восстановлении стенда до предыдущей версии;

  3. Выполнена настройка хостов.

4.2. Порядок удаления домена hosted_storage_old

Перейдите на портал администрирования:

  1. Перейдите на вкладку Хранилище  Домены.

    Домен hosted_storage – новый домен, в котором была развернута ВМ HostedEngine.

    Домен hosted_storage_old_20211215T173902 – домен, в котором расположена ВМ HostedEngine предыдущей версии.

  2. Назначьте роль Мастер домену hosted_storage. Выделите домен и в дополнительном меню нажмите Выбрать в качестве основного домена хранения.

  3. Перейдите на вкладку Ресурсы  Центры данных и выберите ваш Центр данных.

  4. Переведите домен hosted_storage_old_20211215T173902 в режим обслуживания.

  5. Отключите домен hosted_storage_old_20211215T173902 c помощью кнопки Отсоединить.

  6. Перейдите на вкладку Хранилище  Домены и удалите домен hosted_storage_old_20211215T173902.

5. Возможные ошибки

5.1. Возможные ошибки при выполнении процедуры развертывания менеджера управления

5.1.1. Ошибка №1

[ ERROR ] Failed to execute stage 'Setup validation': Old AdminPassword found in vdc_options
  1. Очистите хост после неуспешного развертывания командой:

    ovirt-hosted-engine-cleanup
  2. Запустите процедуру развертывания заново:

    hosted-engine --deploy --restore-from-file=backup.bck
  3. Во время развертывания создаётся локальная ВМ HostedEngine, которой в системе присваивается IP-адрес. Необходимо подключиться c хоста к локальной ВМ HostedEngine с помощью SSH, например, ssh root@192.168.1.131 (используйте пароль, который был указан в процессе восстановления).

  4. Узнать IP-адрес ВМ HostedEngine можно подключившись к хосту по SSH в новой сессии с помощью команды virsh net-dhcp-leases default. Также в процессе развертывания администратор оповещается о этапах создания ВМ HostedEngine и развертывания среды виртуализации, в том числе о назначении локальной ВМ HostedEngine IP-адреса.

  5. Во время выполнения развертывания подключитесь к ВМ HostedEngine и выполните команду:

    sudo /usr/share/ovirt-engine/dbscripts/engine-psql.sh -c "select fn_db_delete_config_value('AdminPassword','general');"

    Так как ВМ находится в процессе развертывания, вывод команды может содержать различные ошибки или запрос пароля для пользователя, например:

    psql: error: could not connect to server: Connection refused Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432? could not connect to server: Connection refused Is the server running on host "localhost" (127.0.0.1) and accepting TCP/IP connections on port 5432?`
    Password for user engine:

    Выполняйте команду повторно до успешного выполнения. Пример вывода команды при успешном выполнении:

    fn_db_delete_config_value
    ---------------------------
    (1 row)
  6. После выполнения команды закройте SSH-сессию с ВМ HostedEngine и продолжите развертывание.

5.1.2. Ошибка №2

[ ERROR ] ovirtsdk4.AuthError: Error during SSO authentication access_denied : Cannot authenticate user 'admin@internal': Unable to log in. A number of active sessions is exceeded. Contact the system administrator.`
  1. Подключитесь к хосту с помощью SSH.

  2. Выполните на хосте команду:

    ssh root@192.168.1.131 systemctl restart ovirt-engine

    где 192.168.1.131 – IP-адрес локальной ВМ.

  3. Выключите сетевой экран на хосте:

    systemctl stop firewalld
  4. Создайте SSH-туннель на хосте:

    ssh -f -N -L 172.25.1.123:443:192.168.1.131:443 root@192.168.1.131

    где 172.25.1.123 – IP-адрес хоста;

    где 192.168.1.131 – IP-адрес локальной ВМ.

  5. На рабочей станции из той же сети внесите в файл hosts запись, где IP-адрес_хоста = FQDN_ВМ_HostedEngine и перейдите в браузере по адресу https://fqdn_vm_hostedengine. Войдите на портал администрирования и увеличьте или снимите ограничение на количество сессий для пользователя admin.

  6. Подключитесь к ВМ HostedEngine c помощью SSH.

  7. Выключите процесс, отвечающий за созданный ранее SSH-туннель с помощью команды kill, например:

    kill 30012

    где 30012 – pid процесса.

    Узнать pid процесса можно с помощью команды ps -aux | grep ssh.

  8. Включите сетевой экран на хосте:

    systemctl start firewalld
  9. Продолжите развертывание.

5.1.3. Ошибка №3

code 515: Host FQDN_YOUR_HOST moved to Non-Operational state as host does not meet the cluster's minimum CPU level. Missing CPU features: model_Skylake-Server

Необходимо прервать развертывание и подготовить хост:

  1. Очистите хост:

    ovirt-hosted-engine-cleanup
  2. Добавьте параметр для загрузки ядра:

    grubby --update-kernel=ALL --args="tsx=on"
  3. Очистите кэш:

    rm /var/cache/libvirt/qemu/capabilities/*.xml
  4. Пересоберите initramfs:

    dracut -f
  5. Перезагрузите хост:

    reboot
  6. Повторите процедуру развертывания.

5.1.4. Ошибка №4

[ ERROR ] Please activate the master Storage Domain first.]". HTTP response code is 409.
[ ERROR ] fatal: [localhost]: FAILED! => {"changed": false, "msg": "Fault reason is \"Operation Failed\". Fault detail is \"[Failed to attach Storage due to an error on the Data Center master Storage Domain.\n-Please activate the master Storage Domain first.]\". HTTP response code is 409."}

Данная ошибка может возникнуть если домен хранения с ролью мастер имеет тип NFS. В редких случаях при выполнении обновления встречаются ошибка с блокировкой роли SPM.

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

ip6tables -t nat -A POSTROUTING -o ovirtmgmt -s fd00:1234::/32 -j MASQUERADE,

где fd00:1234::/32 \- IPv6 адрес локальной ВМ HostedEngine.

5.2. Возможные ошибки при настройке хостов

5.2.1. Ошибка №1

После выполнения процедуры описанной в п.3 хост не переходит в состояние UP:

  1. Необходимо подключиться к хосту по SSH и выполнить команду systemctl status ovirt-ha-broker, если в выводе будет ошибка:

    Apr 22 00:54:58 host1.infoland.local ovirt-ha-broker[3373]: ovirt-ha-broker ovirt_hosted_engine_ha.broker.status_broker.StatusBroker.Update ERROR Trying to restart the broker
    Apr 22 00:54:58 host1.infoland.local ovirt-ha-broker[3373]: ovirt-ha-broker ovirt_hosted_engine_ha.broker.storage_broker.StorageBroker ERROR Failed to read metadata from /run/vdsm/stora>
      Traceback (most recent call last):
        File "/usr/lib/python3.6/site-packages/ovirt_hosted_engine_ha/broker/storage_broker.py", line 155, in get_raw_stats
          f = os.open(path, direct_flag | os.O_RDONLY | os.O_SYNC)
      FileNotFoundError: [Errno 2] No such file or directory: '/run/vdsm/storage/487c0928-d008-4963-a2ad-260f1b3dbb59/551a3cff-4209>
    Apr 22 00:54:58 host1.infoland.local ovirt-ha-broker[3373]: ovirt-ha-broker ovirt_hosted_engine_ha.broker.status_broker.StatusBroker.Update ERROR Failed to read state.
      Traceback (most recent call last):
        File "/usr/lib/python3.6/site-packages/ovirt_hosted_engine_ha/broker/storage_broker.py", line 155, in get_raw_stats
          f = os.open(path, direct_flag | os.O_RDONLY | os.O_SYNC)
      FileNotFoundError: [Errno 2] No such file or directory: '/run/vdsm/storage/487c0928-d008-4963-a2ad-260f1b3dbb59/551a3cff-4209>
    
      During handling of the above exception, another exception occurred:
    
      Traceback (most recent call last):
        File "/usr/lib/python3.6/site-packages/ovirt_hosted_engine_ha/broker/status_broker.py", line 94, in run
          self._storage_broker.get_raw_stats()
        File "/usr/lib/python3.6/site-packages/ovirt_hosted_engine_ha/broker/storage_broker.py", line 175, in get_raw_stats
          .format(str(e)))
      ovirt_hosted_engine_ha.lib.exceptions.RequestError: failed to read metadata: [Errno 2] No such file or directory: '/run/vdsm/>
  2. Удалить хост из кластера.

  3. На хосте выполнить команду:

    ovirt-hosted-engine-cleanup
  4. Выполнить поиск метаданных:

     find /rhev -name hosted-engine.metadata
  5. В результате будут найдены файлы (символические ссылки):

    /rhev/data-center/mnt/blockSD/c45a0045-15eb-4f2b-9229-7e12e7a85675/ha_agent/hosted-engine.metadata
    /rhev/data-center/mnt/blockSD/487c0928-d008-4963-a2ad-260f1b3dbb59/ha_agent/hosted-engine.metadata
  6. Необходимо обнаружить "битую" символическую ссылку. В примере файл /rhev/data-center/mnt/blockSD/c45a0045-15eb-4f2b-9229-7e12e7a85675/ha_agent/hosted-engine.metadata ссылался на недоступный файл.

    ls -al /rhev/data-center/mnt/blockSD/c45a0045-15eb-4f2b-9229-7e12e7a85675/ha_agent/hosted-engine.metadata
    lrwxrwxrwx. 1 vdsm kvm 128 Apr 21 23:32 /rhev/data-center/mnt/blockSD/c45a0045-15eb-4f2b-9229-7e12e7a85675/ha_agent/hosted-engine.metadata -> /run/vdsm/storage/c45a0045-15eb-4f2b-9229-7e12e7a85675/58f3cf30-83a2-4836-a810-f66c7ee8adab/4b0e5d9a-4eb7-4ec7-b876-10c5d2fda77e
    ls -la /rhev/data-center/mnt/blockSD/487c0928-d008-4963-a2ad-260f1b3dbb59/ha_agent/hosted-engine.metadata
    lrwxrwxrwx. 1 vdsm kvm 128 Apr 22 00:55 /rhev/data-center/mnt/blockSD/487c0928-d008-4963-a2ad-260f1b3dbb59/ha_agent/hosted-engine.metadata -> /run/vdsm/storage/487c0928-d008-4963-a2ad-260f1b3dbb59/551a3cff-4209-43cc-ae32-b6976c855f77/5fe75aef-3261-47cd-9d81-554fd745583c
  7. Удалить "битую" символическую ссылку:

    rm -rf /rhev/data-center/mnt/blockSD/c45a0045-15eb-4f2b-9229-7e12e7a85675/ha_agent/hosted-engine.metadata
  8. Перезагрузить на хосте сервис:

    systemctl restart ovirt-ha-broker
  9. Убедиться, что сервис поднялся без ошибок:

    systemctl status ovirt-ha-broker
  10. Добавить хост в кластер.