Перейти к основному содержимому

Как управлять питанием ВМ и подключаться к консоли

Команда питания в vStack Center — это не переключатель, а короткая транзакция. vStack Center проверяет права, состояние ВМ, квоты ВЦОД (виртуального центра обработки данных) и overcommit кластера, выбирает узел, ставит блокировку, записывает желаемое состояние и отправляет команду агенту узла. Блокировка снимается, когда приходит ответ агента, — до этого момента другие операции над этой ВМ отбиваются.

С 3.1.1 перед запуском добавлен ещё один шаг: vStack Center спрашивает у узлов, не работает ли машина уже где-то. Раньше решение принималось только по записи в базе центра, и при её расхождении с реальностью команда уходила на второй узел — два гипервизора писали в один диск. Правило опроса такое:

  • машина жива на другом узле — запуск отклоняется кодом -461. Номер узла в сообщение не подставляется намеренно: арендатору не полагается узнавать топологию кластера из текста ошибки, узел уходит в журнал службы;
  • машина жива на том узле, куда её и запускают, — приходит привычный -457 «уже запущена»;
  • узлы промолчали, ответили не то или не ответили вовсе — запуск не блокируется. Недоступный узел не должен мешать поднимать машины после сбоя, а это ровно тот сценарий, ради которого запуск и нужен.

Опрос идёт веером сразу всем узлам под общим бюджетом времени (по умолчанию 10 секунд) — на это время ответ на запуск приходит позже. Автоматический подъём машин подчиняется тому же правилу.

Выбор узла — самая содержательная часть запуска. При NVMe-режиме дисков (nvme = true) диски доступны по сети, поэтому ВМ можно поднять на любом online-узле: без явно выбранного узла vStack Center сам берёт наименее загруженный. При virtio-blk (nvme = false) диск виден только узлу, который держит пул, и запуск где-либо ещё отклоняется.

Консоль устроена иначе: vStack Center ничего не спрашивает у узла. Он читает учётные данные кластера, выдаёт адрес консоли с разовым токеном и перед выдачей сбрасывает предыдущие соединения на этом адресе и порте — новая сессия выбивает прежнюю.

Операции над машиной вызываются кнопкой «Actions» — она есть и на карточке ВМ, и в списке ВМ.

Как запустить ВМ​

Доступ: Cluster master — любая ВМ кластера; обычный пользователь — ВМ из ВЦОД, где у него роль с role_id ≤ 3.

  1. Убедитесь, что ВМ остановлена или только что создана: состояние видно в столбце «State» списка ВМ и на карточке машины.

  2. Откройте карточку ВМ (или найдите её в списке), нажмите «Actions» и выберите команду запуска.

    Карточка ВМ с раскрытым меню Actions: красным обведён пункт Start, ниже Stop, Restart, Console, Check Configuration, Resume at Node, Remove и Additional actions

  3. Выберите узел или оставьте автоматический выбор. Дополнительно задаются таймаут жёсткого выключения (0–999 секунд) и отказ от ACPI-выключения; номер узла — от 1 до числа узлов кластера.

  4. Дождитесь, пока состояние ВМ сменится на «запущена». Узел, на котором машина поднялась, показан на её карточке — и при явном выборе узла, и при автоматическом.

Если запуск не удался​

ОтказПочемуОбход
-460 virtio-blk VM: start only on the pool nodeУ ВМ nvme = false, а выбран узел не из пулаЗапускайте на узле пула: оставьте автоматический выбор
-459 Windows: finish setup on the pool node before remote startWindows с nvme = true, первичная настройка гостя не законченаЗавершите настройку гостя на узле пула, затем запускайте удалённо
-458 No available online nodes for VM placementНет online-узла под автоматическое размещениеДождитесь возврата узлов или выберите узел вручную
-455 VM has suspended statusВМ приостановленаВосстановите её из приостановки, а не запускайте
-457 Unable to start VM having admin_status==N alreadyВМ уже запущена — в том числе по докладу того узла, куда её запускаютПроверьте состояние машины на её карточке
-461 VM is running on another cluster node; unable to startУзел доложил, что машина работает не там, куда идёт запуск. С 3.1.1Найдите, где машина работает, и остановите её там; узел назван в журнале службы
-409 VM is lockedИдёт другая операцияДождитесь её завершения; залипшую блокировку снимает роль Cluster master
-413, -414, -415Кончилась квота ВЦОД по хранилищу, RAM или ядрамРасширьте квоту или освободите ресурсы
-440 Cluster RAM has been depletedКластеру не хватает RAM с учётом overcommitОсвободите память кластера
-452 Remote disk attach errorПри удалённом запуске не подключились NVMe-oF-дискиЗапустите на узле пула и проверьте состояние узла
-442, -443Выбран несуществующий узелУточните состав кластера

