Интеграция BILLmanager и IPmanager

Материал из ISPWiki
Перейти к: навигация, поиск

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

IPmanager может быть установлен как на тот же сервер, где установлен BILLmanager, так и на отдельный сервер.

Настройка на стороне IPmanager

После установки IPmanager следует выполнить в панели управления переход на уровень администратора. В разделе Сети создаются сети ip адресов, которые впоследствии будут использоваться обработчиком услуг. Другими словами, указывается сети, из которых будут выделяться ip адреса для виртуальных/выделенных серверов или для пользователей виртуального хостинга.

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

  • public, если ip адреса нужно выделять виртуальным/выделенным серверам и эти ip адреса публичные.
  • private, если ip адреса нужно выделять виртуальным/выделенным серверам и эти ip адреса приватные.
  • alias, если ip адреса нужно выделять пользователям виртуального хостинга.

Либо можно отметить все блоки ip адресов.

В итоге, получаем пользователя в IPmanager, которому разрешено использовать ip адреса из определенного диапазона. Этот пользователь будет использоваться при настройки интеграции с BILLmanager.

Настройка на стороне BILLmanager

В BILLmanager в разделе Интеграция -> IPmanager создается подключение к IPmanager. При подключении указывается полный адрес IPmanager https://IP_адрес_сервера/ipmgr, ранее созданный пользователь в IPmanager и его пароль.

Bill5-ipmgr.png

Интеграция выполнена. При подключении обработчика услуг созданное подключение к IPmanager будет доступно для выбора.

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

Примечание. При добавлении обработчика услуг ISPmanager биллинговая система требует подключения к IPmanager. В случае, если не планируется предоставление отдельных ip адресов пользователям виртуального хостинга, можно создать "фиктивное" подключение в биллинге к IPmanager с "фиктивной" сетью. При этом в тарифном плане в BILLmanager следует запретить клиенту заказ дополнительных ip адресов, чтобы ему не был выдан "фиктивный" адрес.

Особенности работы

Если настроена интеграция BILLmanager + IPmanager, то в этой связке биллинг считается главным и периодически запускается синхронизация, которая просматривает все ip адреса в IPmanager и сравнивает их с данными из BILLmanager.

За синхронизацию ip адресов отвечает задание в крон fix.moduleip. По-умолчанию оно запускается в 03:15 каждый день.

При синхронизации:

  • Если какой-то ip адрес занят в IPmanager, но в биллинге отсутствует, то BILLmanager отправит в IPmanager запрос на освобождение такого адреса.
  • Если какой-то ip адрес свободен в IPmanager, но в биллинге этот ip числится у какой-либо услуги, то биллинг сделает этот адрес занятым в IPmanager.

Если необходимо, чтобы какие-то ip адреса не освобождались/не занимались при синхронизации, то при настройке интеграции можно указать какие типы ip адресов не нужно синхронизировать.

Ipmgr-donotuse.png

Под "типами IP адресов" подразумеваются группы ip адресов, созданных в IPmanager -> Группы IP адресов.

При синхронизации ip адресов не синхронизируются PTR записи. PTR запись в IPmanager изменяется только при вызове функции редактирования ip адреса услуги в биллинге.

Чтобы принудительно синхронизировать PTR записи для всех ip адресов, которые есть в BILLmanager, можно выполнить запрос к mysql:

select concat('/usr/local/mgr5/processing/', pm.module, ' -c editip --ip ', ip.id) from ip join item ci on ci.id = ip.item join item i on i.id = ci.parent join processingmodule pm on pm.id = i.processingmodule where i.status in (2,3,5) and ip.status in (1,2,3);

Результатом запроса будет список команд, которые впоследствии нужно выполнить в консоли.

Исправление рассинхронизации

Чтобы синхронизировать используемые в BILLmanager IP-адреса с IPmanager (например, если сеть была удалена в IPmanager и нужно её восстановить) выполните команду:

mysql billmgr -N -e "select concat('/usr/local/mgr5/processing/', pm.module, ' --command fixip --subcommand add_to_ipmgr --module ', pm.id,' --item ', i.id, ' --ipaddr ', ip.name, IF(IFNULL(ip.domain, '') != '', CONCAT(' --domain ', ip.domain), '')) from ip join item ci on ci.id = ip.item join item i on i.id = ci.parent join processingmodule pm on pm.id = i.processingmodule where i.status in (2,3,5) and ip.status in (1,2,3) and ifnull(ip.name, '') != '';" > /root/sync.sh && sed -i '1s/^/#!\/bin\/bash\n/' /root/sync.sh && chmod +x /root/sync.sh

Эта команда создаст файл /root/sync.sh в котором будет указаны API запросов. Первая строка указывает на интерпретатор командной строки, далее запросы вида:

/usr/local/mgr5/processing/pmvmmgr --command fixip --subcommand add_to_ipmgr --module 4 --item 13 --ipaddr 10.0.0.0 --domain example.com

--module имеет значение вашего модуля обработки, --item — id услуги, --ipaddr — IP-адрес назначенный услуге, --domain — домен услуги.

После этого откройте файл sync.sh, убедитесь что все команды в нем корректны, запустите получившийся скрипт.