В случае, если ранее было настроено резервирование на версии 1.27/1.28/1.29 то при обновлении на версию 1.30 необходимо следовать данной инструкции.
Обновление пакетов eltex-*
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.
В связи с миграцией 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.
# 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.
{
"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-ой строки.
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.
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.
# 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>
во всех строках.
// 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.
# 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>
во всех строках.
<?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>
во всех строках.
# 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.
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.
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 строке.
# 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 строке.
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 строках.
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.
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 строках.
<?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 строке.
<?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 строке.
Конфигурация MySQL
На обоих серверах: необходимо указать новые базы, для которых будут вестись логи:
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 и проанализировать полученные значения:
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.
Настроить и запустить репликацию второго сервера с первого (выполнить действия на втором сервере):
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, полученное на первом сервере.
Проверить состояние репликации на втором сервере:
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», репликация успешно запустилась.
Запуск репликации на первом сервере
На втором сервере выполнить:
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)
Настроить и запустить репликацию первого сервера со второго (выполнять действия на первом сервере):
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;
Проверить состояние репликации на первом севере:
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:
Если репликация не работает - необходимо ее восстановить.