Общее описание
С версии SoftWLC 1.24 возможен запуск сервиса eltex-radius-nbi в контейнере.
При запуске сервиса в контейнере надо учитывать, что доступ к БД MariaDB потребуется разрешить с любого адреса. Так же потребуется переопределить настройки проксирующего сервиса nginx.
Подготовка окружения
Разрешить доступ к БД
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 PRIVILEGES ON *.* TO 'javauser'@'%' WITH GRANT OPTION GRANT ALL PRIVILEGES ON `eltex-jobs`.* TO 'javauser'@'%' GRANT ALL PRIVILEGES ON `radius`.* TO 'javauser'@'%' GRANT ALL PRIVILEGES ON `wireless`.* TO 'javauser'@'%' GRANT ALL PRIVILEGES ON `eltex_jerry`.* TO 'javauser'@'%' GRANT ALL PRIVILEGES ON `eltex_sorm2`.* TO 'javauser'@'%' GRANT ALL PRIVILEGES ON `eltex_pcrf`.* TO 'javauser'@'%' GRANT ALL PRIVILEGES ON `eltex_ott`.* TO 'javauser'@'%' GRANT ALL PRIVILEGES ON `eltex_wifi_customer_cab`.* TO 'javauser'@'%' GRANT ALL PRIVILEGES ON `eltex_jobs`.* TO 'javauser'@'%' GRANT ALL PRIVILEGES ON `eltex_wids`.* TO 'javauser'@'%' GRANT ALL PRIVILEGES ON `eltex_auth_service`.* TO 'javauser'@'%' GRANT ALL PRIVILEGES ON `eltex_bruce`.* TO 'javauser'@'%' GRANT ALL PRIVILEGES ON `eltex_ont`.* TO 'javauser'@'%' GRANT ALL PRIVILEGES ON `eltex_ems`.* TO 'javauser'@'%' GRANT ALL PRIVILEGES ON `eltex_alert`.* TO 'javauser'@'%' GRANT ALL PRIVILEGES ON `ELTEX_PORTAL`.* TO 'javauser'@'%' GRANT ALL PRIVILEGES ON `eltex_ngw`.* TO 'javauser'@'%' GRANT ALL PRIVILEGES ON `eltex_doors`.* TO 'javauser'@'%' GRANT SELECT ON `mysql`.`proc` TO 'javauser'@'%' FLUSH PRIVILEGES;
Файлы конфигурации
Для запуска сервиса требуется создать папку для запуска контейнера и в ней подготовить файлы с переменными окружения ".env", "eltex-radius-nbi.env" и файл конфигурации для запуска сервиса с помощью docker-compose "docker-compose.yaml"
Параметры окружения в файле "eltex-radius-nbi.env" приведены исходя из дефолтных настроек конфигурации eltex-radius-nbi, которые находятся в файле "/etc/eltex-radius-nbi/radius_nbi_config.txt" за исключением IP-адресов, которые после запуска сервиса в контейнере не смогут быть доступны через localhost. Если выполняется переход на запуск "eltex-radius-nbi" в контейнере - необходимо перенести значения параметров из файла конфигурации, которые были изменены и отличаются от дефолтных.
Создание/копирование сертификата
При установке сервиса eltex-radius-nbi как приложения создается сертификат CA. При запуске сервиса в контейнере сертификат не создается - потребуется создать его вручную.
Данное действие выполняется как правило один раз, при первоначальной установке сервиса. Так же возможна перегенерация уже созданных сертификатов.
При разворачивании сервиса надо учитывать два возможных сценария:
- Сервис разворачивается в первые - потребуется сгенерировать новый сертификат CA.
- Выполняется перевод ранее установленного сервиса на работу в контейнере - в этом случае рекомендуется использовать ранее созданный сертификат.
Создание сертификата при запуске сервиса в контейнере
В случае, если выполняется первый запуск сервиса в контейненере - потребуется сгенерировать сертификат CA. Для этого потребуется создать файл для docker-compose "docker-compose-ca.yml":
Выполнить запуск:
sudo docker-compose -f docker-compose-ca.yml up
После этого в системе появится новый docker volume 'compose_eltex-radius-ca' с файлами сертификатов.
После создания сертификата контейнер завершит работу. При повторном запуске будет выполнена повторная генерация сертификата, старый при этом будет перезаписан.
Имя папки, в которой создается сертификат определяется именем папки, в которой находится файл docker-compose-ca.yml и выполняется запуск контейнера.
"/var/lib/docker/volumes/<имя папки в которой выполняется запуск контейнера>_eltex-radius-ca/_data"
Копирование сертификата
В случае, если выполняется переход на запуск eltex-radius-nbi в контейнере - потребуется скопировать старый сертификат в новое месторасположение (создавать сертификат заново не надо!):
За архивировать папку с сертификатом на хосте, где установлен пакет eltex-radius-nbi:
sudo tar cvzf certs.tar.gz -C /var/lib/eltex-radius-nbi .
Перенести на новый сервер (при необходимости) и распаковать:
sudo tar xvzf certs.tar.gz -C /var/lib/docker/volumes/compose_eltex-radius-ca/_data
Проконтролировать владельца:
sudo chown -Rv root. /var/lib/docker/volumes/compose_eltex-radius-ca/_data
Запуск контейнера
Запуск на хосте контроллера
Перед запуском контейнера надо убедиться, что сертификат CA создан и расположен в папке, как описано в разделе "Создание/копирование сертификата"!
Остановить сервис eltex-radius-nbi
sudo service eltex-radius-nbi stop
Выполнить запуск контейнера командой:
sudo docker-compose up -d
После запуска контейнера проверить с помощью curl доступность ресурсов:
- http://localhost:8081/eltex-radius-nbi/asciidoc/
- http://localhost:8081/eltex-radius-nbi/certificates/server.zip
- http://localhost:9010/
Удалить пакеты:
sudo apt purge eltex-radius-nbi
Команда purge полностью удалит вместе с папками логи "/var/log/eltex-radius-nbi" и сертификаты "/var/lib/eltex-radius-nbi"!
Запуск на отдельном хосте
Если запуск контейнера выполняется на отдельном хосте - выполнить запуск командой:
sudo docker-compose up -d
При необходимости изменить настройки проксирующего сервера nginx в файле "/etc/nginx/conf.d/softwlc.conf" в разделах, отвечающих за перенаправление трафика axis2 и eltex-radius-nbi:
Перечитать конфигурацию nginx:
sudo nginx -s reload
Управление логированием
В рамках поддержанных переменных окружения можно указать уровень логирования сервиса eltex-radius-nbi и вывод логов в консоль или отправку на сторонний сервер. Значения переменных задаются в файле "eltex-radius-nbi.env".
NBI_LOG_LEVEL=INFO - уровень логирования сервиса eltex-radius-nbi.
Уровень логирования, указанный в настройках "NBI_LOG_LEVEL" определяет максимальный уровень логирования, который может быть выведен в консоль или перенаправлен на сторонний сервер.
NBI_CONSOLE_LEVEL=INFO - уровень логов консоли (но не выше уровня, указанного в настройке "NBI_LOG_LEVEL").
GELF_LEVEL=OFF - уровень логов, перенаправляемых на сторонний сервер (но не выше уровня, указанного в настройке "NBI_LOG_LEVEL").
GELF_HOST=udp:localhost - адрес стороннего сервера сбора логов.
GELF_PORT=12201 - порт стороннего сервера сбора логов.
Приложения
Список используемых переменных
Переменная | Значение по умолчанию |
---|---|
CATALINA_OPTS | нет |
RADIUS_JDBC_DBURL | jdbc:mysql://localhost/radius?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 |
RADIUS_JDBC_USERNAME | javauser |
RADIUS_JDBC_PASSWORD | javapassword |
RADIUS_JDBC_MAXPOOLSIZE | 48 |
RADIUS_JDBC_INUSE | yes |
RADIUS_JDBC_REPLICA_DBURL | jdbc:mysql://localhost/radius?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 |
RADIUS_JDBC_REPLICA_USERNAME | javauser |
RADIUS_JDBC_REPLICA_PASSWORD | javapassword |
RADIUS_JDBC_REPLICA_MAXPOOLSIZE | 48 |
RADIUS_JDBC_REPLICA_INUSE | yes |
EMS_JDBC_DBURL | jdbc:mysql://localhost/eltex_ems?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&noAccessToProcedureBodies=true |
EMS_JDBC_USERNAME | javauser |
EMS_JDBC_PASSWORD | javapassword |
EMS_JDBC_MAXPOOLSIZE | 48 |
EMS_JDBC_INUSE | yes |
WIRELESS_JDBC_DBURL | jdbc:mysql://localhost/wireless?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 |
WIRELESS_JDBC_USERNAME | javauser |
WIRELESS_JDBC_PASSWORD | javapassword |
WIRELESS_JDBC_MAXPOOLSIZE | 48 |
WIRELESS_JDBC_INUSE | yes |
LOGS_JDBC_DBURL | jdbc:mysql://localhost/eltex_alert?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 |
LOGS_JDBC_USERNAME | javauser |
LOGS_JDBC_PASSWORD | javapassword |
LOGS_JDBC_MAXPOOLSIZE | 48 |
LOGS_JDBC_INUSE | yes |
ELTEX_AUTH_SERVICE_JDBC_DBURL | jdbc:mysql://localhost/eltex_auth_service?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 |
ELTEX_AUTH_SERVICE_JDBC_USERNAME | javauser |
ELTEX_AUTH_SERVICE_JDBC_PASSWORD | javapassword |
ELTEX_AUTH_SERVICE_JDBC_MAXPOOLSIZE | 48 |
ELTEX_AUTH_SERVICE_JDBC_INUSE | yes |
EMS_NBI_HOST | 127.0.0.1 |
EMS_NBI_PORT | 8080 |
EMS_NBI_PATH | northbound |
EMS_NBI_PROTOCOL | http |
TOMCAT_HOST | 127.0.0.1 |
TOMCAT_PORT | 8080 |
PCRF_ENABLED | true |
PCRF_URL | http://localhost:7070 |
PCRF_USERNAME | admin |
PCRF_PASSWORD | password |
PCRF_READTIMEOUT | 11 |
PCRF_WRITETIMEOUT | 11 |
PCRF_JDBC_DBURL | jdbc:mysql://localhost:3306/eltex_pcrf?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 |
PCRF_JDBC_USERNAME | javauser |
PCRF_JDBC_PASSWORD | javapassword |
WIFI_CAB_JDBC_DBURL | jdbc:mysql://localhost:3306/eltex_wifi_customer_cab?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 |
WIFI_CAB_JDBC_USERNAME | javauser |
WIFI_CAB_JDBC_PASSWORD | javapassword |
WIFICAB_TIMEOUT | 90000 |
SORM2_JDBC_DBURL | jdbc:mysql://localhost:3306/eltex_sorm2?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 |
SORM2_JDBC_USERNAME | javauser |
SORM2_JDBC_PASSWORD | javapassword |
SORM2_ENABLED | false |
SORM2_URL | http://localhost:7071 |
SORM2_USERNAME | admin |
SORM2_PASSWORD | password |
SORM3_ENABLED | false |
OTT_JDBC_DBURL | jdbc:mysql://localhost:3306/eltex_ott?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 |
OTT_JDBC_USERNAME | javauser |
OTT_JDBC_PASSWORD | javapassword |
METRIC_PORT | 9010 |
SSO_ENABLED | false |
SSO_CLIENTSECRET | нет |
SSO_CLIENTID | нет |
SSO_REST_SERVER_PROTOCOL | http |
SSO_REST_SERVER_ADDRESS | нет |
SSO_REST_SERVER_PORT | 80 |
SSO_REST_SERVER_TIMEOUT_SEC | 10 |
SSO_REST_PROTOCOL_VERSION | 2.0 |
SSO_REST_USERNAME | нет |
SSO_REST_PASSWORD | нет |
SSO_REST_GETTOKEN_PATH | /apiman-gateway/b2b_test/getToken |
SSO_REST_GETUSERINFO_PATH | /apiman-gateway/b2b_test/getUserInfo |
SSO_REST_ADDUSER_PATH | /apiman-gateway/b2b_test/addUser |
SSO_REST_UPDATEUSER_PATH | /apiman-gateway/b2b_test/updateUser |
SSO_REST_DELUSER_PATH | /apiman-gateway/b2b_test/delUser |
SSO_REST_ADDUSERPARAM_PATH | /apiman-gateway/b2b_test/addUserParam |
SSO_REST_DELUSERPARAM_PATH | /apiman-gateway/b2b_test/delUserParam |
SSO_REST_GETUSERBYNAME_PATH | /apiman-gateway/b2b_test/getUserByName |
SSO_REST_GETUSERBYEMAIL_PATH | /apiman-gateway/b2b_test/getUserByEmail |
SSO_REST_RESETPASSWORD_PATH | /apiman-gateway/b2b_test/resetPassword |
SSO_REST_GETUSERBYPARAM_PATH | /apiman-gateway/b2b_test/getUserByParam |
BRUCE_HOST | eltex-bruce |
BRUCE_PORT | 8008 |
PORTAL_DB_URL | jdbc:mysql://localhost:3306/ELTEX_PORTAL?max_allowed_packet=32362048&useUnicode=true&characterEncoding=utf8 |
PORTAL_DB_USERNAME | javauser |
PORTAL_DB_PASSWORD | javapassword |
NGW_URL | http://127.0.0.1:8040 |
DOORS_URL | http://localhost:9097/ |
DOORS_TIMEOUT | 60 |
DOORS_USERNAME | user |
DOORS_PASSWORD | password |
ELVIS_URL | http://localhost:9001/epadmin/ |
ELVIS_TIMEOUT | 60 |
NBI_LOG_LEVEL | INFO |
NBI_CONSOLE_LEVEL | INFO |
GELF_LEVEL | OFF |
GELF_HOST | udp:localhost |
GELF_PORT | 12201 |
TZ | Asia/Novosibirsk |
Настройка /etc/hosts
В файле "/etc/hosts" могут быть записи для разрешения доменных имен в IP-адреса. Данный файл не рекомендуется напрямую пробрасывать в контейнер, т.к. контейнер может изменять его. В таком случае следует в файл "docker-compose.yaml" добавить раздел:
extra_hosts: - "<имя 1>:<IP-адрес 1>" - "<имя 2>:<IP-адрес 2>" - "<имя 3> <имя 4>:<IP-адрес 3>"