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

Как управлять сервисами кластера

Когда использовать​

Сервис кластера — единица, которую Cluster Manager запускает на конкретном узле. Так представлены пулы хранения (имена вида zpool_ssd01, zpool_tank0) и системные службы кластера. Управлять сервисами приходится при обслуживании узла, при переносе пула на другой узел и при разборе ситуации «сервис не поднимается».

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

КомандаЧто меняетНужен узелКогда применять
РазрешитьРазрешение — сервис допущен к работенетВозврат сервиса в эксплуатацию
ЗапретитьРазрешение — сервис запрещённетДлительное обслуживание, вывод пула
ЗапуститьСостояние — запуск на узледаПоднять сервис на выбранном узле
ОстановитьСостояние — остановканетРазовая остановка без запрета

Обратите внимание на асимметрию: запуск требует узла, остановка — нет. Сервис запускается адресно, а останавливается там, где сейчас работает.

Предусловия​

  • роль Cluster master (role_id=1) — все четыре команды закрыты только ею;
  • доступный Cluster Manager: команды уходят к нему, а он доводит их до узлов;
  • имя сервиса из букв, цифр и подчёркиваний — дефисы, точки и пробелы кластер не примет;
  • версия vStack Center — 3.0.3.

Шаг 1. Посмотреть текущее состояние сервисов​

Состояние сервисов приходит вместе с составом кластера.

  1. Откройте Provider Data Center → Storage Resources. Таблица ZFS pools показывает пулы кластера с колонками GUID, Name, Health, Consuming, Scrubbing, Resilvering, Current node и Capacity (RAW).
  2. Откройте пул из таблицы — в карточке пула доступно меню Actions с операциями над ним.

Читайте состояние так: разрешение отвечает на вопрос «допущен ли сервис к работе», состояние — «работает ли он сейчас», а Current node — «на каком узле». Пул разрешённый и работающий виден как живой на своём узле. Запрещённый и остановленный сервис запускать бессмысленно: сначала снимите запрет.

Шаг 2. Запустить сервис на узле​

Запуск адресный: кроме сервиса нужен узел. vStack Center передаёт команду Cluster Manager, тот доводит её до узла.

  1. Убедитесь, что сервис разрешён. Если он запрещён — сначала выполните шаг 4.
  2. Выберите сервис и узел, на котором он должен подняться, и выполните запуск.
  3. Проверьте результат: сервис должен стать работающим, а узел, который его несёт, совпасть с выбранным.

Принятая команда подтверждает, что её получил Cluster Manager. Фактический запуск подтверждает только состояние сервиса на узле.

Шаг 3. Остановить сервис​

Остановка узел не требует: Cluster Manager сам знает, где сервис работает. Достаточно выбрать сервис и выполнить остановку.

Остановка меняет только состояние. Разрешение остаётся, поэтому сервис может подняться снова — например, при перезапуске узла. Если сервис должен остаться выключенным, запретите его.

Шаг 4. Разрешить или запретить сервис​

Разрешение — долгоживущее решение. Запрет держит сервис выключенным независимо от перезапусков.

warning

Запрет сервиса пула хранения делает недоступными данные, которые он отдаёт. Перед запретом проверьте в Storage Resources, какой узел несёт сервис (колонка Current node) и какая нагрузка на него опирается.

Выберите сервис и выполните запрет — узел указывать не нужно. Разрешение выполняется тем же путём обратной командой.

Порядок действий при обслуживании: остановите сервис, запретите его, проведите работы, разрешите, запустите на нужном узле. Обратный порядок — запрет без остановки — оставит сервис работающим до первого перезапуска.

Остановка сервиса пула гасит и удалённо запущенные ВМ​

ВМ этого пула могут работать не только на узле-владельце: при NVMe-режиме дисков машина поднимается на любом узле, а диски получает по сети с владельца. До 3.1.1 остановка сервиса гасила только машины на узле-владельце, удалённые продолжали работать и держали пул занятым — экспорт срывался с «pool is busy», сервис оставался на прежнем узле.

С 3.1.1 vStack Center перед остановкой сервиса сам гасит машины пула на других узлах и только потом останавливает сервис. То же действует при переносе пула. Учитывайте это при планировании работ: остановка сервиса пула теперь выключает и те машины, которые вы видите работающими на соседних узлах.

Барьер работает по принципу «не уверен — не начинай». Узел засчитывается, только если подтвердил остановку либо сообщил, что машин этого пула у него нет. Любой другой исход — ошибка, таймаут, обрыв связи — блокирует остановку: операция не начинается вовсе, сервис остаётся в рабочем состоянии, а в отказе приходит список мешающих машин с их узлами. На весь опрос отведено 2 минуты.

Проверка результата​

Вернитесь к состоянию сервисов и сверьте его с тем, что вы просили.

Что делалиОжидаемо после команды
ЗапускСервис работает, его несёт узел из запроса
ОстановкаСервис остановлен, разрешение осталось
ЗапретСервис запрещён и остановлен
РазрешениеСервис разрешён; чтобы он заработал, его нужно запустить

Если разрешение уже изменилось, а состояние — нет, команда принята, но узел ещё не отчитался. Перечитайте состояние сервисов.

Если не получилось​

Что видитеПочемуЧто делать
Команда сервиса отказывает с кодом -403 «Access denied»Команды сервисов открыты только роли Cluster masterВойдите под ролью уровня кластера
Код ошибки -32602 «Invalid params»Имя сервиса не прошло проверку форматаУберите дефисы, точки и пробелы; сверьте имя с колонкой Name
Запуск отказывает с кодом -20522Идентификатор узла не прошёл проверкуУкажите идентификатор узла числом
Код ошибки -713Команду не удалось передать Cluster ManagerПроверьте доступность Cluster Manager; до узлов команда не дошла
Команда принята, но состояние сервиса не изменилосьCluster Manager принял команду, узел ещё не применил еёПеречитайте состояние; при затяжном расхождении смотрите узел из колонки Current node
Сервис поднялся сам после перезапуска узлаБыла остановка без запретаЗапретите сервис, а не просто остановите
Остановка сервиса пула вернула список мешающих машинМашины пула на других узлах не удалось погасить: узел не ответил, оборвалась связь либо вернул ошибкуРазберитесь с машинами из списка на названных узлах и повторите остановку; сервис при этом не тронут
Запуск не даёт эффектаСервис запрещёнСначала разрешите сервис, затем запускайте
Состава кластера не видно вовсеУ пользователя нет привилегии просмотра карты состоянияЗапросите привилегию View Cluster Status Map (full) (6003)

См. также​

Методы API​

Операции этой страницы в API: get-statusmap, cluster-service-enable, cluster-service-disable, cluster-service-start, cluster-service-stop — см. Справочник API.