Статья содержит инструкцию по ручному отключению отказоустойчивости (HA). Это может потребоваться, например, при повреждении хранилища кластера, когда отключение отказоустойчивости стандартным способом через веб-интерфейс не работает.
Чтобы отключить отказоустойчивость:
- Подключитесь к серверу с платформой по SSH.
-
Подключитесь к БД:
В связи с поэтапным переходом платформы на использование СУБД 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.
MySQLdocker exec -it mysql bash -c "mysql isp -p\$MYSQL_ROOT_PASSWORD"
PostgreSQLdocker exec -it pgsql bash -c "psql -d isp"
-
Получите 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 кластера>;
-
Отключите признак активности HA:
update vm_cluster set ha_enabled=false where id=<ID кластера>;
-
Отключитесь от БД:
\q
-
Подключитесь к контейнеру vm_box:
docker exec -it vm_box bash
-
Отключите службы HA-agent и corosync на узлах. Поочерёдно выполните указанные команды для каждого узла:
vssh <ID узла> 'systemctl stop ha-agent && systemctl disable ha-agent'
vssh <ID узла> 'systemctl stop corosync && systemctl disable corosync'
Пояснения -
Проверьте статусы ВМ на узлах с помощью утилиты virsh. Убедитесь, что одна и та же ВМ не запущена одновременно на двух узлах:
virsh list --all