Общее описание
С версии SoftWLC 1.27 возможен запуск сервиса eltex-PCRF в контейнере.
При запуске сервиса в контейнере надо учитывать, что доступ к БД MariaDB потребуется разрешить с любого адреса.
Подготовка окружения
Разрешить доступ к БД
MariaDB
Чтобы разрешить доступ до БД с любого адреса:
- закомментировать параметр
bind-addressв /etc/mysql/mariadb.conf.d/50-server.cnf - перезапустить сервис
MariaDB
sudo cp /etc/mysql/mariadb.conf.d/50-server.cnf /etc/mysql/mariadb.conf.d/50-server.cnf.bak sudo sed -i -e "s/\(bind-address.*=.*\)/#\1/" /etc/mysql/mariadb.conf.d/50-server.cnf sudo systemctl restart mariadb.service
Добавить права для доступа к БД:
GRANT ALL ON eltex_auth_service.* TO 'javauser'@'%' IDENTIFIED BY 'javapassword'; GRANT ALL ON eltex_ems.* TO 'javauser'@'%' IDENTIFIED BY 'javapassword'; GRANT ALL ON wireless.* TO 'javauser'@'%' IDENTIFIED BY 'javapassword'; GRANT ALL ON radius.* TO 'javauser'@'%' IDENTIFIED BY 'javapassword'; FLUSФалы H PRIVILEGES;
Разрешить доступ в RADIUS с хоста eltex-PCRF
Открыть Eltex-EMS, открыть меню "RADIUS" → "Управление точками доступа" и нажать кнопку "Добавить":
Файлы конфигурации
Для запуска сервиса требуется создать папку для запуска контейнера и в ней подготовить файлы с переменными окружения ".env", "eltex-pcrf.env", файл конфигурации для запуска сервиса с помощью docker-compose "docker-compose.yml"
Вместо <tag> необходимо указать последнюю актуальную версию SoftWLC (например 1.27).
Запуск контейнера
Запуск на хосте, где ранее уже была проведена однохостовая установка скриптом-установщиком eltex-softwlc-helper-latest.sh
Если выполняется запуск контейнера на хосте, где ранее уже была проведена однохостовая установка скриптом-установщиком eltex-softwlc-helper-latest.sh - необходимо:
- Выполнить настройку файлов окружения eltex-PCRF.
Остановить службу eltex-PCRF командой:
systemctl stop eltex-pcrf
Удалить пакет eltex-PCRF с сохранением БД:
sudo apt purge eltex-pcrf
Запустить контейнер командой:
docker-compose up -d
- Проверить работоспособность сервиса открыв в браузере его консоль по адресу "http://<IP-адрес сервиса PCRF>:7070".
Запуск на отдельном хосте
- Выполнить настройку файлов окружения eltex-PCRF.
Запустить контейнер командой:
docker-compose up -d
- Проверить работоспособность сервиса открыв в браузере его консоль по адресу "http://<IP-адрес сервиса PCRF>:7070".
Управление логированием
В рамках поддержанных переменных окружения можно указать уровень логирования сервиса eltex-pcrf, вывод логов в консоль, отправку на сторонний сервер или использовать папку на хостовой машине для записи логов в файлы. Значения переменных задаются в файлах "docker-compose.yml" и ".env".
Переменные файла"docker-compose.yml":
LOG_LEVEL=INFO - уровень логирования сервиса eltex-pcrf.
Уровень логирования, указанный в настройках "-LOG_LEVEL" определяет максимальный уровень логирования, который может быть выведен в консоль или перенаправлен на сторонний сервер.
- CONSOLE_LEVEL=INFO - уровень логов консоли (но не выше уровня, указанного в настройке "NBI_LOG_LEVEL").
- LOGFILE_HIKARI_LEVEL=OFF - уровень логов взаимодействия с БД MariaDB.
- LOGFILE_SERVICE_LEVEL=OFF - уровень логов сервиса eltex-PCRF.
- LOGFILE_HAZELCAST_LEVEL=OFF - уровень логов hazecast.
- LOGFILE_RADIUS_LEVEL=OFF - уровень логов взаимодействия с radius.
- LOGFILE_GENERIC_AP_LEVEL=OFF - уровень логов для generic AP
- LOGFILE_SHAPER_LEVEL=OFF - уровень логов для shaper, которые могут быть назначены на домен или SSID.
- LOGFILE_I18N_LEVEL=OFF
Переменные файла ".env" (настройки отправки логов на сторонний сервер):
- GELF_LEVEL=OFF - уровень логов, перенаправляемых на сторонний сервер (но не выше уровня, указанного в настройке "NBI_LOG_LEVEL").
- GELF_HOST=udp:localhost - адрес стороннего сервера сбора логов.
- GELF_PORT=12201 - порт стороннего сервера сбора логов.
Для записи файлов логов на хостовую машину требуется:
Создать папку для записи логов и выставить ей UID=100001, GID=100001:
sudo mkdir -p /var/log/eltex-pcrf && sudo chown -R 100001:100001 /var/log/eltex-pcrf
Раскомментировать в файле docker-compose.yml строку:
- /var/log/eltex-pcrf:/var/log/eltex-pcrf
Перезапустить контейнер:
sudo docker-compose up -d
Приложения
Список используемых переменных
| Переменная | Значение по умолчанию |
|---|---|
| Файл .env | |
| ELTEX_HUB | hub.eltex-co.ru/softwlc |
| SWLC_VERSION | 1.<актуальная версия SoftWLC> |
| TZ | Asia/Novosibirsk |
| GELF_LEVEL | OFF |
| GELF_HOST | udp:localhost |
| GELF_PORT | 12201 |
| Файл eltex-pcrf.env | |
| PCRF_auth.address | 0.0.0.0 |
| PCRF_auth.port | 31812 |
| PCRF_auth.mac.open.timeout.s | 3600 |
| PCRF_auth.mac.welcome.service | WELCOME |
| PCRF_acct.address | 0.0.0.0 |
| PCRF_acct.ports__0 | 1813 |
| PCRF_acct.ports__1 | 31813 |
| PCRF_acct.sorm.address | eltex-sorm2-replicator |
| PCRF_acct.sorm.port | 41813 |
| PCRF_acct.sorm.mirroring.enabled | false |
| PCRF_aaa.host | 127.0.0.1 |
| PCRF_aaa.secret | testing123 |
| PCRF_aaa.auth.port | 1812 |
| PCRF_aaa.acct.port | 1813 |
| PCRF_aaa.rest.port | 7080 |
| PCRF_aaa.timeout | 10 |
| PCRF_aaa.attempts | 1 |
| PCRF_web.monitoring.port | 7070 |
| PCRF_cluster.enable | false |
| PCRF_cluster.eventBusPort | 5801 |
| HZ_NETWORK_PUBLICADDRESS | 192.168.0.1 |
| HZ_NETWORK_PORT_PORT | 5701 |
| HZ_NETWORK_JOIN_TCPIP_MEMBERS | 192.168.0.1,192.168.0.2 |
| PCRF_radius__url | jdbc:mysql://localhost/radius?useUnicode=true&characterEncoding=utf8&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false |
| PCRF_radius__user | javauser |
| PCRF_radius__password | javapassword |
| PCRF_radius__max_pool_size | 16 |
| PCRF_sql.pcrf__url | jdbc:mysql://eltex-mysql/eltex_pcrf?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&socketTimeout=5000 |
| PCRF_sql.pcrf__user | javauser |
| PCRF_sql.pcrf__password | javapassword |
| PCRF_sql.pcrf__max_pool_size | 60 |
| PCRF_sql.ott__url | jdbc:mysql://eltex-mysql/eltex_ott?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&socketTimeout=5000 |
| PCRF_sql.ott__user | javauser |
| PCRF_sql.ott__password | javapassword |
| PCRF_sql.ott__max_pool_size | 32 |
| PCRF_session.storage__default.interval.s | 600 |
| PCRF_bras.coa__coa.timeout | 10 |
| PCRF_bras.coa__coa.attempts | 1 |
| PCRF_bras.coa__coa.secret | testing123 |
| PCRF_bras.coa__remote.coa.port | 3799 |
| PCRF_bras.coa__log.clean.period.s | 604800 |
| PCRF_bras.coa__log.store.period__period | 14 |
| PCRF_bras.coa__log.store.period__unit | D |
| PCRF_bras.coa__worker.pool.size | 20 |
| PCRF_sql.ems__url | jdbc:mysql://localhost/eltex_ems?useUnicode=true&characterEncoding=utf8&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false |
| PCRF_sql.ems__user | javauser |
| PCRF_sql.ems__password | javapassword |
| PCRF_sql.ems__max_pool_size | 16 |
| PCRF_sql.wireless__url | jdbc:mysql://localhost/wireless?useUnicode=true&characterEncoding=utf8&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false |
| PCRF_sql.wireless__user | javauser |
| PCRF_sql.wireless__password | javapassword |
| PCRF_sql.wireless__max_pool_size | 16 |
| PCRF_language | en |
| PCRF_radius.nbi__wdsl.url | http://localhost:8080/axis2/services/RadiusNbiService?wsdl |
| PCRF_radius.nbi__username | softwlc_service |
| PCRF_radius.nbi__password | softwlc |
| PCRF_radius.nbi__connection.timeout.ms | 30000 |
| PCRF_radius.nbi__request.timeout.ms | 120000 |
| PCRF_tariffs.update.interval__interval | 1 |
| PCRF_tariffs.update.interval__unit | hours |
| PCRF_tariffs.update.interval__apb_enabled | false |
| PCRF_tariffs.update.interval__apb_host | localhost |
| PCRF_tariffs.update.interval__apb_port | 8090 |
| PCRF_filters.cache.dir | /var/lib/eltex-pcrf/filters/ |
| PCRF_clickhouse__url | jdbc:clickhouse://localhost:8123/radius |
| PCRF_clickhouse__user_name | javauser |
| PCRF_clickhouse__user_password | javapassword |
| PCRF_clickhouse__actualization_period_ms | 15000 |
| PCRF_accounting.options__use_clickhouse | false |
| PCRF_accounting.options__use_mysql | true |
| PCRF_accounting.options__batch_interval_ms | 300000 |
| PCRF_accounting.options__max_queue_load | 100 |
| PCRF_generic.ap.registrar__max_aps_in_queue | 30 |
| PCRF_generic.ap.registrar__ap_register_interval_ms | 600000 |
| PCRF_generic.ap.registrar__added_ap_cache_ttl_ms | 600000 |
| PCRF_generic.ap.registrar__host | localhost |
| PCRF_generic.ap.registrar__port | 8080 |
| PCRF_generic.ap.registrar__worker_pool_size | 8 |
| PCRF_kafka__mcd.enabled | false |
| PCRF_kafka__circuit.breaker__timeout.ms | 30000 |
| PCRF_kafka__circuit.breaker__max.failures | 60000 |
| PCRF_kafka__circuit.breaker__reset.ms | 3 |
| PCRF_kafka__producer__bootstrap.servers | localhost:9092 |
| PCRF_kafka__producer__linger.ms | 1000 |
| PCRF_kafka__producer__topic | mcd |
| PCRF_kafka__producer__max.block.ms | 30000 |
| PCRF_kafka__producer__request.timeout.ms | 14000 |
| PCRF_kafka__producer__delivery.timeout.ms | 30000 |
| PCRF_kafka__producer__acks | 1 |
| PCRF_kafka__producer__retries | 1 |
| Файл docker-compose.yml | |
| LOG_LEVEL | INFO |
| CONSOLE_LEVEL | INFO |
| LOGFILE_HIKARI_LEVEL | OFF |
| LOGFILE_SERVICE_LEVEL | OFF |
| LOGFILE_HAZELCAST_LEVEL | OFF |
| LOGFILE_RADIUS_LEVEL | OFF |
| LOGFILE_GENERIC_AP_LEVEL | OFF |
| LOGFILE_SHAPER_LEVEL | OFF |
| LOGFILE_I18N_LEVEL | OFF |