Как остановить и перезапустить ВМ​

Остановка работает симметрично запуску, но без проверки квот: машина уже учтена. vStack Center определяет узел, где ВМ запущена, блокирует её и отправляет команду остановки. Вызывается она так же — «Actions» на карточке ВМ или в списке.

Приостановленную ВМ команда остановки принимает так же, как работающую.

Перезапуск повторяет логику запуска с двумя отличиями: квоты сверяются без добавления ресурсов ВМ, а overcommit — без вычета её RAM из свободной. Узел берётся текущий.

У обеих операций есть таймаут жёсткого выключения и отказ от ACPI. Если гость не реагирует на ACPI, жёсткое выключение по таймауту — штатный путь; отказ от ACPI пропускает попытку корректного завершения сразу.

Как приостановить и восстановить ВМ​

Приостановка сохраняет состояние памяти и требует включённой возможности приостановки в настройках кластера. Доступ: Cluster master — полный, остальные — role_id ≤ 2. Команда вызывается из «Actions»; ВМ переходит в состояние «приостановлена».

При восстановлении целевой узел задаётся явно. Ограничения по размещению повторяют запуск: при nvme = false восстановление идёт только на узле пула (-15152), а Windows с nvme = true до завершения первичной настройки удалённо не восстанавливается (-15151). Если возможность приостановки выключена в настройках кластера, приостановка отвечает -15005, а восстановление — -15105.

Массовые операции по пулу​

Для обслуживания узла есть парные операции уровня пула: приостановить все ВМ пула и восстановить их обратно. Они доступны только роли Cluster master и вызываются с карточки пула — там тоже есть кнопка «Actions». Дополнительно задаётся возврат машин при ошибке.

Команда идёт напрямую на узел, обслуживающий пул. Отказы: -403 — операцию вызвала не роль Cluster master (один и тот же код и на приостановке, и на возобновлении), -15203 и -15303 — неверное имя пула, -15205 и -15305 — возможность приостановки выключена.

Как открыть консоль​

Консоль открывается из «Actions» на карточке ВМ — сразу, без обращения к узлу. Доступ: Cluster master — любая ВМ, обычный пользователь — ВМ из своих ВЦОД.

Консоль бывает двух видов: графическая (VNC) — по умолчанию — и текстовая. У каждого вида свой порт. Если ВМ работает не на узле своего пула, адрес консоли указывает на публичный адрес того узла, где машина запущена.

Что учитывать при работе:

  • Ссылка одноразовая по смыслу: каждое открытие консоли сбрасывает предыдущие соединения на том же адресе и порте. Две параллельные консольные сессии к одной ВМ не живут.
  • Отказ -3103 означает, что ВМ не найдена в вашей области видимости.
  • vStack Center не проверяет, запущена ли ВМ: адрес выдаётся из учётных данных кластера. Если подключение не устанавливается, проверьте состояние машины и узла.

Как снять блокировку​

Флаг блокировки снимается сам, когда приходит ответ агента. Если агент не ответил и флаг остался, снять его может только роль Cluster master.

Отказ -25903 «VM unlock method available for Cluster master only» означает, что снятие блокировки запросила другая роль. Снимайте блокировку только после того, как убедились, что предыдущая операция действительно закончилась: иначе поздний ответ агента наложится на новую команду.

См. также​

Методы API​

Операции этой страницы в API: vms-start, vms-stop, vms-restart, vms-suspend, vms-resume, vms-suspend-pool, vms-resume-pool, vm-console, vm-unlock — см. Справочник API.