Как управлять сервисами кластера
Когда использовать
Сервис кластера — единица, которую Cluster Manager запускает на конкретном узле.
Так представлены пулы хранения (имена вида zpool_ssd01, zpool_tank0) и
системные службы кластера. Управлять сервисами приходится при обслуживании узла,
при переносе пула на другой узел и при разборе ситуации «сервис не поднимается».
У сервиса две независимые оси. Первая — разрешение: разрешён сервис к работе или запрещён. Вторая — состояние: запущен он или остановлен. Разрешение сервиса не запускает его, а запуск запрещённого сервиса не переживёт проверки. Разделение намеренное: запрет держит сервис выключенным и после перезапуска узла, а остановка — разовое действие.
| Команда | Что меняет | Нужен узел | Когда применять |
|---|---|---|---|
| Разрешить | Разрешение — сервис допущен к работе | нет | Возврат сервиса в эксплуатацию |
| Запретить | Разрешение — сервис запрещён | нет | Длительное обслуживание, вывод пула |
| Запустить | Состояние — запуск на узле | да | Поднять сервис на выбранном узле |
| Остановить | Состояние — остановка | нет | Разовая остановка без запрета |
Обратите внимание на асимметрию: запуск требует узла, остановка — нет. Сервис запускается адресно, а останавливается там, где сейчас работает.
Предусловия
- роль Cluster master (role_id=1) — все четыре команды закрыты только ею;
- доступный Cluster Manager: команды уходят к нему, а он доводит их до узлов;
- имя сервиса из букв, цифр и подчёркиваний — дефисы, точки и пробелы кластер не примет;
- версия vStack Center — 3.0.3.
Шаг 1. Посмотреть текущее состояние сервисов
Состояние сервисов приходит вместе с составом кластера.
- Откройте Provider Data Center → Storage Resources. Таблица ZFS pools показывает пулы кластера с колонками GUID, Name, Health, Consuming, Scrubbing, Resilvering, Current node и Capacity (RAW).
- Откройте пул из таблицы — в карточке пула доступно меню Actions с операциями над ним.
Читайте состояние так: разрешение отвечает на вопрос «допущен ли сервис к работе», состояние — «работает ли он сейчас», а Current node — «на каком узле». Пул разрешённый и работающий виден как живой на своём узле. Запрещённый и остановленный сервис запускать бессмысленно: сначала снимите запрет.
Шаг 2. Запустить сервис на узле
Запуск адресный: кроме сервиса нужен узел. vStack Center передаёт команду Cluster Manager, тот доводит её до узла.
- Убедитесь, что сервис разрешён. Если он запрещён — сначала выполните шаг 4.
- Выберите сервис и узел, на котором он должен подняться, и выполните запуск.
- Проверьте результат: сервис должен стать работающим, а узел, который его несёт, совпасть с выбранным.
Принятая команда подтверждает, что её получил Cluster Manager. Фактический запуск подтверждает только состояние сервиса на узле.
Шаг 3. Остановить сервис
Остановка узел не требует: Cluster Manager сам знает, где сервис работает. Достаточно выбрать сервис и выполнить остановку.
Остановка меняет только состояние. Разрешение остаётся, поэтому сервис может подняться снова — например, при перезапуске узла. Если сервис должен остаться выключенным, запретите его.
Шаг 4. Разрешить или запретить сервис
Разрешение — долгоживущее решение. Запрет держит сервис выключенным независимо от перезапусков.
Запрет сервиса пула хранения делает недоступными данные, которые он отдаёт. Перед запретом проверьте в 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) |
См. также
- Кластер, узлы и сервисы — что такое сервис кластера и чем Cluster Manager отличается от роли Cluster master.
- Как управлять узлами кластера — вывод узла, который несёт сервис.
- Как посмотреть ресурсы кластера — карта состояния, в которой видны сервисы и их привязка к узлам.
Методы API
Операции этой страницы в API: get-statusmap, cluster-service-enable,
cluster-service-disable, cluster-service-start, cluster-service-stop — см.
Справочник API.