Включение режима высокой доступности менеджера управления

Аннотация

В данной инструкции представлен процесс развертывания менеджера управления zVirt в режиме высокой доступности (High Available).

Функция обеспечения высокой доступности менеджера управления является экспериментальной и будет доработана в будущих релизах.

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

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

1. Предварительные требования

  1. Для отказоустойчивой работы платформы виртуализации и обеспечения корректной работы EngineFailOver рекомендуется заполнить файл /etc/hosts на исходном менеджере управления со списком всех серверов платформы виртуализации и менеджера управления.

    Шаблон файла /etc/hosts:

    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    # Внести список IP-адресов и FQDN-имен серверов платформы виртуализации и исходного HostedEngine
    # {IP-адрес} {FQDN-имя сервера} {Имя-сервера}
  2. Настройте полное резервное копирование конфигурации Менеджера управления по расписанию.

2. Установка и запуск

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

  2. Установите пакет he-failover:

    dnf install -y he-failover-1.0.3-1.42253.zvirt.el8.noarch.rpm

  3. Загрузите пакет zvirt-appliance той же версии, которую имеет текущий Менеджер управления, и разместите его в каталоге /usr/share/ansible/he-failover/roles/he-failover/files/repos/appliance/. Например, для zVirt 4.2:

    wget --user=<username> --password=<password>  \
        https://repo-zvirt.orionsoft.ru/repository/zvirt-4/4.2/iso/zvirt-appliance-4.2.rpm \
        -O /usr/share/ansible/he-failover/roles/he-failover/files/repos/appliance/zvirt-appliance-4.2.rpm

    <username> и <password>, соответственно, логин и пароль для доступа к репозиторию.

  4. Заполните инвентарный файл /usr/share/ansible/he-failover/roles/he-failover/inventory/EngineFailOver.

    Шаблон инвентарного файла:

    localhost       ansible_connection=local
    
    [engines]
    HostedEngine ansible_host=<новый IP Менеджера> ip_peer=<IP резервного Менеджера> ansible_ssh_host=<IP исходного Менеджера>
    HostedEngine2 ansible_host=<IP резервного Менеджера> ip_peer=<новый IP Менеджера>
    
    [engines:vars]
    vip=<IP исходного Менеджера>
    
    [all:vars]
    # Общие переменные Ansible
    ansible_connection=ssh
    ansible_user=root
    # Переменные Менеджера управления
    ovirt_fqdn=<FQDN исходного Менеджера>
    ovirt_username=<учетная запись администратора>
    datacenter=<имя центра данных для размещения резервного Менеджера>
    cluster=<имя кластера для размещения резервного Менеджера>
    storage_domain=<имя домена хранения для диска резервной ВМ HE>
    # Переменные для сетевой конфигурации
    netmask=255.255.255.0
    dns_servers='<DNS сервер>'
    gateway=<Шлюз по умолчанию>

    Пример инвентарного файла:

    localhost       ansible_connection=local
    
    [engines]
    HostedEngine    ansible_host=10.252.12.100      ip_peer=10.252.12.20    ansible_ssh_host=10.252.12.10
    HostedEngine2   ansible_host=10.252.12.20       ip_peer=10.252.12.100
    
    [engines:vars]
    vip=10.252.12.10
    
    [all:vars]
    # Ansible
    ansible_connection=ssh
    ansible_user=root
    # Engine
    ovirt_fqdn=engine.vlab.local
    ovirt_username=admin@zvirt@internalsso
    datacenter=Default
    cluster=failover-cl
    storage_domain=hosted_storage
    # Network
    netmask=255.255.255.0
    dns_servers='10.252.3.250'
    gateway=10.252.12.254
  5. Запустите развертывание решения:

    zvirt-he-failover --deploy
  6. Ответьте на вопросы в процессе развертывания:

    1. Измените или подтвердите FQDN исходного Менеджера

      Enter Engine FQDN [engine.vlab.local]:
    2. Введите пароль администратора для доступа к исходному менеджеру:

      Enter the password for [admin@zvirt@internalsso]:
    3. Введите пароль для root-доступа к исходному Менеджеру

      Enter password for SSH acces to Engine under [root]:
    4. Укажите, есть ли доступ к онлайн репозиториям:

      Do you have access to External/Internet repositories? [no]:
    5. Подтвердите начало установки отказоустойчивого Менеджера управления:

      Do you want to start installing EngineFailOver [yes/no]?:
      yes
  7. Дождитесь успешного окончания развертывания.

3. Тестирование конфигурации

