База знаний VMmanager

Как отключить отказоустойчивость

Статья содержит инструкцию по ручному отключению отказоустойчивости (HA). Это может потребоваться, например, при повреждении хранилища кластера, когда отключение отказоустойчивости стандартным способом через веб-интерфейс не работает.

Чтобы отключить отказоустойчивость:

  1. Подключитесь к серверу с платформой по SSH.
  2. Подключитесь к БД:

    В связи с поэтапным переходом платформы на использование СУБД PostgreSQL, разные экземпляры VMmanager могут использовать разные СУБД:

    • VMmanager Hosting — MySQL;
    • VMmanager Infrastructure:
      • для новых установок на ОС Astra Linux, начиная с версии VMmanager 2023.06.1 — PostgreSQL;
      • в остальных случаях — MySQL.

    Чтобы определить тип СУБД, выполните на сервере с платформой команду: 

    docker ps --filter name=pgsql
    Пример ответа
    CONTAINER ID   IMAGE         COMMAND                  CREATED      STATUS      PORTS      NAMES
    3213c5dc94d0   postgres:12   "docker-entrypoint.s…"   5 days ago   Up 4 days   5432/tcp   pgsql

    Если вывод команды содержит информацию о контейнере, платформа использует PostgreSQL, если ответ пустой — MySQL.

     
    MySQL
    docker exec -it mysql bash -c "mysql isp -p\$MYSQL_ROOT_PASSWORD"
    PostgreSQL
    docker exec -it pgsql bash -c "psql -d isp"
  3. Получите ID узлов кластера:

    select n.id as node_id,n.name as node_name from vm_node n left join vm_cluster v on n.cluster=v.id where v.ha_enabled=1 and v.id=<ID кластера>;
  4. Отключите признак активности HA:

    update vm_cluster set ha_enabled=false where id=<ID кластера>;
  5. Отключитесь от БД:

    \q
  6. Подключитесь к контейнеру vm_box:

    docker exec -it vm_box bash
  7. Отключите службы HA-agent и corosync на узлах. Поочерёдно выполните указанные команды для каждого узла:

    vssh <ID узла> 'systemctl stop ha-agent && systemctl disable ha-agent'
    
    vssh <ID узла> 'systemctl stop corosync && systemctl disable corosync'
    Пояснения
  8. Проверьте статусы ВМ на узлах с помощью утилиты virsh. Убедитесь, что одна и та же ВМ не запущена одновременно на двух узлах:

    virsh list --all