Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Перед обновлением необходимо обязательно сделать резервную копию виртуальной машины на случай необходимости восстановления.

Версия SoftWLC определяется версией подавляющего количества пакетов eltex, установленных на ВМ.

Версию пакетов можно узнать при помощи следующих команд:

vagrant@ubuntu:~$ dpkg -l | grep eltex-

Если версия какого-либо установленного пакета не является актуальной (проверить можно тут  Stable_versions)  обновите его.

Если во время обновления что-то пойдет не так, а сервис нужно будет быстро восстановить, то запускаете клон рабочей ВМ.

Обратите внимание, что обновление контроллера рекомендуется проводить в нерабочее время, так как будет перерыв в работе сервисов.

Подготовка к обновлению

Перед обновлением сделайте дамп БД и желательно сделать snapshot  системы для возможного отката в случае неудачного обновления.

Выполните backUP БД и конфигурационных файлов.

Установите пакет pv перед сохранением БД и запуском скрипта.

На вход скрипта требуется подать login/password от БД.

vagrant@ubuntu:~$ sudo apt install pv                  # установка пакета pv 
vagrant@ubuntu:~$ sudo chmod +x backup_mysql.sh        # добавление прав на исполнение файла скрипта бэкапа mysql
vagrant@ubuntu:~$ sudo ./backup_mysql.sh root root     # запуск скрипта бэкапа БД mysql пользователя root, с паролем root
                                

backup_mysql.sh

BackUP базы данных работоспособен только для вашей текущей версии SoftWLC.  Условно говоря, backup от  SoftWLC версии 1 не подойдет к SoftWLC версии 2.

Во время обновления в консоли Вам будут предложены варианты действий с конфигурационными файлами и базами данных. 

Выполнить backup файлов текущих репозиториев

vagrant@ubuntu:~$ sudo cp /etc/apt/sources.list.d/eltex.list /etc/apt/sources.list.d/eltex.list.backup                          

Обновление SoftWLC


При обновлении остановить репликацию MariaDB:

vagrant@ubuntu:~$ mysql -uroot -proot
MariaDB [(none)]> stop slave;
Query OK, 0 rows affected (0.01 sec)

Произвести обновление на всех нодах и, убедившись в отсутствии ошибок, запускать репликацию. 


Версия SoftWLC определяется версией подавляющего количества пакетов eltex, установленных на ВМ.

Версию пакетов можно узнать при помощи следующих команд (команда 'tee' сохраняет информацию об установленных пакетах в файл):

vagrant@ubuntu:~$ dpkg -l | grep eltex- | tee eltex-packets.txt

Если версия какого-либо установленного пакета не является актуальной (проверить можно тут Stable_versions) обновите его.

Если у вас стоит SoftWlC 1.18 и ниже, вам сначала необходимо обновиться до промежуточной версии 1.19.
Произвести Миграцию базы данных сервиса notification-gw (базу данных с СМС, пересланными e-mail и т.п.).
Затем с версии 1.19 можно обновляться на актуальную версию контроллера.
Для обновления пакетов до версии 1.19 необходимо использовать репозиторий версии 1.19: 
vagrant@ubuntu:~$ echo "deb [arch=amd64] http://archive.eltex-co.ru/wireless softwlc-1.19-xenial main" | sudo tee /etc/apt/sources.list.d/eltex.list


Подключение репозиториев Элтекс

Для Ubuntu 18.0.4 - bionic

Заменить содержимое файла /etc/apt/sources.list.d/eltex.list и прописать в него репозитории

deb [arch=amd64] http://archive.eltex-co.ru/wireless softwlc-1.31-bionic main
deb [arch=amd64] http://archive.eltex-co.ru/wireless softwlc-1.31-common main

Для остальных ОС.  Данный репозиторий нужно выбирать в зависимости от версии ОС (focal/jammy/astra-1.7)

deb [arch=amd64] http://archive.eltex-co.ru/wireless softwlc-1.31-focal main
deb [arch=amd64] http://archive.eltex-co.ru/wireless softwlc-1.31-common main


Поиск и установка обновлений пакетов

vagrant@ubuntu:~$ sudo apt-get update

Обновление tomcat и open-jdk 

  1. Сделать бэкап конфигурации tomcat8 /etc/tomcat8 и /etc/default/tomcat8, скопировав в домашнюю директорию

    cp /etc/default/tomcat8 .
    sudo tar -czvf tomcat_backup.tar.gz /etc/tomcat8
  2. Удалить tomcat8. Tomcat9 установится автоматически.

    sudo apt purge tomcat8
  3. Установить openjdk-17-jdk 

    sudo apt install openjdk-17-jdk
  4. Прописываем использование OpenJDK 17 по умолчанию

    sudo update-java-alternatives -s java-1.17.0-openjdk-amd64
  5. Заменить содержимое файла /etc/default/tomcat9 и прописать в нем:

    # The home directory of the Java development kit (JDK). You need at least
    # JDK version 8. If JAVA_HOME is not set, some common directories for
    # OpenJDK and the Oracle JDK are tried.
    #JAVA_HOME=/usr/lib/jvm/java-8-openjdk
    
    # You may pass JVM startup parameters to Java here. If you run Tomcat with
    # Java 8 instead of 9 or newer, add "-XX:+UseG1GC" to select a suitable GC.
    # If unset, the default options will be: -Djava.awt.headless=true
    JAVA_OPTS="-Djava.awt.headless=true"
    
    # To enable remote debugging uncomment the following line.
    # You will then be able to use a Java debugger on port 8000.
    #JAVA_OPTS="${JAVA_OPTS} -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"
    
    # Java compiler to use for translating JavaServer Pages (JSPs). You can use all
    # compilers that are accepted by Ant's build.compiler property.
    #JSP_COMPILER=javac
    
    # Enable the Java security manager? (true/false, default: false)
    #SECURITY_MANAGER=true
    
    # Whether to compress logfiles older than today's
    #LOGFILE_COMPRESS=1
    JAVA_OPTS="${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom"
    JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
  6. Добавляем ссылку для tomcat

    sudo ln -s /usr/share/java/ecj.jar /var/lib/tomcat9/lib
  7. Изменяем порт tomcat с 8080 на 8081

    sudo sed -i 's/8080/8081/' /etc/tomcat9/server.xml
  8. В скрипте /usr/libexec/tomcat9/tomcat-start.sh добавить строчку . /etc/default/tomcat9

    #!/bin/sh
    #
    # Startup script for Apache Tomcat with systemd
    #
    
    set -e
    . /etc/default/tomcat9
    # Find the Java runtime and set JAVA_HOME
    . /usr/libexec/tomcat9/tomcat-locate-java.sh
    
    # Set the JSP compiler if configured in the /etc/default/tomcat9 file
    [ -n "$JSP_COMPILER" ] && JAVA_OPTS="$JAVA_OPTS -Dbuild.compiler=\"$JSP_COMPILER\""
    
    export JAVA_OPTS
    
    # Enable the Java security manager?
    SECURITY=""
    [ "$TOMCAT_SECURITY" = "yes" ] && SECURITY="-security"
    
    
    # Start Tomcat
    cd $CATALINA_BASE && exec $CATALINA_HOME/bin/catalina.sh run $SECURITY
    
    
  9. Перезапустить tomcat9

    sudo systemctl restart tomcat9.service

