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

В случае, если ранее было настроено резервирование на версии 1.27/1.28/1.29 то при обновлении на версию 1.30 необходимо следовать данной инструкции.

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

Перед обновлением необходимо остановить сервер rsync:

vagrant@ubuntu:~$ systemctl stop rsync.service

Запускать rsync необходимо после обновления всех нод.

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


1) В случае, если резервирование настроено по схеме 1 + 1 (используются две однохостовые установки), обновление можно провести, используя скрипт-установщик, доступный по ссылке http://archive.eltex-co.ru/wireless/help/softwlc-1.30/eltex-softwlc-helper-mos_1.30.sh

Также загрузить скрипт можно напрямую на сервер, используя утилиту wget

wget http://archive.eltex-co.ru/wireless/help/softwlc-1.30/eltex-softwlc-helper-mos_1.30.sh

Далее, необходимо выдать права на испольнение данного файла и запустить его с ключем --update-eltex-packages

sudo chmod +x eltex-softwlc-helper-mos_1.30.sh
sudo ./eltex-softwlc-helper-mos_1.30.sh --update-eltex-packages

2) В случае, если установка выполнена более чем на 2х хостах, необходимо вручную добавить репозиторий на хост и обновить пакет

# Добавление новых репозиториев для ubuntu 22.04
wget -q -O - http://archive.eltex-co.ru/wireless/repo.gpg.key| gpg --yes --dearmor -o /etc/apt/keyrings/eltex.gpg
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/eltex.gpg] http://archive.eltex-co.ru/wireless softwlc-1.30-common main" >>/etc/apt/sources.list.d/eltex.list
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/eltex.gpg] http://archive.eltex-co.ru/wireless softwlc-1.30-jammy main" >>/etc/apt/sources.list.d/eltex.list
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/eltex.gpg] http://archive.eltex-co.ru/wireless softwlc-1.30-dependencies-jammy main" >>/etc/apt/sources.list.d/eltex.list
sudo apt update
# Установка необходимых пакетов на хост
sudo apt install eltex-<название пакета>
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#Добавление новых репозиториев для Ubuntu 18.04, Ubuntu 20.04, Astra 1.7
wget -O - http://archive.eltex-co.ru/wireless/repo.gpg.key | apt-key add -
echo "deb [arch=amd64] http://archive.eltex-co.ru/wireless softwlc-1.30-common main" >>/etc/apt/sources.list.d/eltex.list
echo "deb [arch=amd64] http://archive.eltex-co.ru/wireless softwlc-1.30-jammy main" >>/etc/apt/sources.list.d/eltex.list
echo "deb [arch=amd64] http://archive.eltex-co.ru/wireless softwlc-1.30-dependencies-jammy main" >>/etc/apt/sources.list.d/eltex.list
sudo apt update
# Установка необходимых пакетов на хост
sudo apt install eltex-<название пакета>

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

sudo systemctl list-units | grep eltex

Необходимо, чтобы все сервисы были в состоянии loaded service active.

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

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

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)

В связи с миграцией mongo обязательно необходимо согласится на изменения: 

Searching for Mongo Netconf collections to migrate data...
Netconf collections was found!
Do you need to migrate Netconf data from MongoDB to MariaDB? [y/N]y
. . . . . . . . 
Searching for Mongo OTT collections to migrate data...
OTT collections was found!
Do you need to migrate OTT data from MongoDB to MariaDB? [y/N]y
Configuration file '/usr/lib/eltex-ems/scripts/rsync_ems_backup.sh'
==> 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.
*** rsync_ems_backup.sh (Y/I/N/O/D/Z) [default=N] ? y

Configuration file '/etc/logrotate.d/eltex-radius'
==> 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.
*** eltex-radius (Y/I/N/O/D/Z) [default=N] ? y

Configuration file '/etc/eltex-pcrf/eltex-pcrf.json'
==> 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.
*** eltex-pcrf.json (Y/I/N/O/D/Z) [default=N] ? y

