Документация BILLmanager

Принципы работы модуля VMmanager

Алгоритм открытия услуги

После заказа и оплаты услуги, BILLmanager начинает процесс создания виртуальной машины, который состоит из нескольких этапов:

Выбор обработчика услуг

Если к тарифному плану подключено несколько обработчиков, то при создании услуги: 

  • Первым выбирается обработчик услуг с наименьшим приоритетом. 
  • При возникновении ошибки во время создания услуги может быть осуществлен переход к следующему обработчику. При смене обработчика, предпочтение отдается обработчикам, настроенным на тот же IPmanager, что и предыдущий обработчик. Приоритет модуля обработки также учитывается  первым будет выбран обработчик с наименьшим приоритетом. 

Если при создании виртуального сервера были перебраны все модули обработки, но сервер так и не был создан, то операция по созданию виртуального сервера переводится в ручную обработку и создается задача в ответственный отдел.

Проверка наличия сервера в пуле

Выполняется поиск сервера с подходящими параметрами в пуле. Если сервер найден, то происходит выдача сервера клиенту. В противном случае, создается новая виртуальная машина. 

Назначение IP-адреса

BILLmanager отправляет API запрос в IPmanager на получение свободного адреса. Он будет использован в качестве основного IP-адреса виртуального сервера. 

Обратите внимание!
Когда виртуальная машина выдается из пула, ей не назначает новый IP-адрес. Используется тот адрес, что был назначен при создании сервера в пул.

При заказе виртуальной машины с дополнительными IP-адресами, BILLmanager сначала посылает запрос в VMmanager на создание ВМ с одним IP, а потом отдельными операциями добавляет дополнительные адреса для виртуальной машины в VMmanager. Поэтому при заказе ВМ из BILLmanager на сетевой интерфейс сервера всегда добавляется только один IP-адрес. Дополнительные адреса нужно добавлять вручную. Либо они будут добавлены при первой переустановке ОС.

Предварительная подготовка

Перед созданием виртуального сервера запускаются операции по подготовке услуги:

Все задачи запускаются параллельно. Каждая операция имеет таймаут на выполнение: 5 минут. Если таймаут истек, то этап считается неудачным, открытие услуги прерывается, при этом запрещается перебор обработчиков. 

Создание сервера

BILLmanager отправляет API запрос (vm.edit) на создание виртуальной машины в VMmanager.

В случае возникновения ошибки, выполняется переход к следующему обработчику услуг. Если нет иных обработчиков услуг, подключенных к тарифу, операция по открытию услуги помечается как неудачная. Через несколько минут биллинговая система выполнит еще несколько попыток создания виртуальной машины на сервере обработчика перед тем, как создать задачу на ручную обработку услуги.

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

Установка ОС в VMmanager KVM и Cloud может занимать до нескольких десятков минут, а в случае некорректных настроек на стороне VMmanager, может длиться бесконечно. Поэтому существует таймаут на ожидание окончания установки ОС. По умолчанию он равен 30 минутам. Изменить таймаут можно в разделе ИнтеграцияОбработчики услуг → кнопка Параметры → поле Таймаут на установку.

Если за указанное время установка ОС не завершилась, то BILLmanager посылает команду на удаление сервера в VMmanager и отмечает текущую операцию открытия услуги, как безуспешную. Через несколько минут биллинговая система выполнит еще несколько попыток создания виртуальной машины на сервере обработчика перед тем, как создать задачу на ручную обработку услуги.

Проверка готовности сервера

BILLmanager отправляет API запрос в VMmanager для проверки состояния сервера. Вызывается функция 'vm', с параметром 'elid=<код услуги>'. 

Параметр обработчика услуг Окончание установки сервера определяет когда считать сервер готовым к использованию: когда на сервере закончена установка ОС и не возникло ошибок, либо когда на сервере успешно завершена установка рецепта.

Состояние сервера проверяется по xml-файлу, который обработчик услуг отдает в ответ:

  • Наличие в xml параметров 'installing' или 'installos' говорит о том, что в настоящий момент выполняется установка ОС. 
  • recipe_run или recipe_run со значением 'on' - выполняется установка рецепта.  
  • Элемент 'recipe_fail' со значением 'on' - возникла ошибка при установке рецепта. 
  • Элемент 'state' со значением 'error' говорит о том, что во время создания сервера возникла ошибка.   

Сохранение параметров созданного сервера

BILLmanager получает от VMmanager параметры созданного виртуального сервера:

Пароль суперпользователя сервера. Используется в письме об открытии услуги.

Узел кластера, на котором создана машина. Сохраняется в базе данных биллинга. В интерфейсе BILLmanager можно включить отображение колонки "Узел кластера"  кнопка Настроить вид таблицы → флаг Узел кластера.

Дополнительные действия для VMmanager OVZ

Если на виртуальном сервере предустановлен ISPmanager, то BILLmanager отправляет API запросы к ISPmanager на выполнение дополнительных действий:

  • Обновление статуса лицензии: 'func=license.info&clicked_button=update_license&sok=ok'. Так как ISPmanager «зашит» в шаблон ОС, после разворачивания контейнера из образа, необходимо обновить статус лицензии. Если для IP-адрес сервера существует коммерческая лицензия ISPmanager, она будет найдена и привязана к серверу. В противном случае ISPmanager прекратит работу.
  • Получение параметров интеграции ISPmanager с DNSmanager: 'func=afterinstall&out=xml&xset.up=on’. Данные необходимы для формирования письма об открытии услуги. 

Активация услуги

После успешного создания сервера и выполнения дополнительных действий, статус услуги меняется на "Активен". Клиенту отправляется письмо об открытии услуги.

Сбор статистики

Модуль обработки VMmanager поддерживает сбор статистики по некоторым ресурсам. Статистика собирается каждый час. За сбор статистики отвечает задание планировщика cron  statdaily.cron.

Логирование

Лог взаимодействия биллинговой системы с VMmanager записывается в файл  '/usr/local/mgr5/var/pmvmmgr.log' ('/usr/local/mgr5/var/pmvemgr.log' если интеграция с VMmanager OVZ)

В логе можно определить выполняемые операции по следующим записям:

'processing/pmvmmgr --runningoperation <код текущей операции> --command open открытие услуги

'processing/pmvmmgr --runningoperation <код текущей операции>  --command close' закрытие услуги

'processing/pmvmmgr --command sync_server --module <код модуля обработки>'  синхронизация данных

'processing/pmvmmgr --command stat --module <код модуля обработки>' сбор статистики 

'processing/pmvmmgr --command fixip --module <код модуля обработки>'  синхронизация списка IP-адресов