Обновление схемы в БД MariaDB для службы 'eltex-ems'

sudo apt-get install eltex-ems-db
Enter your MySQL administrator login (default is 'root'): root
Enter your MySQL administrator password: 
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
Backup databases? (Y/n) n


Возможна ошибка вида : Got error: 1102: Incorrect database name '#mysql50#example.database' when selecting the database
Выполните следующие действия :

#ls -la /var/lib/mysql | grep ^d | egrep '\.'
#mv /var/lib/mysql/.directory /root/

Обновление модифицированной схемы в БД MariaDB для службы RADIUS

sudo apt-get install eltex-radius-db
Enter your MySQL administrator login (default is 'root'): root
Enter your MySQL administrator password: 
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
Backup databases? (Y/n) n

Обновление БД авторизации сервисов eltex-wifi-cab, eltex-radius-nbi, eltex-portal-constructor

sudo apt-get install eltex-auth-service-db
Enter your MySQL administrator login (default is 'root'): root
Enter your MySQL administrator password: 

Во время обновления системных модулей, будет предложено изменить некоторые конфигурационный файлы.

Перед соглашением/отказом, рекомендуется ознакомиться с изменениями.

Configuration file '/etc/eltex-radius/local.conf'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** local.conf (Y/I/N/O/D/Z) [default=N] ? D (n)

Обновление пакета eltex-radius-nbi для стыка SoftWLC с вышестоящими OSS/BSS

sudo apt-get install eltex-radius-nbi
Do you want to generate server certificate? [y/N]: N

Обновление пакета eltex-ems

sudo apt-get install eltex-ems
Replace /etc/default/tftpd-hpa? (type 'd' to view diff) [y/N/d]: N

Обновление пакета eltex-radius

sudo apt-get install eltex-radius

Обновление пакета eltex-ngw

sudo apt-get install eltex-ngw

Обновление пакета eltex-apb

sudo apt-get install eltex-apb

Обновление сервиса ААА (Authentication Authorization and Accounting) для Wi-Fi пользователей, подключающихся при помощи BRAS

sudo apt-get install eltex-pcrf

Обновление сервиса журналирования 'Hotspot' учетных записей

sudo apt-get install eltex-logging-service

Обновление сервиса для управления учетными записями Hotspot-пользователей

sudo apt-get install eltex-mercury

Обновление портала для авторизации клиентов WiFi в схеме 'Hotspot'

sudo apt-get install eltex-portal

Обновление конструктора порталов

sudo apt-get install eltex-portal-constructor

Обновление личного кабинета B2B, интерфейса управления

sudo apt-get install eltex-wifi-cab 

Обновление пакета для интерпретации MAC-адресов в названия вендоров

sudo apt-get install eltex-oui-list

Обновление сервиса удаления сессии пользователя

sudo apt-get install eltex-disconnect-service

Обновление API для управляемого предоставления услуги Wi-Fi.

sudo apt-get install eltex-johnny

Обновление сервиса проверки подлинности пользователя через токены

sudo apt-get install eltex-doors
Keys already exist. Do you want to generate new keys? (Y/N) [N]: N

Обновление менеджера задач

sudo apt-get install eltex-bruce

Обновление сервиса выполнения задач и создания отчетов по ним

sudo apt-get install  eltex-jobs

Получение конфигурации nginx

wget http://archive.eltex-co.ru/wireless/nginx/conf/softwlc_<версия_нового_softwlc>_nginx.conf -O softwlc_<версия_нового_softwlc>_nginx.conf

Копирование конфигурации nginx в нужный каталог

sudo cp softwlc_<версия_нового_softwlc>_nginx.conf /etc/nginx/conf.d/softwlc.conf

Перезапуск сервисов Nginx и tomcat9

sudo systemctl restart nginx
sudo systemctl restart tomcat9

Проверка настройки модулей SoftWLC

Далее необходимо проверить настройку модулей SoftWLC на работу с контроллером по  virtual ip. 

Если были внесены изменения в конфигурационные файлы необходимо перезапустить соответствующий сервис:

tester@ubuntu:~$ sudo service eltex-<service_name> restart


Файл /etc/eltex-apb/application.conf
# maximum number of outgoing messages in queue for each session
sessionMessageQueueSize = 100

# cache config file path
cacheConfigFile = /etc/eltex-apb/ehcache.xml

# path to the file with permitted hosts
hostsFile = /etc/eltex-apb/hosts.json