После установки необходимо проверить следующие конфигурационные файлы и при необходимости исправить localhost на virtual-ip 

Проверка настройки модулей 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 = 
  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://<virtual-ip>/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?waitQueueMultiple=500&connectTimeoutMS=10000&socketTimeoutMS=0",
    "db_name": "pcrf"
  },

  "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,
    "coa.secret" : "testing123",
    "remote.coa.port" : 3799,
    "log.clean.period.s" : 604800,
    "log.store.period" : {
      "period" : 14,
      "unit" : "D"
    },
    "worker.pool.size": 20
  },

  "sql.ems" : {
    "url": "jdbc:mysql://<virtual-ip>/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://<virtual-ip>/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://<virtual-ip>/eltex_auth_service?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&connectTimeout=5000&socketTimeout=5000&useSSL=false",
    "user": "javauser",
    "password": "javapassword",
    "max_pool_size": 4
  },

  "sql.pcrf" : {
    "url": "jdbc:mysql://<virtual-ip>/eltex_pcrf?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&socketTimeout=5000&useSSL=false",
    "user": "javauser",
    "password": "javapassword",
    "max_pool_size": 60
  },

  "sql.ott" : {
    "url": "jdbc:mysql://<virtual-ip>/eltex_ott?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&socketTimeout=5000&useSSL=false",
    "user": "javauser",
    "password": "javapassword",
    "max_pool_size": 32
  },

  "language" : "en",

  "radius.nbi" : {
    "wdsl.url" : "http://<virtual-ip>: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",
    "apb_enabled": false,
    "apb_host": "localhost",
    "apb_port": 8090
  },

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

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

  "clickhouse": {
    "url": "jdbc:clickhouse://<virtual-ip>:8123/radius",
    "user_name": "javauser",
    "user_password": "javapassword",
    "actualization_period_ms": 15000
  },

  "accounting.options": {
    "use_clickhouse": false,
    "use_mysql": true,
    "batch_interval_ms": 300000,
    "max_queue_load": 100
  },

  "generic.ap.registrar": {
    "max_aps_in_queue": 30,
    "ap_register_interval_ms": 600000,
    "added_ap_cache_ttl_ms": 600000,
    "host": "localhost",
    "port": 8080,
    "worker_pool_size": 8
  },

  "kafka": {
    "mcd.enabled": false,
    "circuit.breaker": {
      "timeout.ms": 30000,
      "reset.ms": 60000,
      "max.failures": 3
    },
    "producer": {
      "bootstrap.servers": "localhost:9092",
      "linger.ms": "1000",
      "topic": "mcd",
      "max.block.ms": "30000",
      "request.timeout.ms": "14000",
      "delivery.timeout.ms": "30000",
      "acks": "1",
      "retries": "1"
    }
  },

  "worker.pool.size": 40
}

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 = <virtual-ip>
    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 = <virtual-ip>
        port = 80
        sso_api_path = /apiman-gateway/b2b_test
    }
    auth {
        scheme = http
        host = <virtual-ip>
        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://<virtual-ip>: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 = <virtual-ip>
  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 = <virtual-ip>
    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://<virtual-ip>/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://<virtual-ip>/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://<virtual-ip>/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://<virtual-ip>/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://<virtual-ip>/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://<virtual-ip>/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-northbound
ems.nbi.host=<virtual-ip>
ems.nbi.port=8080
ems.nbi.path=northbound
ems.nbi.protocol=http

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

# pcrf stuff
pcrf.enabled=true
pcrf.url=http://<virtual-ip>:7070
pcrf.username=admin
pcrf.password=password
pcrf.readtimeout=11
pcrf.writetimeout=11

# pcrf mysql
pcrf.jdbc.driver=org.gjt.mm.mysql.Driver
pcrf.jdbc.dbUrl=jdbc:mysql://<virtual-ip>:3306/eltex_pcrf?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000
pcrf.jdbc.username=javauser
pcrf.jdbc.password=javapassword
pcrf.jdbc.maxPoolSize=48
pcrf.jdbc.inUse=yes

# wifi-customer-cab mysql
wifi_cab.jdbc.driver=org.gjt.mm.mysql.Driver
wifi_cab.jdbc.dbUrl=jdbc:mysql://<virtual-ip>: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
wifi_cab.jdbc.maxPoolSize=48
wifi_cab.jdbc.inUse=yes

# Eltex.SORM2.replicator MariaDB 'sorm2' connect
sorm2.jdbc.driver=org.gjt.mm.mysql.Driver
sorm2.jdbc.dbUrl=jdbc:mysql://<virtual-ip>:3306/eltex_sorm2?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000
sorm2.jdbc.username=javauser
sorm2.jdbc.password=javapassword
sorm2.jdbc.maxPoolSize=48
sorm2.jdbc.inUse=yes

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

# Eltex.SORM2.replicator host to use API
sorm2.enabled=false
sorm2.url=http://<virtual-ip>:7071
sorm2.username=admin
sorm2.password=password

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

# ott mysql
ott.jdbc.driver=org.gjt.mm.mysql.Driver
ott.jdbc.dbUrl=jdbc:mysql://<virtual-ip>:3306/eltex_ott?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000
ott.jdbc.username=javauser
ott.jdbc.password=javapassword
ott.jdbc.maxPoolSize=48
ott.jdbc.inUse=yes


# metrics
metric.port=9010

# SSO settings
sso.enabled=false
#the "clientSecret" settings only matter when "provider=rtk"
sso.clientSecret=
#the "clientId" settings only matter when "provider=rtk"
sso.clientId=

# SSO REST
sso.rest.server.protocol=http
sso.rest.server.address=
sso.rest.server.port=80
sso.rest.server.timeout.sec=10
# possible value for sso.rest.protocol.provider are "rtk", "keycloak"
sso.rest.protocol.provider=rtk
#the "version" settings only matter when "provider=rtk"
sso.rest.protocol.version=2.0
#the "username" settings only matter when "provider=rtk"
sso.rest.username=
#the "password" settings only matter when "provider=rtk"
sso.rest.password=

# SSO SETTINGS
sso.rest.getToken.path=/apiman-gateway/b2b_test/getToken
sso.rest.getUserInfo.path=/apiman-gateway/b2b_test/getUserInfo

#the least below sso settings only matter when "provider=rtk"
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
bruce.host=<virtual-ip>
bruce.port=8008

###########################################################################
##########################DB ELTEX_PORTAL settings#########################
###########################################################################
portal.db.driver=com.mysql.jdbc.Driver
portal.db.url=jdbc:mysql://<virtual-ip>:3306/ELTEX_PORTAL?max_allowed_packet=32362048&useUnicode=true&characterEncoding=utf8
portal.db.username=javauser
portal.db.password=javapassword

# NGW
ngw.url=http://<virtual-ip>:8040

# DOORS
doors.url = http://<virtual-ip>:9097/
doors.timeout = 60
doors.username = user
doors.password = password

# ELVIS
elvis.url=http://<virtual-ip>:9001/epadmin/
elvis.timeout=60
  • Проверьте и при необходимости измените 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 = <virtual-ip>
    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="<virtual-ip>"
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</entry>
    <entry key="nbiaddress">http://<virtual-ip>:8080/axis2/services/RadiusNbiService?wsdl</entry>
    <entry key="nbi.serviceLogin.user">softwlc_service</entry>
    <entry key="nbi.serviceLogin.password">softwlc</entry>
    <entry key="nbi.serviceLogin.requestTimeout.sec">120</entry>

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

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

    <!--Jobs-->
    <entry key="jobs.service.host"><virtual-ip></entry>
    <entry key="jobs.service.port">9696</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.rt.ru/</entry>

    <!-- SSO Settings -->
    <entry key="sso.enabled">false</entry>
    <entry key="sso.redirectUri">http://<virtual-ip>:8080/wifi-cab/sso</entry>
    <entry key="sso.clientSecret"></entry>
    <entry key="sso.clientId"></entry>
    <entry key="sso.localauth.enabled">true</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.provider">rtk</entry> <!-- rtk/keycloak -->
    <entry key="sso.rest.protocol.version">2.0</entry> <!--setting only matters when provider=rtk-->
    <entry key="sso.rest.username"></entry> <!--setting only matters when provider=rtk-->
    <entry key="sso.rest.password"></entry> <!--setting only matters when provider=rtk-->

    <entry key="sso.rest.getToken.path">/apiman-gateway/b2b_test/getToken</entry>
    <entry key="sso.rest.getUserInfo.path">/apiman-gateway/b2b_test/getUserInfo</entry>

    <!--the settings only matter when provider=rtk-->
    <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://<virtual-ip>/eltex_alert?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&useSSL=false
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://<virtual-ip>/eltex_ems?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&noAccessToProcedureBodies=true&useSSL=false
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://<virtual-ip>/eltex_ont?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&useSSL=false
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://<virtual-ip>/Syslog?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&useSSL=false
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://<virtual-ip>/acsmain?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&useSSL=false
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://<virtual-ip>/acscmds?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&useSSL=false
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://<virtual-ip>/acsinf?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&useSSL=false
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://<virtual-ip>/acscache?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&useSSL=false
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://<virtual-ip>/radius?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&useSSL=false
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://<virtual-ip>/wireless?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&useSSL=false
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.


Файл /etc/eltex-bruce/application.properties
server.port=8008
server.address.jobs=http://<virtual-ip>:9696

spring.datasource.url=jdbc:mysql://<virtual-ip>:3306/eltex_bruce
spring.datasource.username=javauser
spring.datasource.password=javapassword
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.flyway.url=${spring.datasource.url}
spring.flyway.user=${spring.datasource.username}
spring.flyway.password=${spring.datasource.password}

#Quartz
spring.quartz.job-store-type=jdbc
spring.quartz.properties.quartz.jdbc.initialize-schema=never

spring.quartz.properties.org.quartz.scheduler.instanceName=jobs-quartz
spring.quartz.properties.org.quartz.scheduler.instanceId=AUTO

spring.quartz.properties.org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
spring.quartz.properties.org.quartz.jobStore.useProperties=false
spring.quartz.properties.org.quartz.jobStore.tablePrefix=QRTZ_
spring.quartz.properties.org.quartz.jobStore.clusterCheckinInterval=20000
spring.quartz.properties.org.quartz.jobStore.misfireThreshold=12000000000
spring.quartz.properties.org.quartz.jobStore.isClustered=false
spring.quartz.properties.org.quartz.jobStore.dataSource=quartzDataSource

spring.quartz.properties.org.quartz.dataSource.quartzDataSource.provider=hikaricp
spring.quartz.properties.org.quartz.dataSource.quartzDataSource.driver=${spring.datasource.driver-class-name}
spring.quartz.properties.org.quartz.dataSource.quartzDataSource.URL=${spring.datasource.url}
spring.quartz.properties.org.quartz.dataSource.quartzDataSource.user=${spring.datasource.username}
spring.quartz.properties.org.quartz.dataSource.quartzDataSource.password=${spring.datasource.password}

spring.quartz.properties.org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
spring.quartz.properties.org.quartz.threadPool.threadCount=10
spring.quartz.properties.org.quartz.threadPool.threadPriority=5

management.health.defaults.enabled=true
management.endpoints.web.exposure.include=health, beans, prometheus, env, threaddump, heapdump, metrics, httptrace
management.endpoint.health.enabled=true

Изменить localhost на <virtualip> в строках 2 и 4.

Файл /etc/eltex-disconnect-service/application.conf
pcrf {
  host = <virtual-ip>
  // connection port (7070 is default)
  port = 7070

  // for timeouts (you can use ns, us, ms, s, m and h letters)
  // consult with HOCON duration format for more information

  // how long we wait for connection
  connectionTimeout = 10s

  // how long we wait for response end
  // minimum value should be greater then pcrf coa timeout
  socketReadTimeout = 15s

  // pool configuration
  pool {
    // minimum idle objects in pool
    min = 1
    // maximum pool size
    max = 20
    // timeout to retrieve an object from pool
    waitTimeout = 5s
  }
}

// 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> во 2 строке.

Файл /etc/eltex-doors/application.conf
# Mysql datasource properties
database {
  host = <virtual-ip>
  port = 3306
  name = eltex_doors
  user = javauser
  password = javapassword

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

    min = 1
    max = 5
  }
}

