Режим фокусировки

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

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

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

После заказа и оплаты услуги BILLmanager последовательно выполняет следующие шаги:

  1. Проверка доменного имени.
  2. Назначение IP-адреса.
  3. Создание пользователя.
  4. Обработка результата создания пользователя.
  5. Сбор данных услуги.
  6. Активация услуги
  7. Создание бесплатного доменного имени.
  8. Указание PTR записи.

Проверка доменного имени

Система проверяет, указано ли доменное имя в заказе:

  • если поле заполнено — используется значение клиента;
  • если поле пустое — BILLmanager генерирует домен на основе шаблона из настроек тарифа. Когда домен генерируется автоматически, система система затем создаст его на сервере для бесплатного доменного имени.

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

Если услуге необходим выделенный IP-адрес, BILLmanager:

  1. Отправляет API-запрос в IPmanager на получение свободного адреса.
  2. Получает свободный адрес и резервирует его за услугой.

Создание пользователя

BILLmanager вызывает метод user.add.finish и передаёт параметры:

  • логин и пароль пользователя;
  • значения ресурсов из шаблона учётной записи, определённые в содержании тарифного плана BILLmanager;
  • доменное имя (указанное клиентом или сгенерированное).

На основе этих данных в ispmanager автоматически создаются:

  • WWW-домен;
  • DNS-зона;
  • почтовый домен.

Если создаётся пользователь с лимитом на количество WWW-доменов — 0, то:

  • при создании пользователя WWW-домен не будет создан;
  • будут созданы почтовый домен и доменное имя (DNS).

Правило применяется отдельно к каждому типу домена.

Обработка результата создания пользователя

Создание пользователя в ISPmamager может завершиться одним из следующих ответов:

  • Ok — пользователь был создан успешно;
  • ошибка ERROR Error: Type: 'exists' Object: 'user' Value: '<имя пользователя>' — пользователь с таким именем уже существует. В таком случае повторяется попытка создания пользователя, но к его имени добавляется цифра 1. Например, user_665 становится user_6651. Если существует и user_6651, то повторяется попытка создания пользователя, но к его имени добавляется цифра 2, получается user_6652 и т.д., пока процесс создания пользователя не завершится успешно;
  • ошибка ERROR Error: Type: 'exists' Object: 'name' Value: '<имя домена>' — пользователь создаётся с WWW-доменом, который уже существует. В таком случае повторяется попытка создания пользователя, но без доменного имени.

Если ответ не получен в течение тайм-аута, BILLmanager выполняет 10 опросов списка пользователей с интервалом в 1 секунду. Если пользователь обнаружен, операция считается завершённой успешно. В противном случае операция создания пользователя завершается ошибкой и отображается в разделе "Текущие операции" с соответствующей пометкой.

Сбор данных услуги

После успешного создания пользователя BILLmanager начинает собирать данные о вновь созданной услуге. BILLmanager отправляет API-запрос (domain.record) в ispmanager, чтобы узнать сервера имён домена. Эта информация необходима для уведомления об открытии услуги. Если запрос завершился ошибкой, ошибка игнорируется.

Если аккаунт пользователя в ispmanager создан без выделенного IP-адреса, то биллинговая платформа отправляет API-запрос (ipaddr — для business и host, ipaddr.list — для Lite) для определения списка IP-адресов, доступных пользователю. Эта информация необходима для уведомления об открытии услуги. Если запрос завершается ошибкой, операция открытия услуги считается неудачной и отмечается ошибкой.

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

После успешного сбора информации:

  • статус услуги в BILLmanager меняется на "Активен";
  • клиенту отправляется письмо об открытии услуги.

Создание бесплатного доменного имени

Чтобы создать запись поддомена, выполняется API-запрос (domain.record.edit) к серверу для бесплатного доменного имени. 

Указание PTR записи

Если услуга использует выделенный IP-адрес:

  • BILLmanager отправляет запрос ip.edit в IPmanager;
  • в качестве PTR-записи для IP-адреса указывается домен услуги.

Синхронизация

Модуль обработки ISPmanager периодически сверяет состояние услуги в BILLmanager с состоянием пользователя в ispmanager. Соответствие устанавливается по имени пользователя: значение поля Имя пользователя в разделе Товары/Услуги Виртуальный хостинг должно совпадать с именем пользователя в ispmanager.

Синхронизация статуса

При cинхронизации статуса услуг:

  • выбираются все услуги, подключённые к обработчику ISPmanager;
  • сравнивается статус услуги в BILLmanager и состояние пользователя в ispmanager:
    • если в BILLmanager услуга имеет статус "Активен", а в ispmanager соответствующий пользователь выключен, то биллинговая платформа включает пользователя;
    • если в BILLmanager услуга в статусе "Остановлен", а в ispmanager пользователь включен, то отправляется запрос на выключение пользователя.

Синхронизация статуса выполняется ежедневно.

Синхронизация ресурсов

Синхронизация шаблонов учётной записи выполняется раз в три дня. Сравниваются шаблоны учётных записей в BILLmanager и ispmanager:

  • если шаблоны совпадают, проверяются значения ресурсов. При расхождении BILLmanager выполняет API-запрос (user.edit) к ispmanager и меняет значение ресурса на то, которое установлено в биллинговой платформе;
  • если шаблоны не совпадают, BILLmanager:
    • выполняет API-запрос (user.edit) к ispmanager и применяет шаблон из BILLmanager указанный в биллинговой платформе;
    • корректирует значения ресурсов.

Для ispmanager business  задача синхронизации ресурсов получает название узла кластера, на котором находится пользователь, и сохраняет эту информацию в BILLmanager.

За синхронизацию статуса и ресурсов отвечает задание планировщика cron processing.syncserver.cron. 

Логирование

Лог взаимодействия биллинговой платформы с ISPmanager записывается в файл /usr/local/mgr5/var/pmispmgr5.log

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

  • 'processing/pmispmgr5 --runningoperation <код текущей операции> -- command open ' — открытие услуги;
  • 'processing/pmispmgr5 --runningoperation <код текущей операции> --command close' — закрытие услуги;
  • 'processing/pmispmgr5 --command sync_server --module <код модуля обработки>' — синхронизация данных;
  • 'processing/pmispmgr5 --command stat --module <код модуля обработки>' — сбор статистики.

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

Модуль обработки ISPmanager поддерживает сбор статистики по ресурсам, описанным в статье Содержание тарифа. ISPmanager. Статистика собирается за предыдущий день. 

За сбор статистики отвечает задание планировщика cron — statdaily.cron.