pingJob {
  # ping job interval
  interval = 60s

  # timeout waiting for subscribe-request after connecting the access point to the server
  subscribeIdleTimeout = 60s
  # timeout during that the session will stay opened without receiving any message
  messageIdleTimeout = 90s
  # interval of ping to be sent to the websocket session
  pingIdleTimeout = 30s
}

# eltex-mercury connection properties
mercury {
  host = localhost
  port = 6565
  poolSize = 50
}
nbi.client.login=admin
nbi.client.password=password
  • Проверьте и при необходимости измените localhost на <virtual_ip> в строке 24.
Файл /etc/eltex-pcrf/eltex-pcrf.json
{
  "auth.address" : "0.0.0.0",
  "auth.port" : 31812,
  "auth.mac.open.timeout.s" : 3600,
  "auth.mac.welcome.service" : "WELCOME",

  "acct.address" : "0.0.0.0",
  "acct.ports" : [1813, 31813],

  "lease.saver.address" : "0.0.0.0",
  "lease.saver.port" : 4381,

  "aaa.instances" : 5,
  "aaa.host" : "127.0.0.1",
  "aaa.secret" : "testing123",
  "aaa.auth.port" : 1812,
  "aaa.acct.port" : 1813,
  "aaa.rest.port" : 7080,
  "aaa.timeout" : 10,
  "aaa.attempts" : 1,

  "web.monitoring.port" : 7070,

  "cluster.enable" : false,
  "cluster.eventBusPort" : 5801,

  "radius" : {
    "url": "jdbc:mysql://localhost/radius?useUnicode=true&characterEncoding=utf8&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false",
    "user": "javauser",
    "password": "javapassword",
    "max_pool_size": 16
  },

  "mongo.pcrf" : {
    "connection_string": "mongodb://localhost:27017/pcrf?replicaSet=<YourClasterName>&waitQueueMultiple=500&connectTimeoutMS=10000&socketTimeoutMS=0&readPreference=secondaryPreferred",
    "db_name": "pcrf"
  },

  "mongo.ott" : {
    "connection_string": "mongodb://localhost:27017/ott?replicaSet=<YourClasterName>&waitQueueMultiple=500&connectTimeoutMS=10000&socketTimeoutMS=0&readPreference=secondaryPreferred",
    "db_name": "ott"
  },

  "session.storage" : {
    "session.check.period.s" : 300,
    "unauth.store.time.s" : 600,
    "interval.number.expired" : 3,
    "min.interval.s" : 45,
    "default.interval.s" : 600
  },

  "bras.coa" : {
    "coa.timeout" : 10,
    "coa.attempts" : 1,
    "remote.coa.port" : 3799,
    "executor.size" : 100,
    "log.clean.period.s" : 600,
    "log.store.period" : {
      "period" : 14,
      "unit" : "D"
    }
  },

  "sql.ems" : {
    "url": "jdbc:mysql://localhost/eltex_ems?useUnicode=true&characterEncoding=utf8&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false",
    "user": "javauser",
    "password": "javapassword",
    "max_pool_size": 16
  },

  "sql.wireless" : {
    "url": "jdbc:mysql://localhost/wireless?useUnicode=true&characterEncoding=utf8&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false",
    "user": "javauser",
    "password": "javapassword",
    "max_pool_size": 16
  },

  "sql.auth.service" : {
    "url": "jdbc:mysql://localhost/eltex_auth_service?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&connectTimeout=5000&socketTimeout=5000&useSSL=false",
    "user": "javauser",
    "password": "javapassword",
    "max_pool_size": 4
  },

  "language" : "en",

  "radius.nbi" : {
    "wdsl.url" : "http://localhost:8080/axis2/services/RadiusNbiService?wsdl",
    "username" : "softwlc_service",
    "password" : "softwlc",
    "connection.timeout.ms" : 30000,
    "request.timeout.ms" : 120000
  },

  "tariffs.update.interval" : {
    "interval" : 1,
    "unit" : "hours"
  },

  "bras.cron.update.interval": {
    "interval" : 1,
    "unit": "hours"
  },

  "filters.cache.dir" : "/var/lib/eltex-pcrf/filters/",

  "clickhouse": {
    "url": "jdbc:clickhouse://localhost:8123/radius",
    "user_name": "javauser",
    "user_password": "javapassword"
  },

  "accounting.options": {
    "use_clickhouse": false,
    "use_mysql": true,
    "batch_interval_ms": 300000,
    "max_queue_load": 100
  }
}
mongodb://192.168.10.3:27017,192.168.10.4:27017/pcrf?replicaSet=Cluster&waitQueueMultiple=500&connectTimeoutMS=10000&socketTimeoutMS=0&readPreference=secondaryPreferred

mongodb://192.168.10.3:27017,192.168.10.4:27017/ott?replicaSet=Cluster&waitQueueMultiple=500&connectTimeoutMS=10000&socketTimeoutMS=0&readPreference=secondaryPreferred
  • Проверьте и при необходимости измените localhost на <virtualip> во всех строках, кроме 14-ой строки.
  • Проверьте и при необходимости измените 127.0.0.1 на <virtualip> во всех строках, кроме 14-ой строки.


Файл /etc/eltex-portal-constructor/application.conf
login {
    # Количество попыток входа в панель администратора до наступления блокировки
    maxAttemptsLogin = 3
    maxAttemptsIP = 5
    # Количество минут блокировки после достижения максимального числа попыток входа в панель администратора
    blockTime = 5m
}

access {
    // Временно задаём plaintext-secret прямо здесь (HMAC256), потом будем использовать путь в FS до PEM-файла (RSA256)
    secret = "secret"
}

database {
    host = localhost
    port = 3306
    name = ELTEX_PORTAL
    user = javauser
    password = javapassword

    pool {
        # Time to wait for a connection
        connectionTimeout = 10s
        # Time to wait for connection validation
        validationTimeout = 3s

        min = 1
        max = 10
    }

    cache {
        # Limit of cached simple entries count (for each query type)
        maxEntries = 1000
        # Limit of total cached portal resources size
        maxResourceBytes = 32m
        # Maximum time to retain items in the cache
        expireTime = 30s
    }
}

