Жизненный цикл экземпляра сервиса

Жизненный цикл экземпляра сервиса включает состояния, приведенные в таблице:

Состояние сервиса

Описание

PENDING

Исходное состояние сервиса. Сервис находится в этом состоянии, пока служба OneFlow не начнет процесс развертывания этого сервиса

DEPLOYING

Начался процесс развертывания каких-либо групп ВМ с заданной ролью 

RUNNING

Все группы ВМ с заданной ролью из состава сервиса успешно развернуты

WARNING

Обнаружена ошибка при развертывании ВМ

SCALING

Начался процесс автоматического масштабирования группы ВМ с заданной ролью

COOLDOWN

Пауза между итерациями автоматического масштабирования группы ВМ с заданной ролью

UNDEPLOYING

Начался процесс отмены развертывания каких-либо групп ВМ с заданной ролью

FAILED_DEPLOYING

Обнаружена ошибка при развертывании сервиса

FAILED_UNDEPLOYING

Обнаружена ошибка во время отмены развертывания сервиса

FAILED_SCALING

Обнаружена ошибка во время автоматического масштабирования сервиса

При этом каждая группа ВМ с заданной ролью может быть в одном из состояний, описание которых приведено в таблице:

Состояние группы

Описание

PENDING

Ожидание начала процесса развертывания

DEPLOYING

Начался процесс развертывания ВМ. Группа ВМ с заданной ролью находится в этом состоянии, пока статус всех ВМ из состава группы не примет значение RUNNING

RUNNING

Статус всех ВМ из состава группы имеет значение RUNNING

WARNING

Обнаружена ошибка при развертывании ВМ

SCALING

Начался процесс автоматического масштабирования. Группа ВМ с заданной ролью находится в этом состоянии, пока необходимое количество ВМ не будет развернуто или выключено

COOLDOWN

Пауза между итерациями автоматического масштабирования

UNDEPLOYING

Начался процесс выключения каких-либо ВМ. Группа ВМ с заданной ролью находится в этом состоянии, пока статус указанных ВМ не примет значение DONE

FAILED_DEPLOYING

Обнаружена ошибка при развертывании ВМ

FAILED_UNDEPLOYING

Обнаружена ошибка во время отмены развертывания ВМ

FAILED_SCALING

Обнаружена ошибка во время  автоматического масштабирования группы ВМ с заданной ролью

Управление экземплярами сервиса в интерфейсе командной строки

Развертывание экземпляра сервиса

Для развертывания сервиса из шаблона можно воспользоваться командой:

oneflow-template instantiate  <идентификатор_шаблона> 

Отображение развернутых сервисов

Для отображения развернутых сервисов необходимо использовать команду oneflow list. Пример вывода после выполнения команды:

ID USER            GROUP           NAME          STARTTIME          STATE
 1 oneadmin        oneadmin        my_service    10/28 17:42:46     PENDING
CODE
Кроме того, можно использовать команду oneflow top для непрерывного отображения развернутых сервисов.

Для просмотра полной информации о сервисе необходимо использовать команду:

oneflow show <идентификатор_сервиса> 

Управление состоянием сервиса

Для управления состоянием сервиса используются следующие команды:

КомандаОписание
oneflow deleteВыключение сервиса. Эта команда запускает процесс корректного выключения всех развернутых экземпляров ВМ. Если в настройках сервиса указан тип развертывания straight, то процесс выключения групп ВМ с заданной ролью производится в обратном порядке
oneflow recoverВосстановление после сбоя. Используется для автоматического возобновления функционирования в штатном режиме (см. также Особенности восстановления после сбоя)
oneflow recover --deleteПринудительное удаление экземпляра сервиса. Используется, если в процессе удаления ВМ произошла ошибка
oneflow purge-doneУдаление всех сервисов, состояние которых имеет значение DONE

Добавление или удаление групп ВМ в экземпляре сервиса

Добавить или удалить группу ВМ с заданной ролью в экземпляре сервиса можно только в том случае, если состояние этого сервиса имеет значение RUNNING.

Чтобы добавить группу ВМ с заданной ролью, необходимо выполнить команду:

oneflow add-role <идентификатор_сервиса> <файл_json>
где:

  • <идентификатор_сервиса> – идентификатор экземпляра сервиса;
  • <файл_json> – файл в формате JSON, в котором указаны значения параметров группы ВМ с заданной ролью.

Пример

Файл role.json с параметрами группы ВМ:

{     
    "name": "MASTER",
    "cardinality": 1,
    "vm_template": 0,
    "min_vms": 1,
    "max_vms": 2,
    "elasticity_policies": [],
    "scheduled_policies": [] 
}
CODE

Добавление группы ВМ в экземпляр сервиса с идентификатором 0:

oneflow add-role 0 role.json

После получения команды на добавление группы ВМ с заданной ролью в сервис, состояние этого сервиса примет значение DEPLOYING. Сервис находится в этом состоянии, пока статус необходимого количества ВМ из состава группы не примет значение RUNNING.

Чтобы удалить группу ВМ с заданной ролью, необходимо выполнить команду:

oneflow remove-role <идентификатор_сервиса> <наименование_группы>
После получения команды на удаление группы ВМ с заданной ролью из сервиса, состояние этого сервиса примет значение UNDEPLOYING. Сервис находится в этом состоянии до тех пор, пока все ВМ из состава группы не будут удалены. После этого состояние сервиса примет значение RUNNING

Управление группой ВМ из состава экземпляра сервиса

Для управления состоянием всех ВМ из состава группы ВМ с заданной ролью используется следующая команда:

oneflow action <наименование_сервиса> <наименование_группы_ВМ> <действие>
В отношении группы ВМ с заданной ролью допускается выполнять следующие действия:

  • terminate

  • terminate-hard

  • undeploy

  • undeploy-hard

  • hold

  • release

  • stop

  • suspend

  • resume

  • reboot

  • reboot-hard

  • poweroff

  • poweroff-hard

  • snapshot-create

  • snapshot-revert

  • snapshot-delete

  • disk-snapshot-create

  • disk-snapshot-revert

  • disk-snapshot-delete

Кроме того, возможно указать, что заданное в команде действие применялось не одновременно ко всем ВМ из состава группы, а поочередно в отношении одной или нескольких ВМ. Для этого используются следующие аргументы команды:

  • "-n" или "--number"  – количество ВМ с заданной ролью, которым будет одновременно направлена команда на изменение состояния за одну итерацию;
  • "-p" или "--period" – пауза (в секундах) между итерациями.

Если аргументы "--number" и "--period" не указаны, то используются соответственно значения параметров ":action_number" и ":action_period", заданные в конфигурационном файле /etc/one/oneflow-server.conf службы OneFlow.

Пример

Направить всем ВМ из состава группы с ролью my-role сервиса my-service команду на перезагрузку. При этом за одну итерацию команда на перезагрузку будет направлена только двум ВМ из состава группы. Пауза между итерациями составляет 300 секунд.

oneflow action my-service my-role reboot --period 300 --number 2

Управление экземплярами сервиса в веб-интерфейсе ПК СВ

Развертывание экземпляра сервиса

Для развертывания сервиса из шаблона, в веб-интерфейсе ПК СВ необходимо выполнить действия, описанные ниже.

  1. В меню слева выбрать пункт меню «Шаблоны — Сервисы».
  2. На открывшейся странице Шаблоны Сервисов выбрать необходимый шаблон.
  3. На открывшейся странице Шаблон Сервиса нажать на кнопку [+] и в открывшемся меню выбрать пункт Создать ВМ.

  4. На открывшейся странице Развернуть Шаблон Сервиса :
    • в поле Имя сервиса задать наименование сервиса;
    • указать количество экземпляров сервиса;
    • нажать на кнопку [Создать ВМ].
  5. В веб-интерфейсе в меню слева выбрать пункт меню «Экземпляры ВМ — Сервисы» и дождаться пока в поле Состояние для созданного на предыдущем шаге сервиса значение РАЗВОРАЧИВАЕТСЯ не изменится на ЗАПУЩЕНО. Для обновления информации на странице можно воспользоваться кнопкой [Обновить страницу].

Отображение развернутых сервисов

