Установка агента описана в отдельной статье: Установка агента HARD.
Смотрите также
Общие рекомендации
- Для наименований атрибутов и переменных использовать стиль
Train-Case
: слова разделять дефисом, а каждое слово писать с заглавной буквы.- Исключением из данного правила являются переменные, создаваемые фильтром
match
. Поскольку в наименованиях групп регулярных выражений запрещены дефисы, в них в качестве разделителя следует использовать подчёркивание.
- Исключением из данного правила являются переменные, создаваемые фильтром
- Для наименований экземпляров фильтров использовать стиль
snake_case
: слова разделяют подчёркиванием и пишутся строчными буквами. - Избегать дублирования вычислений:
- Повторяющиеся промежуточные вычисления выносить в фильтры, сохраняя результат преобразований в переменных;
- Повторяющиеся проверки заменять установкой тега и дальнейшей проверкой наличия этого тега.
- Избегать дублирования участков конфигурации, используя якори и ссылки на них.
- Для ограничения значений и наименований параметров конфигурации (YAML-ключей) лучше использовать одиночные кавычки, а для ограничения строк в вычисляемых выражениях — двойные.
- Наименования резервных копий конфигурационных файлов, размещённых в конфигурационной директории агента, должны иметь отличное от
yml
расширение. Агент при запуске загружает все файлы*.yml
, которые размещены в конфигурационной директории и всех её поддиректориях.
Заполнение кэша
Отправку всех актуальных профилей и привязок оборудования из основной БД в очереди для агента HARD можно выполнить одним из способов, описанных в разделе Запрос текущего состояния.
Конфигурация
При запуске собирает конфигурацию из всех файлов *.yml
, которые размещены в конфигурационной директории /etc/hydra/hard/
(/etc/hydra-testing/hard-testing/
для тестового экземпляра) и всех её поддиректориях. Как правило, используется следующая структура конфигурационных файлов:
- Файл
hard.yml
— общие настройки агента; - Файл
batch.yml
— настройки работы агента в режиме загрузки аккаунтинга; - Директория
plugins
:- Файл
base.yml
— фильтры и конфигурация для плагинаbase
; - Файл
proxy.yml
— конфигурация для плагинаproxy
.
- Файл
Значения по умолчанию всех параметров хранятся в директории установки агента. Для основного экземпляра это /opt/hydra/hard/conf/
, а для тестового — /opt/hydra/hard-testing/conf/
. Итоговая конфигурация формируется при запуске агента как результат наложения пользовательской (из конфигурационной директории) конфигурации на дистрибутивную (значения по умолчанию), причём для совпадающих ключей пользовательские значения имеют больший приоритет.
В пользовательской части конфигурации рекомендуется указывать только те параметры, которые отличаются от составленной разработчиками агента конфигурации по умолчанию.
Итоговую конфигурацию агент записывает в лог непосредственно во время запуска:
Общие настройки
Основные параметры агента HARD обычно размещаются в файле /etc/hydra/hard/hard.yml
(/etc/hydra-testing/hard-testing/hard.yml
для тестового экземпляра).
Список активных плагинов
Ключ enabled_plugins
.
В данном ключе в виде списка перечисляются все экземпляры плагинов, которые должны использоваться агентом. Каждый экземпляр указывается в формате <plugin_name>/<plugin_instance_name>
, где <plugin_name>
— наименование плагина, а <plugin_instance_name>
— наименование конкретного его экземпляра.
В целом, в конфигурации могут быть описаны и другие экземпляры плагинов. Работать будут только те, которые указаны в данном списке.
Логирование
Секции log
→ common
(общий лог агента) и log
→ batch
(лог загрузчика аккаунтинга).
Ключ | Описание |
---|---|
level | Уровень логирования:
|
path | Полный путь к лог-файлу |
rotate → size | Максимальный допустимый размер лог-файла в килобайтах. По достижении файлом указанного размера агент выполняет ротацию лога. |
rotate → count | Количество хранимых лог-файлов. |
Путь к PID-файлу
Ключ pid_path
.
В данном ключе указывается полный путь к файлу, в который агент при запуске запишет PID главного процесса.
Системные фильтры
Секция filters
.
Данные фильтры используются серверными процессами агента. Наиболее важным из таких фильтров и единственным, требующим настройки является фильтр agent.basic_auth
, определяющий данные для базовой HTTP-аутентификации клиента. В роли клиента, как правило, выступает модуль модуль rlm_perl
FreeRADIUS — в нём для работы с агентом должны быть указаны логин и пароль из конфигурации этого агента.
Ключ | Описание |
---|---|
| Логин базовой аутентификации |
filters → agent.basic_auth → main → password | Пароль базовой аутентификации |
Серверные процессы агента
Секция server
.
Для взаимодействия с FreeRADIUS используется клиент-серверная архитектура: агент является сервером, а модуль rlm_perl
FreeRADIUS — клиентом. В данной секции задаются параметры, определяющие работу серверной части агента.
Ключ | Описание |
---|---|
address | IP-адрес сетевого интерфейса, на котором главный процесс агента должен принимать запросы |
port | Номер TCP-порта, на котором главный процесс агента должен принимать запросы |
workers | Количество дочерних Worker-процессов агента, которые осуществляют непосредственную обработку полученных от FreeRADIUS запросов. |
abort_attempts | Количество попыток отправки дочернему процессу сигнала SIGTERM до того как завершение процесса будет выполнено принудительно посредством отправки SIGKILL . |
abort_delay | Задержка в секундах между попытками отправки сигнала SIGTERM дочерним процессам. |
call_stack | Список, определяющий порядок вызова системных фильтров. Как правило, не требует измений и состоит из фильтра базовой аутентификации agent.basic_auth/main , профилировщика agent.profiler/main и обработчика ошибок agent.exception_handler/main . |
Подключение к БД кэша (MongoDB)
Секция connection_pools
→ mongo
→ <spec_name>
.
В данной секции может быть описано несколько спецификаций с различными наименованиями <spec_name>
для подключения агента к БД кэша. Например, одна из них может содержать параметры подключения к кластеру MongoDB Replica Set для обработки RADIUS-запросов, а другая — только к одному локальному экземпляру MongoDB для загрузки аккаунтинга в основную БД и обновления профилей и привязок оборудования в кэше.
Для работы агента HARD версии 4 рекомендуется использовать MongoDB версии 3. Установка может быть выполнена с использованием deb-пакета hydra-mongodb3
из репозитория компании Латера (deb.hydra-billing.com
).
Ключ | Описание |
---|---|
host | IP-адрес или DNS-имя сервера, для подключения к отдельному экземпляру mongod . |
port | Номер TCP-порта, для подключения к отдельному экземпляру mongod . |
name | Наименование базы данных. |
user | Имя пользователя базы данных. У пользователя должны быть полные права на управления объектами БД. |
password | Пароль пользователя базы данных. |
replica_set → name | Наименование кластера (MongoDB Replica Set) |
replica_set → uris | Список адресов всех участников кластера (MongoDB Replica Set) в формате <host>:<port> , где <host> — IP-адрес или DNS-имя, а <port> — номер TCP-порта. |
indexes | Настройки управления индексами базы данных. Агент при подключении к БД автоматически проверяет наличие всех необходимых для его эффективной работы коллекций и индексов: добавляет недостающие и удаляет лишние. |
Настройка агента для работы в кластерном режиме описана в отдельной статье: Кластерный режим работы.
Подключение к БД провижининга (Oracle)
Секция connection_pools
→ database
→ main
.
В данной секции определяются параметры подключения агента к основной базе данных — провижинингу Гидры.
Ключ | Описание | ||||||
---|---|---|---|---|---|---|---|
name | Наименование (net service name) базы данных. Параметры подключения к ней описываются в файле tnsnames.ora . | ||||||
user | Имя пользователя базы данных (обычно AIS_RADIUS ). | ||||||
password | Пароль пользователя базы данных. | ||||||
hydra → user | Логин пользователя Гидры для доступа к приложению RADIUS-сервер. Такой пользователь, помимо доступа к приложению, должен обладать служебным правом:
| ||||||
hydra → password | Пароль пользователя Гидры для доступа к приложению RADIUS-сервер. |
Синхронизация кэша с провижинингом
Секция syncer
.
Ключ | Описание |
---|---|
mongo_pool | Наименование спецификации подключения к БД кэша. |
stomp → host | IP-адрес или DNS-имя сервера, для подключения к брокеру ActiveMQ по протоколу STOMP. |
stomp → port | Номер TCP-порта, для подключения к ActiveMQ. |
stomp → login | Логин для подключения к ActiveMQ. |
stomp → password | Пароль для подключения к ActiveMQ. |
queues → profiles | Наименование ActiveMQ-очереди с сообщениями об изменении профилей оборудования. |
queues → binds | Наименование ActiveMQ-очереди с сообщениями об изменении привязок абонентского оборудования к операторскому. |
Хуки
Секция hooks
.
Архитектурой агента предусмотрено выполнение каких-либо дополнительных действий (хуков) при обработке запросов.
Загрузка сведений о сессиях и потреблённых услугах в БД провижининга
Параметры работы агента в таком режиме рекомендуется указывать в отдельном файле: обычно это файл /etc/hydra/hard/batch.yml
для основного экземпляра агента и /etc/hydra-testing/hard-testing/batch.yml
— для тестового.
Ключ | Описание |
---|---|
batch → mongo_pool | Наименование спецификации подключения к БД кэша. |
batch → pid_path | Полный путь к файлу, в который агент запишет PID процесса загрузки аккаунтинга. |
sessions_loader → bulk_size_limit | Загрузка данных выполняется порционно. Данный параметр ограничивает количество сессий в одной порции. |