sso {
    enabled = false
    # Must be in double quotes
    version = "1.0"

    rest {
        scheme = http
        host = localhost
        port = 80
        sso_api_path = /apiman-gateway/b2b_test
    }
    auth {
        scheme = http
        host = localhost
        port = 80
        authentication_path = /auth/realms/b2b/protocol/openid-connect/auth
        logout_path = /auth/realms/b2b/protocol/openid-connect/logout
    }


    params {
        client_id = id
        # URL of epadmin, URL must be in double quotes (!!!)
        redirect_uri = "http://localhost:8080/epadmin/sso"
        client_secret = secret
    }
}

jetty {
    http.port = 9001
    https {
        port = 9444
        keystorePass = 12345
        keystoreFile = /etc/eltex-portal-constructor/localhost.pfx
        keystoreType = PKCS12
        keyAlias = 1
        ciphers = [
            TLS_RSA_WITH_AES_128_CBC_SHA256
            TLS_RSA_WITH_AES_128_CBC_SHA
            TLS_RSA_WITH_AES_256_CBC_SHA256
            TLS_RSA_WITH_AES_256_CBC_SHA
        ]
    }
    multipart {
        maxFileSize = 100MB
        maxRequestSize = 100MB
    }
}

validation {
    public_key = /etc/eltex-doors/keys/public.pem
}

logging {
  host = localhost
  port = 9099
}
  • Проверьте и при необходимости измените localhost на <virtualip> в строках 15, 48, 54, 64, 95.


Файл /etc/eltex-portal/application.conf
portal {
    defaultRedirectUrl = "http://eltex-co.ru"

    scheduler {
        tariffCheckerPeriod = 1d
        paymentsCleanerPeriod = "0 0 * * * ?"
    }
}

jetty {
    https {
        port = 9443
        keystorePass = 12345
        keystoreFile = /etc/eltex-portal/localhost.pfx
        keystoreType = PKCS12
        keyAlias = 1
        ciphers = [
            TLS_RSA_WITH_AES_128_CBC_SHA256
            TLS_RSA_WITH_AES_128_CBC_SHA
            TLS_RSA_WITH_AES_256_CBC_SHA256
            TLS_RSA_WITH_AES_256_CBC_SHA
        ]
    }
}

database {
    host = localhost
    port = 3306
    name = ELTEX_PORTAL
    user = javauser
    password = javapassword

    pool {
        # Time to wait for a connection
        connectionTimeout = 10s
        # Time to wait for connection validation
        validationTimeout = 3s

        min = 1
        max = 10
    }

    cache {
        # Limit of cached simple entries count (for each query type)
        maxEntries = 1000
        # Limit of total cached portal resources size
        maxResourceBytes = 32m
        # Maximum time to retain items in the cache
        expireTime = 2m
    }
}

