Данное приложение может быть установлено в систему Debian виде пакета hex
или hex-testing
из репозитория deb.hydra-billing.com
. Подключение данного репозитория может быть выполнено сотрудниками компании Латера в рамках услуги техподдержки.
Конфигурация агента HEX состоит из единственного файла /etc/hydra/hex/hex.yml
(/etc/hydra-testing/hex-testing/hex.yml
для тестового экземпляра) и также как и для остальных агентов и приложений объединяется с конфигурацией по умолчанию /opt/hydra/hex/conf/hex.yml
(/opt/hydra/hex-testing/conf/hex.yml
для тестового экземпляра).
Параметры подключения к ActiveMQ
Для получения агентом HEX команд из Гидры и передачи им обратно результатов их выполнения используется брокер ActiveMQ. Взаимодействие с ним осуществляется по протоколу OpenWire. В конфигурационном файле агента, в ключе activemq
→ url
необходимо указать хост и порт брокера в формате tcp://<hostname_or_ip>:<port>
.
Карту соответствия очередей для получения команд и отправки результатов их выполнения необходимо указать в виде списка пар ключ-значение в блоке hydra
→ command_queues
. Формат списка позволяет использовать один экземпляр агента для обработки команд одновременно от нескольких филиалов в Гидре: для каждого филиала используется отдельная пара очередей команд и результатов их выполнения. В простейшем же случае данный список будет состоять лишь из одной пары. Указанная очередь команд должна быть связана в ActiveMQ с очередью HP_COMMANDS_*
БД Гидры, а очередь результатов выполнения — с очередью HP_COM_RES_*
БД Гидры.
Ограничение количества потоков выполнения команд
Команды агентом выполняются в многопоточном режиме, независимо друг от друга. Максимальное количество потоков определяется ключом конфигурации hydra
→ pipe_concurrency
. Значение по умолчанию — 100
. Фактическое количество потоков выполнения команд зависит от параметров шаблонов конфигурации, типов сессий и общего количества команд в очереди — данный параметр определяет только общее ограничение сверху.
Ограничение времени выполнения команд
Максимальное время выполнения отдельной команды ограничивается указанным в ключе hydra
→ execution_timeout
количеством миллисекунд. Значение по умолчанию — 60000
. Если команда не успевает выполниться за это время, агент принудительно завершает запущенный процесс путём отправки ему сигнала SIGKILL
.
Пример конфигурации
log: default: # Уровень логирования level: 'debug' # Полный путь к файлу лога path: '/var/log/hydra/hex/hex.log' # Параметры ротации лога rotate: # Максимальный размер одного файла в килобайтах size: 20480 # Максимальное количество хранимых файлов count: 50 activemq: # Хост и порт для подключения к ActiveMQ по протоколу OpenWire url: 'failover:tcp://192.168.100.200:61616' hydra: # Карта соответствия очередей команд и результатов их выполнения command_queues: # <Очередь для приёма команд>: <Очередь для отправки результата> - 'hydra_commands_offline-telecom': 'hydra_command_results_offline-telecom' - 'hydra_commands_vasilki-telecom': 'hydra_command_results_vasilki-telecom'
Управление состоянием
При установке включается автоматический запуск агента во время загрузки системы. Управлять состоянием агента вручную можно с помощью инициализационного скрипта /etc/init.d/hex
(/etc/init.d/hex-testing
для тестового экземпляра):
user@server:~$ sudo /etc/init.d/hex <command>
Вместо <command>
следует использовать одну из команд:
start
— запуск агента в нормальном режиме;run
— запуск агента в режиме отладки с выводом лога в консоль (останов выполняется по нажатиюCtrl+C
),stop
— останов агента,restart
— перезапуск агента.
При останове агента необходимо учитывать, что этот процесс может занять продолжительное время. Сразу после получения сигнала остановки агент отключается от очереди команд, но при этом он продолжает выполнять те команды, которые уже были им получены. Фактическое завершение работы агента произойдёт после того как все полученные им команды будут выполнены, а соответствующие результаты отправлены.
Управление памятью приложения
Для изменения параметров выделенной HEX'у памяти необходимо в docker-compose.yml в блоке environment определить переменную JAVA_TOOL_OPTIONS. Пример настройки:
version: '3.6' services: hex: volumes: - /etc/hydra/hex/hex.yml:/etc/hydra/hex/hex.yml:ro image: docker.dl.latera.ru:2000/hex container_name: hex environment: - TZ=Europe/Moscow - JAVA_TOOL_OPTIONS=-Xms64M -Xmx1G