# Basic account credentials
auth {
  username = user
  password = password
}

# Authentification keys paths
keys {
  private = /etc/eltex-doors/keys/private.pem
  public = /etc/eltex-doors/keys/public.pem
}

# Tokens lifetime
tokens {
  clearTimeout = "*/60 * * * * *"

  lifetime {
    access = 15m
    refresh = 30d
  }
}

Изменить localhost на <virtualip> в 3 строке.

Файл /etc/eltex-johnny/application.conf
pcrf {
  // connection host
  host = <virtual-ip>
  // connection port (7070 is default)
  port = 7070
  // timeout (you can use ns, us, ms, s, m and h letters)
  // consult with HOCON duration format for more information
  timeout = 10s

  // pool configuration
  pool {
    // minimum idle objects in pool
    min = 1
    // maximum pool size
    max = 20
    // timeout to retrieve an object from pool
    waitTimeout = 5s
  }
}


mercury {
   // connection host
   host = <virtual-ip>
   // connection port (6565 is default)
   port = 6565

   // pool configuration
   pool {
     // minimum idle objects in pool
     min = 1
     // maximum pool size
     max = 20
     // timeout to retrieve an object from pool
     waitTimeout = 5s
   }
}

nbi {
  // connection host
  host = <virtual-ip>
  // connection port (8080 is default)
  port = 8080
  // timeout (you can use ns, us, ms, s, m and h letters)
  // consult with HOCON duration format for more information
  timeout = 80s
  // NBI login
  login = admin
  // NBI password
  password = password

  // pool configuration
  pool {
    // minimum idle objects in pool
    min = 1
    // maximum pool size
    max = 20
    // timeout to retrieve an object from pool
    waitTimeout = 5s
  }
}

