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