Синхронизация абонентов на оборудовании

Skip to end of metadata
Go to start of metadata
Вы просматриваете старую версию данной страницы. Смотрите текущую версию. Сравнить с текущим  |   просмотр истории страницы

Описание

Система синхронизации исправляет сессии абонентов на оборудовании: она сравнивает их состояния на NAS и в биллинге, если обнаружена разница, добавляет нужные команд в стек для отправки.
В биллинге эта система называется sync_nasd. Для того или иного маршрутизатора её запуск и работа зависят от следующих опций:

  • Вкладка "Описание"
    • "Синхронизировать пользователей на этом NAS": синхронизация выполняется.
    • "В эксплуатации": синхронизация выполняется и в случае если она завершена неудачно создаётся автоматическая заявка в портале HelpDesk
Во всех стандартных схемах опция "Синхронизировать пользователей на этом NAS" установлена по-умолчанию и не отключается

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

Настройка

Настройки системы находятся в меню "Настройки" -> "Настройки (в файле)" -> "Управление абонентами и тарифами" и описаны в статье "Настройки (в файле)"

Схема работы

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

  • Базовый скрипт событий: /var/lib/event/sync/NAS-IP/
  • OSS-схема: /OSS-директория/cache/sync/NAS-IP/

Более детальное описание:

  1. Используя функцию users_from_nas() скрипта событий, система загружает с оборудования IP-адреса абонентов:

    • auth_list.nas: авторизованные
    • negbal_list.nas: заблокированные по балансу
    • blocked_list.nas: заблокированные администратором

  2. Используя API биллинга выгружает IP-адреса абонентов и сравнивает с такими же списками загруженными с оборудования:

    • auth_list.billing: авторизованные
    • negbal_list.billing: заблокированные по балансу
    • blocked_list.billing: заблокированные администратором

    • auth_list.nas.add и auth_list.nas.del: абоненты, которых нужно добавить в лист авторизованных и удалить из него
    • negbal_list.nas.add и negbal_list.nas.del: боненты, которых нужно заблокировать по балансу или снять соответствующую блокировку
    • blocked_list.nas.add и blocked_list.nas.del:абоненты, которым нужно добавить административную блокировку или снять её

  3. Используя полученные списки add и del добавляет следующие команды в стек на отправку - таблица events_stack_compact в БД биллинга:

    Если в списки, загруженные с оборудования, попал адрес, не относящийся к кому-либо из абонентов биллинга, то по нему не будет отправлено никаких команд. В логе синхронизации будет ошибка:
    ERROR' user_id= abonent_id= not found for 10.88.0.72 try direct call

    В приведенном примере, синхронизатор нашел на NAS IP 10.88.0.72, но он не привязан какой-либо учетной записи.


    • auth_list.nas.add: user_add
    • auth_list.nas.del: user_del
    • negbal_list.nas.add: user_redirect
    • negbal_list.nas.del: user_redirect_cancel
    • blocked_list.nas.add: user_drop
    • blocked_list.nas.del: user_accept

Минимально необходимые списки с оборудования:

  • Авторизованные абоненты
  • Отрицательный баланс

    Если по какой-то причине с оборудования пришел пустой список авторизованных абонентов, то автоматическая синхронизация по этому NAS не запустится.

    Пример: добавляем Mikrotik в качестве нового NAS, абонентов на нем еще нет, назначаем новый NAS абоненту, подключаем абонента к нему, но на Mikrotik недоступен API порт 8728, следовательно, данные по абоненту на него не уходят и auth_list остается пустым даже после открытия порта. При попытке запустить синхронизацию вручную в логе синхронизации будет строка:

    В файле /var/oss/core/Mikro_test/cache/sync/%IP-адрес NAS%//auth_list.nas 0 непустых строк

    Чтобы отладить синхронизацию в этом случае, можно создать в биллинге тестового абонента и назначить ему NAS, с которым наблюдается проблема.

Ручной запуск синхронизации

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

Для всех NAS

sync_nas запускает синхронизацию всех маршрутизаторов сразу при запуске, перезапустить её вручную можно следующими способами:

  • В веб-интерфейсе: зайдите в настройки, снимите галочку "Включить систему синхронизации абонентов", сохраните настройки, после чего установите галочку и снова сохраните.
  • В командном интерфейсе:
    chroot /app/asr_billing service sync_nasd restart

Для конкретного NAS

Выполните скрипт sync_nas

chroot /app/asr_billing sync_nas --help

запускается для конкретного NAS, подключает scriptname, сравнивает всё, отправляет команды
sync_nas
--nas <nas ip>
--scriptname <event script in /var/lib/event/>
--oss_path <oss path to nas folder in /var/oss/ 'rtsh list' to list folders ex:/var/oss/core/mikrotik>
--coa_psw <coa password>
--radius_secret <radius secret>
--telnet_password <telnet password>
--debug
# usage:
example: sync_nas --nas 169.1.18.12 --scriptname xge_router.sh --coa_psw 12345pass --debug

Отладка синхронизации

Отладить систему Вы можете анализируя лог её работы:

/app/asr_billing/var/log/sync_nasd.log

Так же Вы можете выполнить скрипт синхронизации конкретного маршрутизатора с повышенным логированием, например:

bash -x /usr/local/bin/sync_nas --nas 169.1.18.12 --scriptname xge_router.sh --coa_psw 12345pass --debug
Файл sync_nasd.log записывается только при запуске системы синхронизации sync_nasd, при запуске непосредственно скрипта sync_nas логи записаны не будут!
Но Вы можете перенаправить вывод скрипта в отдельный файл для последующего анализа, например:
sync_nas --nas 169.1.18.12 --scriptname xge_router.sh --coa_psw 12345pass --debug &> sync_nas_xge_debug.log
Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.