portal {
  scheme = http
  host = <virtual-ip>
  port = 9000
}

doors {
  host = <virtual-ip>
  port = 9097
  path = /api
  username = user
  password = password
}

http {
  connectionTimeout = 20s
  connectionTotal = 100
}

// 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> в 3, 24, 41, 65, 70 строках.

Файл /etc/eltex-logging-service/application.conf
server {
  port = 9099
}

eventlog {
  enabled = true
}

sorm {
  enabled = false
  dir = /var/log/eltex-logging-service/sorm3/
}

database {
  jdbcUrl = "jdbc:mysql://<virtual-ip>:3306/eltex_wifi_customer_cab"
  username = "javauser"
  password = "javapassword"
}
  • Проверьте и при необходимости измените localhost на virtual_ip в строке 15.
Файл /etc/eltex-mercury/application.conf
database {
  host = <virtual-ip>
  port = 3306
  name = radius
  user = javauser
  password = javapassword

  readOnly = false

  pool {
    maxPoolSize = 20
    minimumIdle = 1
    connectionTimeout = 5000
  }

}

jdbc {
  properties {
    useSSL = false
  }
}

sorm3Enabled = false

logging {
  host = <virtual-ip>
  port = 9099
}

Изменить localhost на <virtualip> во 2 и 27 строках.

