Принципы работы модуля ispmanager
Алгоритм открытия услуги
После заказа и оплаты услуги, BILLmanager начинает процесс ее открытия, который состоит из нескольких этапов:
Проверка доменного имени
Проверяется указано или нет доменное имя при заказе. Если клиент оставил поле "Доменное имя" пустым, BILLmanager генерирует домен на основе шаблона, указанного в настройках тарифа. Когда домен генерируется автоматически, система "запоминает", что его необходимо создать на сервере для бесплатного доменного имени.
Назначение IP-адреса
Если услуге необходим выделенный IP-адрес, то BILLmanager отправляет API запрос в IPmanager на получение свободного адреса.
Создание пользователя
Отправляется API запрос (user.add.finish) в ispmanager для создания пользователя. В качестве параметров передаются значения ресурсов, установленные в шаблоне учетной записи ispmanager и определенные в содержании тарифного плана BILLmanager.
Одним из параметров является доменное имя. В качестве значения параметра передается имя домена, указанное при заказе услуги (или сгенерированное автоматически). Таким образом, вместе с пользователем автоматически создадутся в ispmanager: WWW-домен, домен (DNS) и почтовый домен.
Если создается пользователь с лимитом на количество WWW-доменов — 0, то при создании пользователя WWW-домен не будет создан, но будут созданы почтовый домен и доменное имя (DNS). То же правило действует для почтового домена и доменного имени (DNS).
Обработка результата создания пользователя
Создание пользователя в ispmamager может завершиться одним из следующих ответов:
- Ошибка 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-доменом, который уже существует. В таком случае повторяется попытка создания пользователя, но без доменного имени.
- OK — пользователь был создан успешно.
Если биллинговая система не получила от ispmanager ни сигнала об успешном завершении операции, ни явной ошибки, то BILLmanager 10 раз с интервалом в 1 секунду обращается к ispmanager и просматривает список всех пользователей на наличие создаваемого. Если пользователь обнаруживается — операция считается завершенной успешно. В противном случае операция создания пользователя завершается ошибкой (Операция "повисает" в разделе "Текущие операции" с пометкой об ошибке).
После успешного создания пользователя, BILLmanager начинает собирать данные о вновь созданной услуге.
Сбор данных услуги
BILLmanager отправляет API запрос (domain.record) в ispmanager, чтобы узнать сервера имен домена. Эта информация необходима для уведомления об открытии услуги. Если запрос завершился ошибкой - ошибка игнорируется.
Если аккаунт пользователя в ispmanager создан без выделенного IP-адреса, то биллинговая система отправляет API запрос (ipaddr , ipaddr.list - для Lite) для определения списка IP-адресов, доступных пользователю. Эта информация необходима для уведомления об открытии услуги. Если этот запрос завершается ошибкой - операция открытия услуги считается неудачной и отмечается ошибкой.
После успешного сбора информации об услуге, она активируется.
Активация услуги
Статус услуги в BILLmanager меняется на "Активен". Клиенту отправляется письмо об открытии услуги.
Создание бесплатного доменного имени
Чтобы создать запись поддомена, выполняется API запрос (domain.record.edit) к серверу для бесплатного доменного имени.
Указание PTR записи
Если услуга создана с выделенным IP-адресом, в IPmanager отправляется API запрос (ip.edit) для указания домена услуги в качестве PTR для IP-адреса.
Синхронизация
Модуль обработки ispmanager периодически выполняет синхронизацию статуса и ресурсов (лимитов/ограничений) услуги. Соответствие услуги в BILLmanager с пользователем в ispmanager происходит по имени пользователя. То есть значение поля Имя пользователя в разделе Товары/Услуги → Виртуальный хостинг, соответствует имени пользователя в ispmanager.
Синхронизация статуса
При cинхронизации статуса услуг, выбирается весь список услуг в биллинговой системе, подключенных к обработчику ispmanager, сравнивается статус услуги в BILLmanager и состояние пользователя в 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 поддерживает сбор статистики по некоторым ресурсам. Статистика всегда собирается за предыдущий день.
За сбор статистики отвечает задание планировщика cron — statdaily.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 <код модуля обработки>' — сбор статистики