Документация BILLmanager 6
Режим фокусировки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • создание учётной записи пользователя в VMmanager;
  • создание аккаунта в DNSmanager (необходимо для использования ресурса "Серверы имён");
  • генерация бесплатного доменного имени (выполняется, если при заказе услуги клиент не указал доменное имя);
  • создание доменной записи для бесплатного доменного имени (если подключён сервер имён для бесплатного доменного имени).

Все задачи запускаются параллельно. Каждая операция имеет таймаут на выполнение: 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 со значением 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-адресов.