Файл /etc/eltex-pcrf/hazelcast-local.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright (c) 2008-2016, Hazelcast, Inc. All Rights Reserved.
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  -->

<hazelcast xsi:schemaLocation="http://www.hazelcast.com/schema/config http://www.hazelcast.com/schema/config/hazelcast-config-3.6.xsd"
           xmlns="http://www.hazelcast.com/schema/config"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <group>
        <name>dev</name>
    </group>
    <management-center enabled="false">http://<virtual-ip>:8080/mancenter</management-center>
    <network>
        <port auto-increment="false" port-count="100">5701</port>
        <outbound-ports>
            <ports>0</ports>
        </outbound-ports>
        <join>
            <multicast enabled="false"/>
            <tcp-ip enabled="false"/>
            <discovery-strategies>
            </discovery-strategies>
        </join>
        <interfaces enabled="false"/>
        <ssl enabled="false"/>
        <socket-interceptor enabled="false"/>
        <symmetric-encryption enabled="false">
            <algorithm>PBEWithMD5AndDES</algorithm>
            <!-- salt value to use when generating the secret key -->
            <salt>thesalt</salt>
            <!-- pass phrase to use when generating the secret key -->
            <password>thepass</password>
            <!-- iteration count to use when generating the secret key -->
            <iteration-count>19</iteration-count>
        </symmetric-encryption>
    </network>
    <partition-group enabled="false"/>