// JWT validation. You need a key from Eltex Doors.
// Or you could generate it yourself.
validation {
   public_key = "etc/eltex-doors/keys/public.pem"
  • Проверьте и при необходимости измените localhost на <virtualip> в строке 27.


Файл /etc/eltex-radius-nbi/radius_nbi_config.txt
# DB  radius(alias=radius)
radius.jdbc.driver=org.gjt.mm.mysql.Driver
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

# DB  radius replica(alias=radiusReplicaPool)
#TODO: Change it to replica url
radius.jdbc.replica.driver=org.gjt.mm.mysql.Driver
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

# DB ems(alias=ems)
ems.jdbc.driver=org.gjt.mm.mysql.Driver
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

# DB  wireless (alias=wireless)
wireless.jdbc.driver=org.gjt.mm.mysql.Driver
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

# DB logs (alias=logs)
logs.jdbc.driver=org.gjt.mm.mysql.Driver
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

# DB logs (alias=eltex_auth_service)
eltex_auth_service.jdbc.driver=org.gjt.mm.mysql.Driver
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=no

# адрес ems-northbound
ems.nbi.host=127.0.0.1
ems.nbi.port=8080
ems.nbi.path=northbound
ems.nbi.protocol=http

# eltex_auth_service
auth.port=22
auth.host=127.0.0.1
auth.username=username
auth.password=password

# freeradius-domain-1
freeradius-domain-1.port=22
freeradius-domain-1.host=192.168.0.1
freeradius-domain-1.username=username
freeradius-domain-1.password=password

# freeradius-domain-2
freeradius-domain-2.port=22
freeradius-domain-2.host=192.168.0.2
freeradius-domain-2.username=username
freeradius-domain-2.password=password

# tomcat url
tomcat.host=127.0.0.1
tomcat.port=8080

# pcrf stuff
pcrf.enabled=true
pcrf.url=http://localhost:7070
pcrf.username=admin
pcrf.password=password

# pcrf mongodb connector
pcrf.mongodb.enabled=true
pcrf.mongodb.uri=mongodb://localhost:27017/pcrf?replicaSet=<YourClusterName>

# wifi-customer-cab mongodb connector
wificab.mongodb.enabled=true
wificab.mongodb.uri=mongodb://localhost:27017/wifi-customer-cab?replicaSet=<YourClusterName>

# Eltex.SORM2.replicator MongoDB 'sorm2' connect
sorm2.mongodb.enabled=false
sorm2.mongodb.uri=mongodb://localhost:27017/sorm2?replicaSet=<YourClusterName>

# wifi-customer-cab request settings
wificab.timeout=90000

# Eltex.SORM2.replicator host to use API
sorm2.enabled=false
sorm2.url=http://localhost:7071
sorm2.username=admin
sorm2.password=password

#It enables records export to SORM3 while editing wifi users
sorm3.enabled=false

# ott mongodb connector
ott.mongodb.enabled=true
ott.mongodb.uri=mongodb://localhost:27017/ott?replicaSet=<YourClusterName>

# metrics
metric.interval.s=900

###########################################################################
##########################DB ELTEX_PORTAL settings#########################
###########################################################################
portal.db.driver=com.mysql.jdbc.Driver
portal.db.url=jdbc:mysql://localhost:3306/ELTEX_PORTAL?max_allowed_packet=32362048&useUnicode=true&characterEncoding=utf8
portal.db.username=javauser
portal.db.password=javapass
  • Проверьте и при необходимости измените mongodb://localhost на mongodb://ip_mongo_primary,ip_mongo_secondary во всех строках и указать replicaSet, который вы настроили в /etc/mongod.conf. Таким образом строка будет выглядить примерно следующим образом

    pcrf.mongodb.uri=mongodb://192.168.10.3:27017,192.168.10.4:27017/pcrf?replicaSet=Cluster
    wificab.mongodb.uri=mongodb://192.168.10.3:27017,192.168.10.4:27017/wifi-customer-cab?replicaSet=Cluster
    sorm2.mongodb.uri=mongodb://192.168.10.3:27017,192.168.10.4:27017/sorm2?replicaSet=Cluster
    ott.mongodb.uri=mongodb://192.168.10.3:27017,192.168.10.4:27017/ott?replicaSet=Cluster
  • Проверьте и при необходимости измените localhost на <virtualip> во всех строках.
  • Проверьте и при необходимости измените 127.0.0.1 на <virtualip> во всех строках.


Файл /etc/eltex-ngw/application.conf
// Server configuration
server {
    // server port
    port = 8040
    // number of threads in executor that executes handlers and different gateways
    threads = 50
}

http {
    // Timeout of http connection to the end gateway
    connectionTimeout = 30s
    // Number of maximum simultaneous http connections
    maxConnections = 50
    // Time that connection will be kept alive
    keepAliveTimeout = 5s
    // Whether to check SSL certificate
    checkCert = true
    // HTTP User Agent
    userAgent = eltex-ngw

}

sms {
    // Incoming (user to service) sms config
    incoming.config = "smsc.conf"
    // Outgoing (service to user) sms config
    outgoing.config = "smsc.conf"
}

call {
    // Incoming (user to service) call config
    incoming.config = ""
    // Outgoing (service to user) call config
    outgoing.config = ""
}

email {
    // Outgoing (service to user) email config
    outgoing.config = ""

}

database {
    host = localhost
    port = 3306
    name = eltex_ngw
    user = javauser
    password = javapassword

    pool {
        // Time to wait for a connection
        connectionTimeout = 10s
        // Time to wait for connection validation
        validationTimeout = 3s

        min = 1
        max = 10
    }

  • Проверьте и при необходимости измените localhost на virtual_ip в строке 44.


Файл /etc/eltex-radius/local.conf
# Ports on which the server will listen
auth_port=1812
#acct_port=1813
inner_tunnel_port=18121

# MySQL database
db_host="localhost"
db_port=3306
db_login="radius"
db_password="radpass"
db_name="radius"

# MySQL 'wireless' database
wireless_db_host="localhost"
wireless_db_port=3306
wireless_db_login="javauser"
wireless_db_password="javapassword"
wireless_db_name="wireless"

# PCRF
# If you setting pcrf_enabled=0, then you also should enable accounting port listening in "default" server
pcrf_host="127.0.0.1"
pcrf_port=7080
pcrf_enabled=1

# EAP
ca_cert_name="local.pem"
tls_key_password="1234"

# Proxying
proxy_auth=0
proxy_domain_regex="^(.+\.)?enterprise\.root$"
proxy_host="127.0.0.1"
proxy_port=18121
proxy_secret="eltex"

# Ubiquity vendor detection
ubi_vendor_regex="Apple|Ubiquiti"
vendor_group_enabled=1

# Settings of runtime NAS discovery
dynamic_clients=false
dynamic_client_subnet=192.168.0.0/16
dynamic_client_lifetime=3600
dynamic_client_rate_limit=false

# Proxy SSID (for example to eltex-eap-tls) #139679
proxy_ssid_enabled=0
proxy_ssid_value="EAP_TLS"
proxy_ssid_host="127.0.0.1"
proxy_ssid_port=18122
proxy_ssid_secret="eltex"
  • Проверьте и при необходимости измените localhost на <virtualip> во всех строках.
  • Проверьте и при необходимости измените 127.0.0.1 на <virtualip> во всех строках.


Файл /etc/eltex-wifi-cab/system.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <entry key="mongoaddress">mongodb://localhost:27017/wifi-customer-cab?replicaSet=<YourClusterName></entry>
    <entry key="nbiaddress">http://localhost:8080/axis2/services/RadiusNbiService?wsdl</entry>
    <entry key="nbi.serviceLogin.user">softwlc_service</entry>
    <entry key="nbi.serviceLogin.password">password</entry>
    <entry key="nbi.serviceLogin.requestTimeout.sec">120</entry>

    <!--Bonnie or NBI-->
    <entry key="data.service.type">NBI</entry>
    <entry key="bonnie.service.host">localhost</entry>
    <entry key="bonnie.service.port">9070</entry>

    <!--Bruce-->
    <entry key="bruce.service.host">localhost</entry>
    <entry key="bruce.service.port">8008</entry>

    <!-- Support link  -->
    <entry key="support.page.enabled">false</entry>
    <entry key="support.page.url">http://eltex-co.ru</entry>

    <!-- DPI link  -->
    <entry key="dpi.page.enabled">false</entry>
    <entry key="dpi.page.url">https://filter.wifi.example.org/</entry>

    <!-- SSO Settings -->
    <entry key="sso.enabled">false</entry>
    <entry key="sso.redirectUri">http://localhost:8080/wifi-cab/sso</entry>
    <entry key="sso.clientSecret"></entry>
    <entry key="sso.clientId"></entry>

    <!-- SSO Auth -->
    <entry key="sso.auth.server.protocol">http</entry>
    <entry key="sso.auth.server.address"></entry>
    <entry key="sso.auth.server.port">80</entry>

    <entry key="sso.auth.auth.path">/auth/realms/b2b/protocol/openid-connect/auth</entry>
    <entry key="sso.auth.logout.path">/auth/realms/b2b/protocol/openid-connect/logout</entry>

    <!-- SSO REST -->
    <entry key="sso.rest.server.protocol">http</entry>
    <entry key="sso.rest.server.address"></entry>
    <entry key="sso.rest.server.port">80</entry>
    <entry key="sso.rest.server.timeout.sec">10</entry>
    <entry key="sso.rest.protocol.version">2.0</entry>
    <entry key="sso.rest.username"></entry>
    <entry key="sso.rest.password"></entry>

    <entry key="sso.rest.getToken.path">/apiman-gateway/b2b_test/getToken</entry>
    <entry key="sso.rest.getUserInfo.path">/apiman-gateway/b2b_test/getUserInfo</entry>
    <entry key="sso.rest.addUser.path">/apiman-gateway/b2b_test/addUser</entry>
    <entry key="sso.rest.updateUser.path">/apiman-gateway/b2b_test/updateUser</entry>
    <entry key="sso.rest.delUser.path">/apiman-gateway/b2b_test/delUser</entry>
    <entry key="sso.rest.addUserParam.path">/apiman-gateway/b2b_test/addUserParam</entry>
    <entry key="sso.rest.delUserParam.path">/apiman-gateway/b2b_test/delUserParam</entry>
    <entry key="sso.rest.getUserByName.path">/apiman-gateway/b2b_test/getUserByName</entry>
    <entry key="sso.rest.resetPassword.path">/apiman-gateway/b2b_test/resetPassword</entry>
    <entry key="sso.rest.getUserByParam.path">/apiman-gateway/b2b_test/getUserByParam</entry>
    <entry key="sso.rest.getUserByEmail.path">/apiman-gateway/b2b_test/getUserByEmail</entry

</properties>

  • Проверьте и при необходимости измените mongodb://localhost на mongodb://ip_mongo_primary,ip_mongo_secondary в строке 4 и указать replicaSet, который вы настроили в /etc/mongod.conf. Таким образом строка будет выглядить примерно следующим образом

    <entry key="mongoaddress">mongodb://192.168.10.3:27017,192.168.10.4:27017/wifi-customer-cab?replicaSet=Cluster</entry>
  • Проверьте и при необходимости измените localhost на <virtualip> во всех строках.


Файл /usr/lib/eltex-ems/conf/config.txt
# DB Event
poolName1=event
event.jdbc.driver=org.gjt.mm.mysql.Driver
event.jdbc.dbUrl=jdbc:mysql://localhost/eltex_alert?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000
event.jdbc.username=javauser
event.jdbc.password=javapassword
event.jdbc.maxPoolSize=32
event.jdbc.inUse=yes
# remote db host access with su privileges
# event.ssh.login=
# event.ssh.password=
# event.ssh.port=

# DB Tree
poolName2=tree
tree.jdbc.driver=org.gjt.mm.mysql.Driver
tree.jdbc.dbUrl=jdbc:mysql://localhost/eltex_ems?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&noAccessToProcedureBodies=true
tree.jdbc.username=javauser
tree.jdbc.password=javapassword
tree.jdbc.maxPoolSize=20
tree.jdbc.inUse=yes

# DB Ont
poolName3=ont
ont.jdbc.driver=org.gjt.mm.mysql.Driver
ont.jdbc.dbUrl=jdbc:mysql://localhost/eltex_ont?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000
ont.jdbc.username=javauser
ont.jdbc.password=javapassword
ont.jdbc.maxPoolSize=40
ont.jdbc.inUse=yes

# DB Syslog
poolName4=syslog
syslog.jdbc.driver=org.gjt.mm.mysql.Driver
syslog.jdbc.dbUrl=jdbc:mysql://localhost/Syslog?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000
syslog.jdbc.username=javauser
syslog.jdbc.password=javapassword
syslog.jdbc.maxPoolSize=4
syslog.jdbc.inUse=yes
# remote db host access with su privileges
# syslog.ssh.login=
# syslog.ssh.password=
# syslog.ssh.port=

# DB acsmain (alias=cpe)
poolName5=cpe
cpe.jdbc.driver=org.gjt.mm.mysql.Driver
cpe.jdbc.dbUrl=jdbc:mysql://localhost/acsmain?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000
cpe.jdbc.username=javauser
cpe.jdbc.password=javapassword
cpe.jdbc.maxPoolSize=2
cpe.jdbc.inUse=yes

# DB  acscmds(alias=cmds)
poolName6=cmds
cmds.jdbc.driver=org.gjt.mm.mysql.Driver
cmds.jdbc.dbUrl=jdbc:mysql://localhost/acscmds?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000
cmds.jdbc.username=javauser
cmds.jdbc.password=javapassword
cmds.jdbc.maxPoolSize=2
cmds.jdbc.inUse=yes

# DB  acsinf(alias=inf)
poolName7=inf
inf.jdbc.driver=org.gjt.mm.mysql.Driver
inf.jdbc.dbUrl=jdbc:mysql://localhost/acsinf?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000
inf.jdbc.username=javauser
inf.jdbc.password=javapassword
inf.jdbc.maxPoolSize=2
inf.jdbc.inUse=yes

# DB  acscache(alias=cache)
poolName8=cache
cache.jdbc.driver=org.gjt.mm.mysql.Driver
cache.jdbc.dbUrl=jdbc:mysql://localhost/acscache?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000
cache.jdbc.username=javauser
cache.jdbc.password=javapassword
cache.jdbc.maxPoolSize=2
cache.jdbc.inUse=yes

# DB  radius(alias=radius)
poolName9=radius
radius.jdbc.driver=org.gjt.mm.mysql.Driver
radius.jdbc.dbUrl=jdbc:mysql://localhost/radius?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000
radius.jdbc.username=javauser
radius.jdbc.password=javapassword
radius.jdbc.maxPoolSize=40
radius.jdbc.inUse=yes
# remote db host access with su privileges
# radius.ssh.login=
# radius.ssh.password=
# radius.ssh.port=

# ------------------------------------------- SSID ---------------------------------------------
# DB  wireless (alias=wireless)
poolName10=wireless
wireless.jdbc.driver=org.gjt.mm.mysql.Driver
wireless.jdbc.dbUrl=jdbc:mysql://localhost/wireless?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000
wireless.jdbc.username=javauser
wireless.jdbc.password=javapassword
wireless.jdbc.maxPoolSize=30
wireless.jdbc.inUse=yes

# memcached server address
#memcached_server_ip_port=127.0.0.1:11211

Проверьте и при необходимости измените  localhost на <virtualip> в строках 4, 17, 26, 35, 48, 57, 66, 75, 84, 98.

Все вышеуказанные инструкции необходимо произвести на 2-х  контроллерах. 

Проверка репликации MariaDB

Для проверки :

Заходим в консоль MariaDB

Проверяем, что репликация работает: ( проверять надо на 2-х нодах)

MariaDB [(none)]> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: <ip_server1>
                  Master_User: replication
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.002455
          Read_Master_Log_Pos: 89717415
               Relay_Log_File: mysqld-relay-bin.000004
                Relay_Log_Pos: 89717561
        Relay_Master_Log_File: mysql-bin.002455
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table:

Если репликация не работает - необходимо ее восстановить.

Проверка репликации Mongo 

Для проверки : 

Заходим в консоль mongo

Посмотреть конфигурацию Replica Set можно командой:

replica:PRIMARY> rs.status()
{
	"set" : "replica",
	"date" : ISODate("2023-01-10T09:30:20.890Z"),
	"myState" : 1,
	"term" : NumberLong(24),
	"syncingTo" : "",
	"syncSourceHost" : "",
	"syncSourceId" : -1,
	"heartbeatIntervalMillis" : NumberLong(2000),
	"optimes" : {
		"lastCommittedOpTime" : {
			"ts" : Timestamp(1673343020, 1),
			"t" : NumberLong(24)
		},
		"readConcernMajorityOpTime" : {
			"ts" : Timestamp(1673343020, 1),
			"t" : NumberLong(24)
		},
		"appliedOpTime" : {
			"ts" : Timestamp(1673343020, 1),
			"t" : NumberLong(24)
		},
		"durableOpTime" : {
			"ts" : Timestamp(1673343020, 1),
			"t" : NumberLong(24)
		}
	},
	"lastStableCheckpointTimestamp" : Timestamp(1673342958, 1),
	"electionCandidateMetrics" : {
		"lastElectionReason" : "electionTimeout",
		"lastElectionDate" : ISODate("2023-01-10T05:31:08.612Z"),
		"electionTerm" : NumberLong(24),
		"lastCommittedOpTimeAtElection" : {
			"ts" : Timestamp(1673328656, 1),
			"t" : NumberLong(22)
		},
		"lastSeenOpTimeAtElection" : {
			"ts" : Timestamp(1673328656, 1),
			"t" : NumberLong(22)
		},
		"numVotesNeeded" : 2,
		"priorityAtElection" : 2,
		"electionTimeoutMillis" : NumberLong(10000),
		"numCatchUpOps" : NumberLong(0),
		"newTermStartDate" : ISODate("2023-01-10T05:31:08.617Z"),
		"wMajorityWriteAvailabilityDate" : ISODate("2023-01-10T05:31:09.488Z")
	},
	"electionParticipantMetrics" : {
		"votedForCandidate" : true,
		"electionTerm" : NumberLong(22),
		"lastVoteDate" : ISODate("2023-01-10T04:15:15.939Z"),
		"electionCandidateMemberId" : 1,
		"voteReason" : "",
		"lastAppliedOpTimeAtElection" : {
			"ts" : Timestamp(1673324064, 1),
			"t" : NumberLong(17)
		},
		"maxAppliedOpTimeInSet" : {
			"ts" : Timestamp(1673324064, 1),
			"t" : NumberLong(17)
		},
		"priorityAtElection" : 2
	},
	"members" : [
		{
			"_id" : 0,
			"name" : "100.110.1.7:27017",
			"health" : 1,
			"state" : 1,
			"stateStr" : "PRIMARY",
			"uptime" : 20400,
			"optime" : {
				"ts" : Timestamp(1673343020, 1),
				"t" : NumberLong(24)
			},
			"optimeDate" : ISODate("2023-01-10T09:30:20Z"),
			"syncingTo" : "",
			"syncSourceHost" : "",
			"syncSourceId" : -1,
			"infoMessage" : "",
			"electionTime" : Timestamp(1673328668, 1),
			"electionDate" : ISODate("2023-01-10T05:31:08Z"),
			"configVersion" : 75844,
			"self" : true,
			"lastHeartbeatMessage" : ""
		},
		{
			"_id" : 1,
			"name" : "100.110.0.246:27017",
			"health" : 1,
			"state" : 2,
			"stateStr" : "SECONDARY",
			"uptime" : 14361,
			"optime" : {
				"ts" : Timestamp(1673343018, 1),
				"t" : NumberLong(24)
			},
			"optimeDurable" : {
				"ts" : Timestamp(1673343018, 1),
				"t" : NumberLong(24)
			},
			"optimeDate" : ISODate("2023-01-10T09:30:18Z"),
			"optimeDurableDate" : ISODate("2023-01-10T09:30:18Z"),
			"lastHeartbeat" : ISODate("2023-01-10T09:30:20.114Z"),
			"lastHeartbeatRecv" : ISODate("2023-01-10T09:30:19.491Z"),
			"pingMs" : NumberLong(0),
			"lastHeartbeatMessage" : "",
			"syncingTo" : "100.110.1.7:27017",
			"syncSourceHost" : "100.110.1.7:27017",
			"syncSourceId" : 0,
			"infoMessage" : "",
			"configVersion" : 75844
		},
		{
			"_id" : 2,
			"name" : "100.110.0.206:27017",
			"health" : 1,
			"state" : 7,
			"stateStr" : "ARBITER",
			"uptime" : 12138,
			"lastHeartbeat" : ISODate("2023-01-10T09:30:20.704Z"),
			"lastHeartbeatRecv" : ISODate("2023-01-10T09:30:19.957Z"),
			"pingMs" : NumberLong(1),
			"lastHeartbeatMessage" : "",
			"syncingTo" : "",
			"syncSourceHost" : "",
			"syncSourceId" : -1,
			"infoMessage" : "",
			"configVersion" : 75844
		}
	],
	"ok" : 1,
	"operationTime" : Timestamp(1673343020, 1),
	"$clusterTime" : {
		"clusterTime" : Timestamp(1673343020, 1),
		"signature" : {
			"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
			"keyId" : NumberLong(0)
		}
	}
}

Для корректной работы необходимо иметь минимум 3 работающих сервера. 

При отказе в работе, восстановление будет подразумевать удаление старой ноды и добавление новой.

Добавление/удаление/изменение узлов в Replica Set

Настройку узлов в Replica Set можно выполнять только на PRIMARY

Добавить в Replica Set узел Secondary:

replica_set_name:PRIMARY> rs.add("<ip_server>:27017")
{ "ok" : 1 }

Если MongoDB отвечает на эту команду ошибкой, возможно, нет связи со вторым узлом (или там прописан bindIp: 127.0.0.1), или там не настроен блок replication. Правильный ответ должен быть таким.
На втором узле приглашение консоли управления MongoDB должно смениться на:

root@swlc01-server:/# mongo
replica_set_name:SECONDARY>

Добавить в Replica Set узел Arbiter:

replica_set_name:PRIMARY> rs.add("<ip_server>:27017",true)
{ "ok" : 1 }

Удалить узел из Replica Set (выполнять на PRIMARY):

replica_set_name:PRIMARY> rs.remove("<ip_server>:27017")
{ "ok" : 1 }

Для корректировки адреса сервера выполнить следующее:

replica_set_name:PRIMARY> cfg = rs.conf()
replica_set_name:PRIMARY> cfg.members[<индекс>].host = "<ip_server>:27017"
replica_set_name:PRIMARY> rs.reconfig(cfg)

Проверка работы Eltex-PCRF в режиме кластера

Между серверами PCRF должны быть открыты порты 5701 tcp, 5801 tcp

На серверах в файлах конфигурации /etc/eltex-pcrf/hazelcast-cluster-network.xml нужно проверить  адреса сетевых интерфейсов (в строках 5 и 22 в примере - адрес самого сервера, строки 14-15 - список всех членов кластера)
пример, часть конфигурации:


<network>
    <!-- Write here public address of the node -->
 
    <!-- здесь нужно указать собственный адрес сервера -->
    <public-address>ip_server1</public-address>
    <port auto-increment="false" port-count="100">5701</port>
    <outbound-ports>
        <ports>0</ports>
    </outbound-ports>
    <join>
        <multicast enabled="false"/>
        <tcp-ip enabled="true">
            <!-- Перечислить IP-адреса всех членов кластера (включая этот) -->
            <member>ip_server1</member>
            <member>ip_server2</member>
        </tcp-ip>
        <discovery-strategies>
        </discovery-strategies>
    </join>
    <interfaces enabled="true">
    <!-- здесь нужно указать собственный адрес сервера -->
        <interface>ip_server1</interface>
    </interfaces>

В конфигурации /etc/eltex-pcrf/eltex-pcrf.json нужно разрешить запуск кластера:

"cluster.enable" : true,

Перезапустить Eltex-PCRF командой

root@swlc01-server:/# service eltex-pcrf restart

Проверка состояния кластера

{
  "data" : {
    "enabled" : true,
    "state" : "ACTIVE",
    "members" : [ {
      "address" : "ip_server1",
      "local" : true,
      "active" : true
    }, {
      "address" : "ip_server2",
      "local" : false,
      "active" : true
    } ],
    "messagesStats" : {
      "received" : 45157,
      "sent" : 45144
    },
    "mongo" : {
      "available" : false,
      "error" : "not running with --replSet"
    }
  },
  "key" : "PcrfErrorCode.success",
  "message" : "Success",
  "code" : 0,
  "args" : [ ]
}

Восстановление системы в случае неудачного обновления

Если используются виртуальные машины, на которых расположены сервисы SoftWLC и удалось выполнить снапшот системы, то восстановите ВМ из этого снапшота.

Если же ВМ не используются, то выполните ручное восстановление пакетов установленных на сервере, после чего восстановите backup БД Mongo и MariaDB. 

Восстановление пакетов в случае неудачного обновления 

Выполнить downgrade пакетов на предыдущую версию.

  1. tester@ubuntu:~$ sudo mv /etc/apt/sources.list.d/eltex.list.backup /etc/apt/sources.list.d/eltex.list
  2. tester@ubuntu:~$ sudo apt update
  3. Переустановить пакеты БД (eltex-auth-service-db, eltex-ems-db, eltex-radius-db и т.д.)

apt install eltex-ems-db
apt install eltex-auth-service-db
apt install eltex-radius-db

  1. Затем выполнить откат на предыдущую версию пакетов остальных (всех) модулей

apt install eltex-ems
apt install eltex-auth-service
apt install eltex-radius

Восстановление БД в случае неудачного обновления 

Восстанавливаем последний backup БД MariaDB и Mongo БД.

Конфигурационный файл mongod.conf положите в домашний каталог откуда будете запускать скрипт mongo_update.sh

sudo chmod +x restore_mysql.sh
sudo ./restore_mysql.sh root root

restore_mysql.sh

  • Нет меток