Просмотр Исходного

{toc}
h1. Описание

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

{note}Во всех стандартных схемах опция "*Синхронизировать пользователей на этом NAS*" установлена по-умолчанию и не отключается{note}

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

h2. Настройка

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

h1. Схема работы

С оборудования во временные файлы загружаются списки абонентов, подобные списки выгружаются из биллинга, они сравниваются и если обнаружена разница, на оборудование отправляется ряд команд для исправления ситуации.
В зависимости от используемой схемы интеграции, временные файлы могут располагаться в следующимх местах:
* Базовый скрипт событий: */var/lib/event/sync/*{color:#ff0000}{*}NAS-IP{*}{color}*/*
* OSS-схема: */*{color:#ff0000}{*}OSS-директория{*}{color}*/cache/sync/*{color:#ff0000}{*}NAS-IP{*}{color}*/*

Более детальное описание:
# Используя функцию *users_from_nas()* [скрипта событий|CarbonBilling:Интеграция оборудования интернет], система загружает с оборудования IP-адреса абонентов:
\\
\\
#* *auth_list.nas*: авторизованные
#* *negbal_list.nas*: заблокированные по балансу
#* *blocked_list.nas*: заблокированные администратором
\\
\\
# Используя [API биллинга|CarbonBilling:API REST v2.0] выгружает IP-адреса абонентов и сравнивает с такими же списками загруженными с оборудования:
\\
\\
#* *auth_list.billing*: авторизованные
#* *negbal_list.billing*: заблокированные по балансу
#* *blocked_list.billing*: заблокированные администратором
\\
\\
#* *auth_list.nas.*{color:#3366ff}{*}add{*}{color} и *auth_list.nas.*{color:#ff9900}{*}del{*}{color}: абоненты, которых нужно добавить в лист авторизованных и удалить из него
#* *negbal_list.nas.*{color:#3366ff}{*}add{*}{color} и *negbal_list.nas.*{color:#ff9900}{*}del{*}{color}: боненты, которых нужно заблокировать по балансу или снять соответствующую блокировку
#* *blocked_list.nas.*{color:#3366ff}{*}add{*}{color} и *blocked_list.nas.*{color:#ff9900}{*}del{*}{color}:абоненты, которым нужно добавить административную блокировку или снять её
\\
\\
# Используя полученные списки *add* и *del* добавляет следующие команды в стек на отправку - таблица *events_stack_compact* в БД биллинга:
\\
\\
#* *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

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

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

h1. Ручной запуск синхронизации
h2. Для всех NAS
*sync_nas* запускает синхронизацию всех маршрутизаторов сразу при запуске, перезапустить её вручную можно следующими способами:
* В веб-интерфейсе: зайдите в настройки, снимите галочку "Включить систему синхронизации абонентов", сохраните настройки, после чего установите галочку и снова сохраните.
* В командном интерфейсе:
{code}chroot /app/asr_billing service sync_nasd restart{code}

h2. Для конкретного NAS
Выполните скрипт *sync_nas*
{panel}chroot /app/asr_billing sync_nas --help{panel}
{code}запускается для конкретного 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{code}

h1. Отладка синхронизации
Отладить систему Вы можете анализируя лог её работы:
{code}/app/asr_billing/var/log/sync_nasd.log{code}
Так же Вы можете выполнить скрипт синхронизации конкретного маршрутизатора с повышенным логированием, например:
{code}bash -x /usr/local/bin/sync_nas --nas 169.1.18.12 --scriptname xge_router.sh --coa_psw 12345pass --debug{code}
{note}Файл *sync_nasd.log* записывается только при запуске системы синхронизации *sync_nasd*, при запуске непосредственно скрипта *sync_nas* +логи записаны не будут+!{note}

h1. Синхронизация с NAS XGE
Для того, что бы принудительно синхронизировать абонентов на NAS XGE нужно выполнить следующие действия:

* Удалить старые сессии на XGE:

{code} rm -f /app/xge/var/lib/xge_sessions/* {code}

* Перейдите в контейнер asr_billing:

{code}chroot /app/asr_billing{code}

* Перезапустить sync_nasd:

{code}service sync_nasd restart{code}

* Найдите команду синхронизации данных с NAS XGE:

{code}grep 'sync_nas --nas' /var/log/sync_nasd.log{code}

Для NAS XGE встроенного в SoftRouter команда синхронизации будет выглядеть следующим образом:

{code}sync_nas --nas 169.254.18.12 --scriptname xge_router.sh --coa_psw algosolarsystem --radius_secret algosolarsystem --telnet_login - --telnet_password - --telnet_port - --oss_path - --scheme_name -{code}

* Запустите команду синхронизации.

* Выйдите из контейнера asr_billing:

{code}exit{code}