Изменить localhost на <virtual-ip> в 18 строке.

Файл /etc/eltex-pcrf/hazelcast-cluster.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright (c) 2008-2016, Hazelcast, Inc. All Rights Reserved.
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  -->

<hazelcast xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-config-3.6.xsd"
           xmlns="http://www.hazelcast.com/schema/config"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <management-center enabled="false">http://<virtual-ip>:8080/mancenter</management-center>

    <!-- load network configuration from another file -->
    <import resource="file:///etc/eltex-pcrf/hazelcast-cluster-network.xml"/>

    <partition-group enabled="false"/>

    <map name="__vertx.subs">
        <backup-count>1</backup-count>
        <time-to-live-seconds>0</time-to-live-seconds>
        <max-idle-seconds>0</max-idle-seconds>
        <eviction-policy>NONE</eviction-policy>
        <max-size policy="PER_NODE">0</max-size>
        <eviction-percentage>25</eviction-percentage>
        <merge-policy>com.hazelcast.map.merge.LatestUpdateMapMergePolicy</merge-policy>
    </map>

    <semaphore name="__vertx.*">
        <initial-permits>1</initial-permits>
    </semaphore>

Изменить localhost на <virtualip> в 15 строке.

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

Скопируйте лицензии в директорию /usr/lib/eltex-ems/conf/licence/ на обоих серверах. 

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

Конфигурация MySQL

На обоих серверах: необходимо указать новые базы, для которых будут вестись логи:

/etc/mysql/mysql.conf.d/mysqld.cnf
binlog-do-db = eltex_ott
binlog-do-db = eltex_pcrf
binlog-do-db = eltex_sorm2
binlog-do-db = eltex_wids
binlog-do-db = eltex_wifi_customer_cab
binlog-do-db = eltex_jobs
binlog-do-db = eltex_jerry

Перенос дампа данных и перенос на второй сервер

При настройке резервирования в процессе эксплуатации (то есть если в MySQL на действующем сервере уже имеются данные), необходимо перенести эти данные на второй сервер. Это можно сделать при помощи утилиты mysqldump.

Для этого, необходимо на первом сервере заблокировать таблицы, снять дамп, разблокировать таблицы и скопировать получившийся файл на второй сервер:

