...
Установка и настройка keepalived
в отдельной докеДокументация находится здесь: v1.14_keepalived_1.3.6
Основной компонент резервирования контроллеров. Определяет за переход мастерства и обнаружение проблем в работе сети. Для установки keepalived необходимо обратиться в Сервисный центр Wi-Fi за актуальным дистрибутивом.
...
Предупреждение |
---|
При конфигурации по умолчанию Replica Set из двух узлов полностью выходит из строя при отказе одного из них (даже secondary). |
Настройка replicaSet
Выполнить команду на обоих узлах, для возможности чтения из баз на secondary:
Блок кода | ||
---|---|---|
| ||
echo "rs.slaveOk()" | sudo tee -a /etc/mongorc.js |
В /etc/mongodb.conf
на обоих узлах:
...
Необходимо настроить модули SoftWLC на работу с контроллером по virtual ip на обоих серверах. Изменения необходимо внести в приведенные ниже конфигурационные файлы. В целях
Блок кода | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
nbi.client.protocol=http nbi.client.mercury.host=localhost nbimercury.client.port=80806565 nbi.client.file=/axis2/services/RadiusNbiService?wsdl nbi.client.login=admin nbi.client.password=password nbi.client.mercury.pool.size=100 # Config filePath to cache cache.config=/etc/eltex-apb/ehcache.xml # list of permitted files to hosts.file=/etc/eltex-apb/hosts.json # RRM config rrm.conf.file=/etc/eltex-apb/rrmconf.json # Timeout waiting for subscribe-request after connecting the access point to the server, in seconds subscribe.idle.timeout=60 # Maximum count of outgoing messages to queue for each session session.outgoingQueue=100 nbi.client.login=admin nbi.client.password=password |
- Изменить
localhost
на<virtual_ip>
в строке 21.
Блок кода | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{ "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.port" : 31813,В целях "lease.saver.address" : "0.0.0.0", "lease.saver.port" : 4381, "aaa.instances" : 5, "aaa.host" : "127.0.0.1", "aaa.secret" : "testing123", "aaa.auth.port" : 1812, "aaa.acct.port" : 1813, "aaa.rest.port" : 7080, "aaa.timeout" : 10, "aaa.attempts" : 1, "web.monitoring.port" : 7070, "cluster.enable" : false, "cluster.eventBusPort" : 5801, "radius" : { "url" : "jdbc:mysql://localhost/radius?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&autoReconnect=true", "user" : "javauser", "password" : "javapassword", "max_pool_size" : 16 }, "mongo.pcrf" : { "connection_string": "mongodb://localhost:27017/pcrf", "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, "remote.coa.port" : 3799, "executor.size" : 100, "log.clean.period.s" : 600, "log.store.period" : { "period" : 14, "unit" : "D" } }, "sql.ems" : { "url" : "jdbc:mysql://localhost/eltex_ems?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&autoReconnect=true", "user" : "javauser", "password" : "javapassword", "max_pool_size" : 16 }, "sql.wireless" : { "url" : "jdbc:mysql://localhost/wireless?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&autoReconnect=true", "user" : "javauser", "password" : "javapassword", "max_pool_size" : 16 } } |
...
Блок кода | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
auth-service { host = localhost port = 21812 timeout = 10s retries = 3 secret = eltex # pap, chap, mschapv2 protocol = pap } login { # Количество попыток входа в панель администратора до наступления блокировки admin.attempts=5 maxAttemptsLogin = 3 maxAttemptsIP = 5 # Количество минут блокировки после достижения максимального числа попыток входа в панель администратора admin.block.time=5 ########################################################################### #######################Eltex Auth Service settings######################### ########################################################################### auth.service.address=localhost auth.service.port=21812 auth.service.timeout=10 auth.service.secret=eltex auth.service.retries=3 # pap, chap, mschapv2, eap-mschapv2, eap-md5, eap-ttls auth.service.protocol=eap-md5 ########################################################################### ##########################DB ELTEX_PORTAL settings######################### ########################################################################### # Диалект SQL соответвующий типу БД portal.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect # Использовать кеш 2-го уровня portal.hibernate.use_second_level_cache=true # использовать кэширование sql запросов portal.hibernate.use_query_cache=true # выборка соседних сущностей portal.hibernate.batch_size=2 # количество записоей при 1-й итерации выборки portal.hibernate.fetch_size=100 # Показывать сгенерированный sql portal.hibernate.show_sql=false ########################################################################### # Драйвер БД portal.db.driver=com.mysql.jdbc.Driver # URL к БД portal.db.url=jdbc:mysql://localhost:3306/ELTEX_PORTAL?max_allowed_packet=32362048&useUnicode=true&characterEncoding=utf8 # имя пользователя БД portal.db.username=javauser # пароль пользователя БД portal.db.password=javapassword # запрос выполняемый пулом для проверки валидности соединения portal.db.validationQuery=select 1 # периодичность выполнения проверки соединения portal.db.validationQueryTimeout=500 # флаг проверять ли соедиение при получении его из пула portal.db.testOnBorrow=true # флаг проверять ли соедиение при возращении его в пул portal.db.testOnReturn=false # флаг проверять ли соедиение в состоянии ожидания использования portal.db.testWhileIdle=true # кол-во миллисекунд в момент borrow из пула portal.db.maxWait=10000 # минимальное кол-во соединений portal.db.initialSize=1 # максимальное кол-во соединений portal.db.maxActive=20 # максимальное кол-во соединений находящихся в состоянии ожидания portal.db.maxIdle=1 # минимальное кол-во соединений находящихся в состоянии ожидания portal.db.minIdle=1 # время между циклами проверки соедиения на валидность portal.db.timeBetweenEvictionRunsMillis=10000 # минимальное время в состоянии idle portal.db.minEvictableIdleTimeMillis=2000 # установка AutoCommit для соединения portal.db.defaultAutoCommit=false |
...
blockTime = 5m
}
database {
host = localhost
port = 3306
name = ELTEX_PORTAL
user = javauser
password = javapassword
pool {
# Time to wait for a connection
connectionTimeout = 10s
# Time to wait for connection validation
validationTimeout = 3s
min = 1
max = 10
}
cache {
# Limit of cached simple entries count (for each query type)
maxEntries = 1000
# Limit of total cached portal resources size
maxResourceBytes = 32m
# Maximum time to retain items in the cache
expireTime = 30s
}
}
sso {
enabled = false
rest {
scheme = http
host = localhost
port = 80
sso_api_path = /apiman-gateway/b2b_test
}
auth {
scheme = http
host = localhost
port = 80
authentication_path = /auth/realms/b2b/protocol/openid-connect/auth
logout_path = /auth/realms/b2b/protocol/openid-connect/logout
}
params {
client_id = id
# URL of epadmin, URL must be in double quotes (!!!)
redirect_uri = "http://localhost:8080/epadmin/sso"
client_secret = secret
}
}
jetty {
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
]
}
}
validation {
// public_key = /etc/eltex-doors/keys/public.pem
} |
Изменить localhost
на <virtualip>
в строках 2, 23.
Блок кода | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#portal DB{ ELTEX_PORTAL # Диалект SQL соответвующийdefaultRedirectUrl типу БД portal.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect # Использовать кеш 2-го уровня portal.hibernate.use_second_level_cache=true # использовать кэширование sql запросов portal.hibernate.use_query_cache=true # выборка соседних сущностей portal.hibernate.batch_size=1 # количество записоей при 1-й итерации выборки portal.hibernate.fetch_size=100 # Показывать сгенерированный sql portal.hibernate.show_sql=false # Драйвер БД portal.db.driver=com.mysql.jdbc.Driver # URL к БД portal.db.url=jdbc:mysql://localhost:3306/ELTEX_PORTAL?max_allowed_packet=32362048&useUnicode=true&characterEncoding=utf8 # имя пользователя БД portal.db.username=javauser # пароль пользователя БД portal.db.password=javapassword # запрос выполняемый пулом для проверки валидности соединения portal.db.validationQuery=select 1 # периодичность выполнения проверки соединения portal.db.validationQueryTimeout=500 # флаг проверять ли соедиение при получении его из пула portal.db.testOnBorrow=true # флаг проверять ли соедиение при возращении его в пул portal.db.testOnReturn=false # флаг проверять ли соедиение в состоянии ожидания использования portal.db.testWhileIdle=true # кол-во миллисекунд в момент borrow из пула portal.db.maxWait=10000 # минимальное кол-во соединений portal.db.initialSize=5 # максимальное кол-во соединений portal.db.maxActive=50 # максимальное кол-во соединений находящихся в состоянии ожидания portal.db.maxIdle=5 # минимальное кол-во соединений находящихся в состоянии ожидания portal.db.minIdle=1 # время между циклами проверки соедиения на валидность portal.db.timeBetweenEvictionRunsMillis=10000 # минимальное время в состоянии idle portal.db.minEvictableIdleTimeMillis=2000 # установка AutoCommit для соединения portal.db.defaultAutoCommit=false portal.global_redirect_url=http://eltex-co.ru/ |
...
= "http://eltex-co.ru"
tariffCheckerPeriod = 1440
}
jetty {
https {
port = 9443
keystorePass = 12345
keystoreFile = /etc/eltex-portal/localhost.pfx
keystoreType = PKCS12
keyAlias = 1
ciphers = [
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
]
}
}
database {
host = localhost
port = 3306
name = ELTEX_PORTAL
user = javauser
password = javapassword
readOnly = true
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
}
} |
Изменить localhost
на <virtualip>
в строке 25.
Блок кода | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
# DB radius(alias=radius) radius.jdbc.driver=org.gjt.mm.mysql.Driver radius.jdbc.dbUrl=jdbc:mysql://localhost/radius?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 radius.jdbc.username=javauser radius.jdbc.password=javapassword radius.jdbc.maxPoolSize=48 radius.jdbc.inUse=yes # DB ems(alias=ems) ems.jdbc.driver=org.gjt.mm.mysql.Driver ems.jdbc.dbUrl=jdbc:mysql://localhost/eltex_ems?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&noAccessToProcedureBodies=true ems.jdbc.username=javauser ems.jdbc.password=javapassword ems.jdbc.maxPoolSize=48 ems.jdbc.inUse=yes # DB wireless (alias=wireless) wireless.jdbc.driver=org.gjt.mm.mysql.Driver wireless.jdbc.dbUrl=jdbc:mysql://localhost/wireless?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 wireless.jdbc.username=javauser wireless.jdbc.password=javapassword wireless.jdbc.maxPoolSize=48 wireless.jdbc.inUse=yes # DB logs (alias=logs) logs.jdbc.driver=org.gjt.mm.mysql.Driver logs.jdbc.dbUrl=jdbc:mysql://localhost/eltex_alert?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 logs.jdbc.username=javauser logs.jdbc.password=javapassword logs.jdbc.maxPoolSize=48 logs.jdbc.inUse=yes # DB logs (alias=eltex_auth_service) eltex_auth_service.jdbc.driver=org.gjt.mm.mysql.Driver eltex_auth_service.jdbc.dbUrl=jdbc:mysql://localhost/eltex_auth_service?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 eltex_auth_service.jdbc.username=javauser eltex_auth_service.jdbc.password=javapassword eltex_auth_service.jdbc.maxPoolSize=48 eltex_auth_service.jdbc.inUse=no # адрес ems-northbound ems.nbi.host=127.0.0.1 ems.nbi.port=8080 ems.nbi.path=northbound ems.nbi.protocol=http # eltex_auth_service auth.port=22 auth.host=127.0.0.1 auth.username=username auth.password=password # freeradius-domain-1 freeradius-domain-1.port=22 freeradius-domain-1.host=192.168.0.1 freeradius-domain-1.username=username freeradius-domain-1.password=password # freeradius-domain-2 freeradius-domain-2.port=22 freeradius-domain-2.host=192.168.0.2 freeradius-domain-2.username=username freeradius-domain-2.password=password # tomcat url tomcat.host=172.27.1.18 tomcat.port=8080 # pcrf stuff pcrf.enabled=true pcrf.url=http://localhost:7070 pcrf.username=admin pcrf.password=password # pcrf mongodb connector pcrf.mongodb.enabled=true pcrf.mongodb.uri=mongodb://localhost:27017/pcrf # wifi-customer-cab mongodb connector wificab.mongodb.enabled=true wificab.mongodb.uri=mongodb://localhost:27017/wifi-customer-cab # Eltex.SORM2.replicator MongoDB 'sorm2' connect sorm2.mongodb.enabled=false sorm2.mongodb.uri=mongodb://localhost:27017/sorm2 # Eltex.SORM2.replicator host to use API sorm2.enabled=false sorm2.url=http://localhost:7071 sorm2.username=admin sorm2.password=password #It enables records export to SORM3 while editing wifi users sorm3.enabled=false ########################################################################### ##########################DB ELTEX_PORTAL settings######################### ########################################################################### portal.db.driver=com.mysql.jdbc.Driver portal.db.dialect=org.hibernate.dialect.MySQL5Dialect portal.db.url=jdbc:mysql://localhost:3306/ELTEX_PORTAL?max_allowed_packet=32362048&useUnicode=true&characterEncoding=utf8 portal.db.username=javauser portal.db.password=javapassword portal.hibernate.use_second_level_cache=false portal.hibernate.use_query_cache=false |
...
Блок кода | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
# DB Event poolName1=event event.jdbc.driver=org.gjt.mm.mysql.Driver event.jdbc.dbUrl=jdbc:mysql://localhost/eltex_alert?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 event.jdbc.username=javauser event.jdbc.password=javapassword event.jdbc.maxPoolSize=32 event.jdbc.inUse=yes # remote db host access with su privileges # event.ssh.login= # event.ssh.password= # event.ssh.port= # DB Tree poolName2=tree tree.jdbc.driver=org.gjt.mm.mysql.Driver tree.jdbc.dbUrl=jdbc:mysql://localhost/eltex_ems?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&noAccessToProcedureBodies=true tree.jdbc.username=javauser tree.jdbc.password=javapassword tree.jdbc.maxPoolSize=20 tree.jdbc.inUse=yes # DB Ont poolName3=ont ont.jdbc.driver=org.gjt.mm.mysql.Driver ont.jdbc.dbUrl=jdbc:mysql://localhost/eltex_ont?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 ont.jdbc.username=javauser ont.jdbc.password=javapassword ont.jdbc.maxPoolSize=40 ont.jdbc.inUse=yes # DB Syslog poolName4=syslog syslog.jdbc.driver=org.gjt.mm.mysql.Driver syslog.jdbc.dbUrl=jdbc:mysql://localhost/Syslog?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 syslog.jdbc.username=javauser syslog.jdbc.password=javapassword syslog.jdbc.maxPoolSize=4 syslog.jdbc.inUse=yes # remote db host access with su privileges # syslog.ssh.login= # syslog.ssh.password= # syslog.ssh.port= # DB acsmain (alias=cpe) poolName5=cpe cpe.jdbc.driver=org.gjt.mm.mysql.Driver cpe.jdbc.dbUrl=jdbc:mysql://localhost/acsmain?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 cpe.jdbc.username=javauser cpe.jdbc.password=javapassword cpe.jdbc.maxPoolSize=2 cpe.jdbc.inUse=yes # DB acscmds(alias=cmds) poolName6=cmds cmds.jdbc.driver=org.gjt.mm.mysql.Driver cmds.jdbc.dbUrl=jdbc:mysql://localhost/acscmds?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 cmds.jdbc.username=javauser cmds.jdbc.password=javapassword cmds.jdbc.maxPoolSize=2 cmds.jdbc.inUse=yes # DB acsinf(alias=inf) poolName7=inf inf.jdbc.driver=org.gjt.mm.mysql.Driver inf.jdbc.dbUrl=jdbc:mysql://localhost/acsinf?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 inf.jdbc.username=javauser inf.jdbc.password=javapassword inf.jdbc.maxPoolSize=2 inf.jdbc.inUse=yes # DB acscache(alias=cache) poolName8=cache cache.jdbc.driver=org.gjt.mm.mysql.Driver cache.jdbc.dbUrl=jdbc:mysql://localhost/acscache?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 cache.jdbc.username=javauser cache.jdbc.password=javapassword cache.jdbc.maxPoolSize=2 cache.jdbc.inUse=yes # DB radius(alias=radius) poolName9=radius radius.jdbc.driver=org.gjt.mm.mysql.Driver radius.jdbc.dbUrl=jdbc:mysql://localhost/radius?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 radius.jdbc.username=javauser radius.jdbc.password=javapassword radius.jdbc.maxPoolSize=40 radius.jdbc.inUse=yes # remote db host access with su privileges # radius.ssh.login= # radius.ssh.password= # radius.ssh.port= # ------------------------------------------- SSID --------------------------------------------- # DB wireless (alias=wireless) poolName10=wireless wireless.jdbc.driver=org.gjt.mm.mysql.Driver wireless.jdbc.dbUrl=jdbc:mysql://localhost/wireless?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 wireless.jdbc.username=javauser wireless.jdbc.password=javapassword wireless.jdbc.maxPoolSize=30 wireless.jdbc.inUse=yes |
- Изменить
localhost
на<virtualip>
в строках 4, 17, 26, 35, 48, 57, 66, 75, 84, 98
Блок кода | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
spring.application.name=eltex_doors
## Mysql datasource properties
spring.datasource.url=jdbc:mysql://localhost:3306/eltex_doors?useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=eltexdoors
spring.datasource.password=eltexpassword
spring.flyway.url=jdbc:mysql://localhost:3306/eltex_doors?useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.flyway.user=eltexdoors
spring.flyway.password=eltexpassword
## Starting server port
server.port=9097
## Custom application properties
auth.cron.session.timeout=*/60 * * * * *
# Login and password from basic account
auth.username=user
auth.password=password
# Auth keys paths
auth.private.key=/etc/eltex-doors/keys/private.pem
auth.public.key=/etc/eltex-doors/keys/public.pem
# Tokens lifetime
# Use time format HH:mm:ss
auth.token.access.lifetime=00:15:00
auth.token.refresh.lifetime=720:00:00
|
- Изменить
localhost
на<virtualip>
в строках 4,8
Примечание | ||
---|---|---|
| ||
Т.к. сервис eltex-doors необязательный для всех инсталяций, то конфигурационного файла, как и данного сервиса, в вашей системе может не быть. |
Смена настроек в GUI
Также нужно настроить модули SoftWLC при помощи графического интерфейса.
...
В разделе Настройки → Интеграция в параметрах PCRF URL и URL NGW-клиента изменить localhost на виртуальный ip-адрес:
Конструктор порталов
Резервирование сервиса конструктора портала осуществляется с помощью сервиса keepalived, при этом в системных настройках следует выполнить несколько действий:
- Изменить localhost в конфигурационом файле
- Изменить localhost на виртуальный ip-адрес в разделах настроек:
Системные настройки → Конструктор порталов
- Системные настройки → Доступ к NBI
- Системные настройки → Доступ к NGW
- Системные настройки → Доступ к Mercury
- Системные настройки → БД платежей
- Системные настройки → Доступ к PCRF
...