Для отображения развернутых сервисов в веб-интерфейсе ПК СВ необходимо в меню слева выбрать пункт меню «Экземпляры ВМ — Сервисы». На открывшейся странице Сервисы будет отображена таблица экземпляров сервисов (см. рисунок выше).

Для просмотра полной информации о сервисе необходимо на странице Сервисы выбрать необходимый сервис. После этого откроется страница сервиса (вкладка Сведения).

Управление состоянием сервиса

Для управления состоянием сервиса используются следующие кнопки веб-интерфейса:

КнопкаДействиеОписание
[Удалить]
Инициирует команду oneflow deleteВыключение сервиса. Эта команда запускает процесс корректного выключения всех запущенных экземпляров ВМ. Если в настройках сервиса указан тип развертывания straight, то процесс выключения групп ВМ с заданной ролью производится в обратном порядке
[Восстановить]
Инициирует команду oneflow recoverВосстановление после сбоя. Используется для автоматического возобновления функционирования в штатном режиме (см. также Особенности восстановления после сбоя)
[Восстановить - удалить] 
Инициирует команду
oneflow recover --delete
Принудительное удаление экземпляра сервиса. Используется, если в процессе удаления ВМ произошла ошибка
[Очистить] 
Инициирует команду
oneflow purge-done
Удаление всех сервисов, состояние которых имеет значение DONE

Управление группой ВМ из состава экземпляра сервиса

Для управления состоянием всех ВМ из состава группы ВМ с заданной ролью, в веб-интерфейсе ПК СВ необходимо выполнить действия, описанные ниже.

  1. В меню слева выбрать пункт меню «Экземпляры ВМ — Сервисы».
  2. На открывшейся странице Сервисы выбрать необходимый сервис.
  3. На открывшейся странице Сервис во вкладке Роли выбрать группу ВМ, состояние которой необходимо изменить. После этого станут доступны кнопки для управления состоянием группы ВМ.

    Также можно указать, что заданное в команде действие применялось не одновременно ко всем ВМ из состава группы, а поочередно в отношении одной или нескольких ВМ. Для этого используются следующие поля для ввода:

    • Номер  – количество ВМ с заданной ролью, которым будет одновременно направлена команда на изменение состояния за одну итерацию;
    • Период – пауза (в секундах) между итерациями.

    Если значения параметров Номер и Период не указаны, то используются соответственно значения параметров ":action_number" и ":action_period", заданные в конфигурационном файле /etc/one/oneflow-server.conf службы OneFlow.

Для управления состоянием конкретной ВМ из состава группы ВМ с заданной ролью, в веб-интерфейсе ПК СВ необходимо выполнить действия, описанные ниже.

  1. В меню слева выбрать пункт меню «Экземпляры ВМ — Сервисы».
  2. На открывшейся странице Сервисы выбрать необходимый сервис.
  3. На открывшейся странице Сервис во вкладке Роли выбрать группу ВМ, состояние которой необходимо изменить, и пролистать страницу вниз.

  4. На странице Сервис в секции ВМ выбрать необходимую ВМ (допускается выбрать несколько ВМ). После этого станут доступны кнопки для управления состоянием ВМ.

Особенности восстановления после сбоя

Некоторые ошибки, возникшие в процессе функционирования сервиса, могут быть устранены в автоматическом режиме с помощью команды oneflow recover. Последовательность действий при выполнении этой команды зависит от исходного состояния сервиса (см. таблицу ниже).

Исходное состояние сервисаОписание автоматических действий при выполнении команды "oneflow recover"Новое состояние сервиса
FAILED_DEPLOYINGВМ, имеющие статус DONE или FAILED, уничтожаются. ВМ со статусом UNKNOWN развертываютсяDEPLOYING
FAILED_UNDEPLOYINGВозобновление процесса удаления сервисаUNDEPLOYING
FAILED_SCALINGВМ, имеющие статус DONE или FAILED, уничтожаются. ВМ со статусом UNKNOWN развертываются. Если в процессе автоматического масштабирования производилось уменьшение количества ВМ, то возобновляется действие по выключению заданных ВМSCALING
COOLDOWNПропуск паузы, немедленное возобновление функционированияRUNNING