sudo mysql -uroot -proot -e "FLUSH TABLES WITH READ LOCK;"
sudo mysqldump -uroot -proot --databases ELTEX_PORTAL eltex_alert eltex_auth_service eltex_ems radius wireless eltex_ott eltex_pcrf eltex_sorm2 eltex_wids eltex_wifi_customer_cab > mysqldump_master.sql
sudo mysql -uroot -proot -e "UNLOCK TABLES;"
sudo scp mysqldump_master.sql <username>@<ip_server2>:/home/<username>/

Затем, развернуть dump на втором сервере:

sudo mysql -uroot -proot < /home/<username>/mysqldump_master.sql

Включение репликации

Запуск репликации на втором сервере

На первом сервере, в консоли MySQL, выполнить команду show master status и проанализировать полученные значения:

Выполнять из mysql-client (mysql -uroot -proot)
show master status \G

*************************** 1. row ***************************
            File: mysql-bin.000001
        Position: 00000107
    Binlog_Do_DB: eltex_alert,eltex_ems,wireless,radius,eltex_auth_service,ELTEX_PORTAL,eltex_doors,eltex_ngw,eltex_ott,eltex_pcrf,eltex_sorm2,eltex_wids,eltex_jobs,eltex_wifi_customer_cab,eltex_jerry
Binlog_Ignore_DB: mysql,Syslog,performance_schema,information_schema
1 row in set (0.00 sec)

Запомнить параметры File и Position.

Настроить и запустить репликацию второго сервера с первого (выполнить действия на втором сервере):

Выполнять из mysql-client (mysql -uroot -proot)
STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='<ip_server1>', MASTER_USER='replication', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;
START SLAVE;

где,

MASTER_LOG_FILE='mysql-bin.000001' – указать значение File, полученное на первом сервере;
MASTER_LOG_POS=107 – указать значение Position, полученное на первом сервере.

Проверить состояние репликации на втором сервере:

Выполнять из mysql-client (mysql -uroot -proot)
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.000001
          Read_Master_Log_Pos: 107
               Relay_Log_File: mysqld-relay-bin.000001
                Relay_Log_Pos: 107
        Relay_Master_Log_File: mysql-bin.000001
             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:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 107
              Relay_Log_Space: 107
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 2
1 row in set (0.00 sec)

Если параметры Slave_IO_Running и Slave_SQL_Running имеют значение «Yes», репликация успешно запустилась.

Запуск репликации на первом сервере

На втором сервере выполнить:

Выполнять из mysql-client (mysql -uroot -proot)
show master status \G

*************************** 1. row ***************************
            File: mysql-bin.000001
        Position: 00000107
    Binlog_Do_DB: eltex_alert,eltex_ems,wireless,radius,eltex_auth_service,ELTEX_PORTAL,eltex_doors,eltex_ngw,eltex_ott,eltex_pcrf,eltex_sorm2,eltex_wids,eltex_jobs,eltex_wifi_customer_cab,eltex_jerry
Binlog_Ignore_DB: mysql,Syslog,performance_schema,information_schema
1 row in set (0.00 sec)

Настроить и запустить репликацию первого сервера со второго (выполнять действия на первом сервере):

Выполнять из mysql-client (mysql -uroot -proot)
STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='<ip_server2>', MASTER_USER='replication', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;
START SLAVE;

Проверить состояние репликации на первом севере:

Выполнять из mysql-client (mysql -uroot -proot)
show slave status \G
*************************** 1. row *************************** 
               Slave_IO_State: Waiting for master to send event
                  Master_Host: <ip_server2>
                  Master_User: replication
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 107
               Relay_Log_File: mysqld-relay-bin.000001
                Relay_Log_Pos: 107
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
...

Если параметры Slave_IO_Running и Slave_SQL_Running имеют значение «Yes», значения Master_Log_File и Read_Master_Log_Pos репликация выполняется в обе стороны.

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

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

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

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

mysql> 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:

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

  • Нет меток