Общее описание
С версии SoftWLC 1.24 возможен запуск сервиса eltex-radius-nbi в контейнере.
При запуске сервиса в контейнере надо учитывать, что доступ к БД Mysql и MongoDB потребуется разрешить с любого адреса. Так же потребуется переопределить настройки проксирующего сервиса nginx.
Подготовка окружения
Разрешить доступ к БД
Mysql
Чтобы разрешить доступ до БД с любого адреса:
- закомментировать параметр
bind-address
в/etc/mysql/mysql
.conf.d
/mysqld
.cnf
- перезапустить сервис
mysql
sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.bak sudo sed -i -e "s/\(bind-address.*=.*\)/#\1/" /etc/mysql/mysql.conf.d/mysqld.cnf sudo systemctl restart mysql.service
Добавить права для доступа к БД:
GRANT ALL ON Syslog.* TO 'javauser'@'%' IDENTIFIED BY 'javapassword'; GRANT ALL ON eltex_alert.* TO 'javauser'@'%' IDENTIFIED BY 'javapassword'; GRANT ALL ON eltex_auth_service.* TO 'javauser'@'%' IDENTIFIED BY 'javapassword'; GRANT ALL ON eltex_ems.* TO 'javauser'@'%' IDENTIFIED BY 'javapassword'; GRANT ALL ON eltex_ont.* TO 'javauser'@'%' IDENTIFIED BY 'javapassword'; GRANT ALL ON wireless.* TO 'javauser'@'%' IDENTIFIED BY 'javapassword'; GRANT ALL ON radius.* TO 'javauser'@'%' IDENTIFIED BY 'javapassword'; GRANT ALL ON ELTEX_PORTAL.* TO 'javauser'@'%' IDENTIFIED BY 'javapassword'; FLUSH PRIVILEGES;
MongoDB
Чтобы разрешить доступ до БД с любого адреса:
- можно указать
bindIp: 0.0.0.0
в/etc/mongod.conf
- перезапустить сервис
mongod
sudo cp /etc/mongod.conf /etc/mongod.conf.bak sudo sed -i -e "s/\(.*bindIp:\)\(.*\)/#\1\2\n\1 0.0.0.0/g" /etc/mongod.conf sudo systemctl restart mongod.service
Файлы конфигурации
Для запуска сервиса требуется создать папку для запуска контейнера и в ней подготовить файлы с переменными окружения ".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
Запуск контейнера
Запуск на хосте, где ранее уже была проведена однохостовая установка скриптом-установщиком eltex-softwlc-helper-latest.sh
Если выполняется запуск контейнера на хосте, где ранее уже была проведена однохостовая установка скриптом-установщиком eltex-softwlc-helper-latest.sh - то нельзя будет использовать порт 8081, который уже будет занят сервисом tomcat8, который используется в работе EMS. Поэтому потребуется использовать отдельный порт для работы в контейнере сервиса eltex-radius-nbi. Изменим его в настройках "docker-compose.yaml" на 8084:
Перед запуском контейнера надо убедиться, что сертификат CA создан и расположен в папке, как описано в разделе "Создание/копирование сертификата"!
Выполнить запуск контейнера командой:
sudo docker-compose up -d
После запуска контейнера проверить с помощью curl доступность ресурсов:
- http://localhost:8084/eltex-radius-nbi/asciidoc/
- http://localhost:8084/axis2/services/RadiusNbiService?wsdl
- http://localhost:8084/eltex-radius-nbi/certificates/server.zip
- http://localhost:9010/
В файле конфигурации nginx "/etc/nginx/conf.d/softwlc.conf" исправить порт для секций "location /axis2" и "location /eltex-radius-nbi":
Следует учитывать, что файл конфигурации nginx для SoftWLC не обязательно может быть "/etc/nginx/conf.d/softwlc.conf" и может отличаться расположением/названием в случае если его создание и конфигурирование выполнялось вручную.
Перечитать конфигурацию nginx:
sudo nginx -s reload
Удалить пакеты:
sudo apt purge eltex-radius-nbi sudo apt purge eltex-axis
Команда purge полностью удалит вместе с папками логи "/var/log/eltex-axis2" и сертификаты "/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_MONGODB_ENABLED | true |
PCRF_MONGODB_URI | mongodb://localhost:27017/pcrf |
WIFICAB_MONGODB_ENABLED | true |
WIFICAB_MONGODB_URI | mongodb://localhost:27017/wifi-customer-cab |
WIFICAB_TIMEOUT | 90000 |
SORM2_MONGODB_ENABLED | false |
SORM2_MONGODB_URI | mongodb://localhost:27017/sorm2 |
SORM2_ENABLED | false |
SORM2_URL | http://localhost:7071 |
SORM2_USERNAME | admin |
SORM2_PASSWORD | password |
SORM3_ENABLED | false |
OTT_MONGODB_ENABLED | true |
OTT_MONGODB_URI | mongodb://localhost:27017/ott |
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 |
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>"