3.1. Переключение с исходного сервера HostedEngine на целевой HostedEngine2

  1. Выключить исходный сервер HostedEngine:

    hosted-engine --vm-shutdown
  2. Через 5 минут выполнить следующие проверки:

    1. Работа кластерного IP-адреса на целевом сервере HostedEngine2:

      ip a

      Ожидаемый результат:

      • кластерный IP-адрес назначен на целевой сервер HostedEngine2

    2. Статус на целевом сервере HostedEngine2:

      cat /opt/zvirt/he-failover/mode

      Ожидаемый результат:

      • целевой сервер HostedEngine2 в статусе MASTER

    3. Статус таймера ebackup.timer на целевом сервере HostedEngine2:

      systemctl status ebackup.timer

      Ожидаемый результат:

      • Таймер в статусе active (waiting)

3.2. Обратное переключение целевого сервера HostedEngine2 на исходный HostedEngine

  1. Включить исходный сервер HostedEngine:

    hosted-engine --vm-start
  2. Через 5 минут выполнить следующие проверки:

    1. Работа кластерного IP-адреса на исходном сервере HostedEngine:

      ip a

      Ожидаемый результат:

      • кластерный IP-адрес назначен на исходный сервер HostedEngine

    2. Статус на исходном сервере HostedEngine:

      cat /opt/zvirt/he-failover/mode

      Ожидаемый результат:

      • исходный сервер HostedEngine в статусе MASTER

      • целевой сервер HostedEngine2 в статусе SLAVE

    3. Статус таймера ebackup.timer на исходном сервере HostedEngine:

      systemctl status ebackup.timer

      Ожидаемый результат:

      • Таймер в статусе active (waiting)

    4. Cоздание резервных копии с исходного сервера HostedEngine на целевой HostedEngine2 в директорию /opt/zvirt/he-failover/backup/

      ls -l /opt/zvirt/he-failover/backup

      Ожидаемый результат:

      • Созданы актуальные резервные копии на целевом сервере HostedEngine2 в директории /opt/zvirt/he-failover/backup/

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

4.1. Ошибка 1

Развертывание завершается ошибкой на этапе TASK [EngineFailOver : Wait 180 seconds, but only start checking after 300 seconds].

В выводе содержится сообщение следующего вида:

fatal: [HostedEngine2]: FAILED! => {"changed": false, "elapsed": 481, "msg": "timed out waiting for ping module test: Failed to connect to the host via ssh: ssh: connect to host 10.252.12.20 port 22: No route to host"}

Вероятные причины ошибки:

  1. В инвентарном файле был неверно указан ip-адрес для резервного менеджера управления (например, адрес из недоступной подсети).

    Чтобы убедиться в этом и исправить ошибку откройте /usr/share/ansible/he-failover/roles/he-failover/inventory/EngineFailOver и проверьте параметр ansible_host для HostedEngine2. При необходимости исправьте.

    Также убедитесь, что ansible_host для HostedEngine2 соответствует ip_peer для HostedEngine.

  2. IP-адрес резервного менеджера управления применяется к несуществующему интерфейсу.

    Для проверки этой гипотезы:

    1. На портале администрирования, перейдите в Ресурсы  Виртуальные машины и убедитесь что ВМ HostedEngine2 создана.

    2. Подключитесь к консоли ВМ HostedEngine2 (выделить ВМ, нажать консоль и открыть скачанный файл).

    3. С помощью ip address проверьте назначен ли указанный в инвентарном файле IP-адрес.

    4. Если адрес не назначен, вероятно проблема связана с некорректным указанием имени интерфейса резервного Менеджера управления в файле переменных. Запомните имя интерфейса, назначенное ВМ HostedEngine2. В примере enp1s0.

      ifname
    5. Вернитесь в консоль хоста, на котором запускалось развертывание.

    6. Откройте файл переменных /usr/share/ansible/he-failover/roles/he-failover/inventory/host_vars/HostedEngine2 и при необходимости исправьте следующие значения:

      # KeepAlived
      state: BACKUP
      interface: enp1s0 (1)
      priority: 50
      mode: slave
      
      # Cloud-init
      disks:
        name: he2_virtio_disk
        type: virtio
      nics:
        name: vnet0
        type: virtio
        profile: ovirtmgmt
      cloud_init:
        user_name: root
        nic_boot_protocol: static
        nic_name: enp1s0 (1)
      1 Необходимо указать корректное имя интерфейса.

Устранение ошибки после исправления переменных:

  1. В консоли хоста, на котором запускалось развертывание выполните откат ошибочного развертывания:

    zvirt-he-failover --rollback
  2. Повторно запустите развертывание:

    zvirt-he-failover --deploy