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

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

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

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

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

Проверяется указано или нет доменное имя при заказе. Если клиент оставил поле "Доменное имя" пустым, 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 поддерживает сбор статистики по некоторым ресурсам. Статистика всегда собирается за предыдущий день

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