Корневые устройства
Все устройства разделены на группы авторизации, каждая со своим корневым устройством. Каждая из групп авторизации управляется отдельным изолированным Access-сервером, либо несколькими Access-серверами, которые работают в режиме кластера. Контроль IP-ресурсов, количества одновременных сессий сервисов производится только в пределах группы. Т.е. группы авторизации позволяют разделить предоставление услуг на не взаимосвязанные сегменты, что повышает масштабируемость.
В пределах группы авторизации может быть одна или несколько групп обработки. Каждая из групп обрабатывается своим Accounting-сервером, либо несколькими Accounting-серверами, работающими в режиме кластера. Корневой узел группы обработки должен быть выделен отдельным типом. Для простоты, корневые узлы группы авторизации и обработки могут быть объединены в один - таким во многих примерах в документации является корневое устройство "Access+Accounting".
Для корректной работы InetAccounting необходимо сконфигурировать в корневом устройстве обработчики тарификации и сброса данных в БД, представленные ниже.
В конфигурации корневого узла группы обработки (BGInetAccounting) обязательно нужно указать параметры тарификации и обработки соединений. Для этого нужно задать "worker", указав количество потоков для него, обработчики, которые будут работать в этом worker'е и их параметры. Каждый worker назначается с идентификатором, например, accounting.worker.1. и accounting.worker.2. Каждый обработчик также задаётся с идентификатором. Таким образом, может быть несколько worker'ов и несколько обработчиков в них.
От данных параметров зависит, как часто InetAccounting будет тарифицировать сессии и как быстро будет реагировать на изменения баланса, параметров тарифа и т.п, отправляя задания на изменения скорости/параметров сессий.
Параметры обработчика тарификации (tariffication):
minDeltaAmount - минимальная сумма нетарифицированного трафика, при которой тарифицировать соединение. Включает в себя все трафики в байтах плюс время в секундах, которое ещё не было протарифицировано;
delay - пауза между заданиями тарификации;
batchSize - максимальное количество протарифицированных соединений за одно задание.
Параметры обработчика соединений без трафика (tracking - используется для отслеживания изменения опций модуля для соединений, у которых нет трафика):
delay (delay.millis) - пауза между заданиями в секундах (в миллисекундах);
batchSize - максимальное количество протарифицированных соединений за одно задание.
Параметры обработчика сервисов без соединений (serv.tracking - используется для отслеживания изменения опций модуля для сервисов, у которых нет сессии и, соответственно, нет трафика):
delay (delay.millis) - пауза между заданиями в секундах (в миллисекундах);
batchSize - максимальное количество протарифицированных соединений за одно задание;
servTypeIds - типы сервисов, которые нужно обрабатывать (если не указано - то все типы);
accountingPeriodActivate - нужно ли активировать учётные периоды при проверке, 1 - активировать, 0 - не активировать.
Параметры обработчика событий (event.tracking - предназначен для более быстрой реакции на события, например, изменение статуса договора, активация тарифной опции):
delay (delay.millis) - пауза между заданиями в секундах (в миллисекундах);
batchSize - максимальное количество обработанных сервисов за одно задание.
Параметры сброса в базу (flushing):
minDeltaAccount - минимальная сумма несброшенной наработки соединения, при которой нужно сбрасывать в базу;
delay (delay.millis) - пауза между заданиями в секундах (в миллисекундах);
batchSize - максимальное количество сброшенных соединений за одно задание.
Параметры обработчика завершения сессий (finishing - завершает соединения, а также закрывает соединения по таймауту):
delay (delay.millis) - пауза между заданиями в секундах (в миллисекундах);
batchSize - максимальное количество протарифицированных соединений за одно задание.
Пример конфигурации:
# Количество потоков на worker
accounting.worker.
1
.thread.count=
2
# Тарификатор:
# минимальная сумма трафика, при которой тарифицировать соединение
accounting.worker.
1
.tariffication.
1
.minDeltaAmount=
0
# пауза между заданиями тарификации
accounting.worker.
1
.tariffication.
1
.delay=
10
# максимальное количество тарифицируемых соединений за задание
accounting.worker.
1
.tariffication.
1
.batchSize=
1000
# Трекер (обработка сессий без наработки):
# пауза между заданиями трекинга
accounting.worker.
1
.tracking.
1
.delay=
10
# максимальное количество проверенных соединений за задание
accounting.worker.
1
.tracking.
1
.batchSize=
1000
# Трекер (обработка сервисов модуля без активных сессий, по умолчанию не требуется):
# пауза между заданиями трекинга
accounting.worker.
1
.serv.tracking.
1
.delay=
20
# максимальное количество проверенных соединений за задание
accounting.worker.
1
.serv.tracking.
1
.batchSize=
100
# Трекер (обработка событий):
# пауза между заданиями трекинга (в миллисекундах)
accounting.worker.
1
.event.tracking.
1
.delay.millis=
200
# максимальное количество проверенных сервисов за задание
accounting.worker.
1
.event.tracking.
1
.batchSize=
500
# Количество потоков на worker
accounting.worker.
2
.thread.count=
1
# Сброс в базу трафиков и наработки:
# минимальная наработка, при которой сбрасывать соединение в базу
accounting.worker.
2
.flushing.
1
.minDeltaAccount=
0
# минимальная сумма трафика, при которой сбрасывать соединение в базу
accounting.worker.
2
.flushing.
1
.minDeltaAmount=
0
# пауза между заданиями сброса в базу
accounting.worker.
2
.flushing.
1
.delay=
20
# максимальное количество сброшенных соединений в базу за задание
accounting.worker.
2
.flushing.
1
.batchSize=
500
# Количество потоков на worker
accounting.worker.
3
.thread.count=
1
# Завершитель соединений:
# пауза между заданиями
accounting.worker.
3
.finishing.
1
.delay=
20
# максимальное количество сброшенных соединений в базу за задание
accounting.worker.
3
.finishing.
1
.batchSize=
500
Пример конфигурации с несколькими обработчиками тарификации (для более частой тарификации соединений с большим трафиком):
# Количество потоков на worker
accounting.worker.
1
.thread.count=
3
# Тарификатор:
# минимальная сумма трафика, при которой тарифицировать соединение
accounting.worker.
1
.tariffication.
1
.minDeltaAmount=
104857600
# пауза между заданиями тарификации
accounting.worker.
1
.tariffication.
1
.delay=
10
# максимальное количество тарифицируемых соединений за задание
accounting.worker.
1
.tariffication.
1
.batchSize=
1000
accounting.worker.
1
.tariffication.
2
.minDeltaAmount=
10485760
accounting.worker.
1
.tariffication.
2
.delay=
10
accounting.worker.
1
.tariffication.
2
.batchSize=
1000
accounting.worker.
1
.tariffication.
3
.minDeltaAmount=
0
accounting.worker.
1
.tariffication.
3
.delay=
15
accounting.worker.
1
.tariffication.
3
.batchSize=
1000
# Трекер (обработка сессий без наработки):
# пауза между заданиями трекинга
accounting.worker.
1
.tracking.
1
.delay=
20
# максимальное количество проверенных соединений за задание
accounting.worker.
1
.tracking.
1
.batchSize=
1000
# Трекер (обработка событий):
# пауза между заданиями трекинга (в миллисекундах)
accounting.worker.
1
.event.tracking.
1
.delay.millis=
200
# максимальное количество проверенных сервисов за задание
accounting.worker.
1
.event.tracking.
1
.batchSize=
500
# Количество потоков на worker
accounting.worker.
2
.thread.count=
1
# Сброс в базу трафиков и наработки:
# минимальная наработка, при которой сбрасывать соединения в базу
accounting.worker.
2
.flushing.
1
.minDeltaAccount=
0
# минимальная сумма трафика, при которой сбрасывать соединение в базу
accounting.worker.
2
.flushing.
1
.minDeltaAmount=
0
# пауза между заданиями сброса в базу
accounting.worker.
2
.flushing.
1
.delay=
30
# максимальное количество сброшенных соединений в базу за задание
accounting.worker.
2
.flushing.
1
.batchSize=
500
# Количество потоков на worker
accounting.worker.
3
.thread.count=
1
# Завершитель соединений:
# пауза между заданиями
accounting.worker.
3
.finishing.
1
.delay=
20
# максимальное количество сброшенных соединений в базу за задание
accounting.worker.
3
.finishing.
1
.batchSize=
500
Для обработки сервисов без сессий нужно добавить ещё один обработчик (а также можно увеличить количество потоков для accounting.worker.1 или вынести обработчик в отдельный worker):
# Трекер (обработка сервисов без сессий):
# пауза между заданиями трекинга
accounting.worker.
1
.serv.tracking.
1
.delay=
60
# максимальное количество проверенных сервисов за задание
accounting.worker.
1
.serv.tracking.
1
.batchSize=
500
# типы сервисов, которые нужно обрабатывать, через запятую
# (если пусто - будут обрабатываться сервисы всех типов!)
accounting.worker.
1
.serv.tracking.
1
.servTypeIds=
# нужно ли активировать учетный период при обработке
# (по умолчанию учетный период активируется при авторизации по RADIUS/DHCP или появлении новой сессии)
accounting.worker.
1
.serv.tracking.
1
.accountingPeriodActivate=
1