Общие сведения
Резервирование контроллеров SoftWLC выполняется по схеме master-slave. Синхронизируются критичные для работы системы файлы (настройки, файлы прошивок, выгрузки данных), баз данных MySQL (в режиме master-master), баз дынных MongoDB, а также работа DHCP серверов. Такая схема обеспечивает доступность услуги и актуальные данные на обоих контроллерах при выходе одного из строя, недоступности сети, проблем с электропитанием.
В примерах конфигурации в данном разделе для простоты ip-адреса будут указываться как <ip_server1>, <ip_server2> и <virtual_ip>, где:
- <ip_server1> - реальный ip-адрес первого сервер
- <ip_server2> - реальный ip-адрес второго сервера
- <virtual_ip> - виртуальный ip-адрес
Настройка резервирования контроллеров SoftWLC состоит из следующих этапов:
- установка и настройка keepalived
- настройка rsync
- настройка репликации MySQL
- настройка replicaSet MongoDB
- настройка работы Eltex-PCRF в режиме кластера
- изменение конфигурации модулей системы для работы с виртуальным IP
Установка и настройка keepalived
в отдельной доке
Основной компонент резервирования контроллеров. Определяет за переход мастерства и обнаружение проблем в работе сети. Для установки keepalived необходимо обратиться в Сервисный центр Wi-Fi за актуальным дистрибутивом.
Настройка rsync
Rsync в схеме резервирования отвечает за синхронизацию служебных служебных файлов сервисов Eltex-EMS и Eltex-APB, а также файлов прошивок, шаблонов конфигурации, выгрузок конфигураций точек. Rsync представляет собой клиент серверное ПО. В данной схеме master-сервер выступает в роли клиента и синхронизирует каталоги slave-сервера с локальными.
Способ запуска/остановки
Для активации сервера rsync необходимо в файле /etc/default/rsync
установить значение:
RSYNC_ENABLE=true
Для запуска сервиса после остановки используется команда:
Без форматирования |
---|
root@swlc01-server:/# service rsync start |
Для остановки сервиса используется команда:
Без форматирования |
---|
root@swlc01-server:/# service rsync stop |
Для проверки — запущен ли сервис в данный момент, используется команда:
Без форматирования |
---|
root@swlc01-server:/# service rsync status |
В ответ последует сообщение:
Без форматирования |
---|
* rsync is running
|
в случае если сервис запущен,или
Без форматирования |
---|
* rsync is not running |
в случае если сервис не запущен.
Конфигурация сервера rsync
Основной конфигурационный файл сервера rsync расположен в /etc/rsyncd.conf Листинг файла приведен ниже.
Блок кода |
---|
language | text |
---|
theme | RDark |
---|
title | /etc/rsyncd.conf |
---|
|
[ems-conf]
path = /usr/lib/eltex-ems/conf/
use chroot = no
max connections = 2
lock file = /var/lock/rsyncd
read only = no
list = no
uid = root
auth users = backup
secrets file = /etc/rsyncd.secrets
strict modes = yes
# IP-адрес сервера, который будет иметь доступ к ресурсу, т.е. адрес второго сервера в паре
hosts allow = <ip_server1> <virtual_ip>
ignore errors = no
ignore nonreadable = yes
transfer logging = no
timeout = 60
refuse options = checksum dry-run
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
[ems-tftp]
path = /tftpboot
use chroot = no
max connections = 2
lock file = /var/lock/rsyncd.tftp
read only = no
list = no
uid = root
auth users = backup
secrets file = /etc/rsyncd.secrets
strict modes = yes
hosts allow = <ip_server1> <virtual_ip>
ignore errors = no
ignore nonreadable = yes
transfer logging = no
timeout = 60
refuse options = checksum dry-run
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
[ems-wp]
path = /var/ems-data/WP
use chroot = no
max connections = 2
lock file = /var/lock/rsyncd.ems-wp
read only = no
list = no
uid = root
auth users = backup
secrets file = /etc/rsyncd.secrets
strict modes = yes
hosts allow = 10.62.8.121 10.62.8.122
ignore errors = no
ignore nonreadable = yes
transfer logging = no
timeout = 60
refuse options = checksum dry-run
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz |
Параметры hosts allow
указаны для master сервера. Рекомендуется указать в виде
hosts allow = <ip_другого_сервера> <virtual ip>
Для аутентификации необходимо настроить пользователя rsync
на обоих серверах, для этого на каждом сервере создайте файлы /etc/rsyncd.secrets
, в которых указать логин и пароль.
Назначить права доступа к файлам, выполнив на обоих серверах:
Блок кода |
---|
|
root@swlc01-server:/# chmod 600 /etc/rsyncd.secrets |
Настройка запуска синхронизации
Создайте файлы /etc/rsync_client.secrets
, в которых укажите пароль:
Блок кода |
---|
|
root@swlc01-server:/# echo "rspasswd" > /etc/rsync_client.secrets && chmod 600 /etc/rsync_client.secrets |
Операцию синхронизации файлов осуществляет задача cron, в которой выполняется скрипт /usr/lib/eltex-ems/scripts/rsync_ems_backup.sh
. Скрипт запускает rsync клиент и синхронизирует локальные директории с директориями на втором (backup) сервере. Синхронизация запускается только в случае, если сервер в состоянии master.
Блок кода |
---|
language | bash |
---|
theme | RDark |
---|
title | /usr/lib/eltex-ems/scripts/rsync_ems_backup.sh |
---|
|
#!/bin/bash
LOCKFILE="/run/lock/rsync_ems_backup"
# IP address backup server
HOST=<ip_server2>
# Check if we're root
if [ `whoami` != "root" ]
then
echo "This script should be run by root."
exit 1
fi
# Check and create lock file
if ! lockfile-create --use-pid -r 0 $LOCKFILE &> /dev/null ; then
echo "Backup is already running"
exit 0
fi
# Check - if we're master - try to perform backup to slave
SRVMODE=`cat /tmp/keep.mode`
if [ "$SRVMODE" == "MASTER" ]
then
rsync -urlogtp --delete-after --password-file=/etc/rsync_client.secrets /usr/lib/eltex-ems/conf/ backup@$HOST::ems-conf > /tmp/rsync_ems_conf.log 2>&1
echo $? >> /tmp/rsync_ems_conf_result.log
rsync -urlogtp --delete-after --password-file=/etc/rsync_client.secrets /tftpboot/ backup@$HOST::ems-tftp > /tmp/rsync_ems_tftpboot.log 2>&1
echo $? >> /tmp/rsync_ems_tftpboot_result.log
rsync -urlogtp --delete-after --password-file=/etc/rsync_client.secrets /var/ems-data/WP/ backup@$HOST::ems-wp > /tmp/rsync_ems_wp.log 2>&1
echo $? >> /tmp/rsync_ems_wp_result.log
else
echo "Not master. No action will be performed."
fi
lockfile-remove $LOCKFILE |
где
backup
– логин, указанный в файле /etc/rsyncd.secretsHOST -
ip-адрес другого сервера
Cоздать задачу в cron на обоих серверах для запуска синхронизации раз в минуту:
Блок кода |
---|
|
root@swlc01-server:/# crontab -l | { cat; echo "*/1 * * * * /usr/lib/eltex-ems/scripts/rsync_ems_backup.sh"; } | crontab |
Информация |
---|
Сервис cron должен быть запущен на обоих серверах |
Настройка репликации MySQL
Резервирование данных, хранящихся СУБД MySQL, осуществляется путём встречной репликации по принципу master-master (ведущий-ведущий). То есть, каждый из серверов одновременно является и master и slave. При такой схеме работы все изменения в БД на одном сервере записываются в специальный бинарный лог, который в реальном времени вычитывает второй сервер и применяет изменения. Второй сервер реплицирует данные с первого, а первый со второго. (http://dev.mysql.com/doc/refman/5.5/en/replication.html). Это позволяет получить актуальную копию БД на двух хостах одновременно. При разрыве связи изменения накапливаются, после восстановления происходит синхронизация.
Перенос дампа данных и перенос на второй сервер
При настройке резервирования в процессе эксплуатации (то есть если в MySQL на действующем сервере уже имеются данные) необходимо перенести эти данные на второй сервер. Это можно сделать при помощи утилиты mysqldump.
Для для этого необходимо заблокировать таблицы, снять дамп, разблокировать таблицы и скопировать получившийся файл на второй сервер:
Блок кода |
---|
|
root@swlc01-server:/# mysql -uroot -proot -e "FLUSH TABLES WITH READ LOCK;"
root@swlc01-server:/# mysqldump -uroot -proot --databases ELTEX_PORTAL eltex_alert eltex_auth_service eltex_ems payments radius wireless > mysqldump_master.sql
root@swlc01-server:/# mysql -uroot -proot -e "UNLOCK TABLES;"
root@swlc01-server:/# scp mysqldump_master.sql <username>@<ip_server2>:/home/<username>/ |
Затем развернуть dump на втором сервере:
Блок кода |
---|
|
root@swlc01-server:/# mysql -uroot -proot < /home/<username>/mysqldump_master.sql |
Конфигурация MySQL
Конфигурация самого демона mysqld заключается в настройке параметров ведения бинарных логов. Обозначения первый сервер и второй сервер далее условны, и применяются лишь для обозначения различий в конфигурации сереров.
В секции [mysqld]
файла конфигурации /etc/mysql/my.cnf
произвести следующие изменения:
Закомментировать либо удалить строку на обоих серерах:
Блок кода |
---|
|
bind-address = 127.0.0.1 |
Указать server-id
. Для серверов необходимо задать уникальные идентификаторы, к примеру, для первого:
для второго:
Включить бинарные логи на обоих серверах:
Блок кода |
---|
|
log_bin = /var/log/mysql/mysql-bin.log |
указать параметры auto_increment_increment (шаг приращения) и auto_increment_offset (стартовую точку).
Для первого сервера:
Блок кода |
---|
|
auto_increment_increment= 2
auto_increment_offset = 1 |
Для второго сервера:
Блок кода |
---|
|
auto_increment_increment= 2
auto_increment_offset = 2 |
На обоих серверах:
- указать базы, для которых будут вестись логи:
Блок кода |
---|
|
binlog-do-db = eltex_alert
binlog-do-db = eltex_ems
binlog-do-db = wireless
binlog-do-db = radius
binlog-do-db = eltex_auth_service
binlog-do-db = ELTEX_PORTAL
binlog-do-db = payments |
- yказать базы, для которых не будут вестись логи:
Блок кода |
---|
|
binlog-ignore-db = mysql
binlog-ignore-db = Syslog
binlog-ignore-db = performance_schema
binlog-ignore-db = information_schema |
Перезапустить сервис mysql
на каждом сервер и создать БД для репликации.
Блок кода |
---|
|
root@swlc01-server:/# service mysql restart |
Создание учетных записей
Для работы репликации необходима служебная учетная запись на каждом из серверов. Под этой учетной записью сервер будет подключаться к master серверу и получать изменения в данных.
Создать учетную запись для репликации на первом сервере:
Блок кода |
---|
|
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replication'@'<ip_server2>' IDENTIFIED BY 'password';
FLUSH PRIVILEGES; |
Создать учетную запись для репликации на втором сервере:
Блок кода |
---|
|
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replication'@'<ip_server1>' IDENTIFIED BY 'password';
FLUSH PRIVILEGES; |
Информация |
---|
Привилегия SELECT необходима для работы проверки репликации из GUI EMS |
Включение репликации
Запуск репликации на втором сервере
На первом сервере в консоли MySQL выполнить команду show master status и проанализировать полученные значения:
Блок кода |
---|
|
mysql> show master status \G
*************************** 1. row ***************************
File: mysql-bin.000001
Position: 00000107
Binlog_Do_DB: eltex_alert,eltex_ems,radius,wireless,eltex_auth_service,payments,ELTEX_PORTAL
Binlog_Ignore_DB: mysql,Syslog,performance_schema,information_schema
1 row in set (0.00 sec) |
Запомнить параметры File и Position.
Информация |
---|
Рекомендуется устанавливать Position равным 107. Это позиция с которой начинается запись лог-файла. |
Настроить и запустить репликацию второго сервера с первого (выполнить действия на втором сервере):
Блок кода |
---|
|
mysql> STOP SLAVE;
mysql> CHANGE MASTER TO MASTER_HOST='<ip_server1>', MASTER_USER='replication', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;
mysql> START SLAVE; |
где,
- MASTER_LOG_FILE='mysql-bin.000001' – указать значение File, полученное на первом сервере.
- MASTER_LOG_POS=107 – указать значение Position, полученное в предыдущем пункте (при первичной настройке рекомендуется указать 107).
Проверить состояние репликации на втором сервере:
Блок кода |
---|
|
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.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
mysql> show master status \G
*************************** 1. row ***************************
File: mysql-bin.000001
Position: 00000107
Binlog_Do_DB: eltex_alert,eltex_ems,eltex_ont,radius,wireless,eltex_auth_service,payments,ELTEX_PORTAL
Binlog_Ignore_DB: mysql,Syslog,performance_schema,information_schema
1 row in set (0.00 sec) |
Настроить и запустить репликацию первого сервера со второго (выполнять действия на первом сервере):
Блок кода |
---|
|
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> 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
репликация выполняется в обе стороны.
Проверка репликации из EMS-GUI
Состояние репликации MySQL можно контролировать из GUI EMS. Для этого необходимо отредактировать конфигурационный файл /etc/eltex-ems/check-ems-replication.conf
. Изменения необходимо внести на обоих серверах.
Блок кода |
---|
theme | RDark |
---|
title | /etc/eltex-ems/check-ems-replication.conf |
---|
|
# Включить("Yes") / Выключить("No") проверку репликации
ENABLE_REPLICATION="Yes"
# Адрес первого хоста репликации
HOST1=<ip_server1>
# Адрес второго хоста репликации
HOST2=<ip_server2>
# параметры доступа к mysql серверу
# mysql пользователь
USER="replication"
# mysql пароль
PASSWORD="password" |
где,
- ENABLE_REPLICATION - включена ли проверка репликации (установить в "Yes")
HOST1, HOST2
- ip-адреса серверовUSER, PASSWORD
- логин/пароль учетной записи, для работы репликации.
После сохранения изменений, состояние репликации можно отслеживать в GUI EMS в разделе Информация → Состояние системы резервирования → MySQL.
![](/download/attachments/38017093/ems_replication_mysql_gui.png?version=1&modificationDate=1559033586000&api=v2)
Здесь представлены результаты проверки состояния репликации на обоих серверах и краткое резюме по результатам проверки.
Настройка MongoDB
В MongoDB репликация осуществляется объединением нескольких (в типовой конфигурации - 3) узлов в Replica Set. Replica Set состоит из одного primary узла и нескольких secondary (подробнее https://docs.mongodb.com/v2.4/administration/replica-sets/).
Все операции по изменению данных выполняются только на primary. При этом MongoDB автоматически выполняет failover и смену primary на живой узел, если текущий primary выйдет из строя. Но это требует 3+ узлов в replica set.
Предупреждение |
---|
При конфигурации по умолчанию Replica Set из двух узлов полностью выходит из строя при отказе одного из них (даже secondary). |
Настройка replicaSet
В /etc/mongodb.conf
на обоих узлах:
добавить строку
Блок кода |
---|
|
replSet = <replica_set_name> |
где <replica_set_name>
имя replica set, выбирается произвольно, но должно быть одинаково на обоих серверах
закомментировать либо удалить строку
Блок кода |
---|
|
# bind_ip = 127.0.0.1 |
Перезапустить MongoDB
Блок кода |
---|
|
root@swlc01-server:/# service mongodb restart |
На первом узле зайти в консоль MongoDB
Блок кода |
---|
|
root@swlc01-server:/# mongo |
Создать конфигурацию replica set
Через некоторое время, приглашение shell должно смениться на такое:
Блок кода |
---|
|
replica_set_name:PRIMARY> |
Если в сети не используется DNS обязательно проверить, правильно ли добавился первый узел в конфигурацию Replica Set:
Блок кода |
---|
|
replica_set_name:PRIMARY> rs.config()
{
"_id" : "relica_set_name",
"version" : 63243,
"members" : [
{
"_id" : 0,
"host" : "<hostname_server1>:27017"
}
]
} |
Предупреждение |
---|
Если у первого элемента (индекс 0) указан hostname вместо ip-адреса, и при этом в сети не используется DNS необходимо скорректировать настройку Replica Set до добавления второго узла. Если используется DNS и указано верное DNS имя, можно переходить к добавлению второго узла. |
Для корректировки адреса сервера выполнить следующее:
Блок кода |
---|
|
replica_set_name:PRIMARY> conf = rs.conf()
replica_set_name:PRIMARY> conf.members[<индекс>].host = "<ip_server1>:27017"
replica_set_name:PRIMARY> rs.reconfig(conf) |
И снова проверить текущую конфигурацию:
Блок кода |
---|
|
replica_set_name:PRIMARY> rs.config()
{
"_id" : "relica_set_name",
"version" : 63243,
"members" : [
{
"_id" : 0,
"host" : "<ip_server1>:27017"
}
]
} |
Параметр "host"
должен содержать ip-адрес этого сервера.
Добавить в Replica Set второй узел (выполнять на первом сервере):
Блок кода |
---|
|
replica_set_name:PRIMARY> rs.add("<ip_server2>")
{ "ok" : 1 } |
Если MongoDB отвечает на эту команду ошибкой, возможно, нет связи со вторым узлом (или там прописан bind_ip = 127.0.0.1
), или там не настроен replSet
. Правильный ответ должен быть таким.
На втором узле приглашение консоли управления MongoDB должно смениться на:
Блок кода |
---|
|
root@swlc01-server:/# mongo
replica_set_name:SECONDARY> |
То же самое выполнить для остальных узлов.
Проверить состояние Replica Set можно выполнив в консоли MongoDB команду rs.status()
Работа Eltex-PCRF в режиме кластера
Настройка кластера PCRF
Между серверами PCRF нужно открыть порты 5701 tcp, 5801 tcp
На серверах в файлах конфигурации /etc/eltex-pcrf/hazelcast-cluster-network.xml
нужно указать адреса сетевых интерфейсов (в строках 5 и 22 в примере - адрес самого сервера, строки 14-15 - список всех членов кластера)
пример, часть конфигурации:
Блок кода |
---|
language | xml |
---|
theme | RDark |
---|
linenumbers | true |
---|
|
<network>
<!-- Write here public address of the node -->
<!-- здесь нужно указать сосбственный адрес сервера -->
<public-address>ip_server1</public-address>
<port auto-increment="false" port-count="100">5701</port>
<outbound-ports>
<ports>0</ports>
</outbound-ports>
<join>
<multicast enabled="false"/>
<tcp-ip enabled="true">
<!-- Перечислить IP-адреса всех членов кластера (включая этот) -->
<member>ip_server1</member>
<member>ip_server2</member>
</tcp-ip>
<discovery-strategies>
</discovery-strategies>
</join>
<interfaces enabled="true">
<!-- здесь нужно указать сосбственный адрес сервера -->
<interface>ip_server1</interface>
</interfaces> |
В конфигурации /etc/eltex-pcrf/eltex-pcrf.json
нужно разрешить запуск кластера:
Блок кода |
---|
|
"cluster.enable" : true, |
Перезапустить Eltex-PCRF командой
Блок кода |
---|
|
root@swlc01-server:/# service eltex-pcrf restart |
Проверка состояния кластера
Блок кода |
---|
|
{
"data" : {
"enabled" : true,
"state" : "ACTIVE",
"members" : [ {
"address" : "ip_server1",
"local" : true,
"active" : true
}, {
"address" : "ip_server2",
"local" : false,
"active" : true
} ],
"messagesStats" : {
"received" : 45157,
"sent" : 45144
},
"mongo" : {
"available" : false,
"error" : "not running with --replSet"
}
},
"key" : "PcrfErrorCode.success",
"message" : "Success",
"code" : 0,
"args" : [ ]
} |
Настройка модулей SoftWLC
Необходимо настроить модули SoftWLC на работу с контроллером по virtual ip на обоих серверах. Изменения необходимо внести в приведенные ниже конфигурационные файлы. В целях
Блок кода |
---|
theme | RDark |
---|
title | Файл /etc/eltex-apb/apb.properties |
---|
linenumbers | true |
---|
collapse | true |
---|
|
nbi.client.protocol=http
nbi.client.host=localhost
nbi.client.port=8080
nbi.client.file=/axis2/services/RadiusNbiService?wsdl
nbi.client.login=admin
nbi.client.password=password
nbi.client.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 |
- Изменить
localhost
на <virtual_ip>
в строке 2.
Блок кода |
---|
theme | RDark |
---|
title | Файл /etc/eltex-pcrf/eltex-pcrf.json |
---|
linenumbers | true |
---|
collapse | true |
---|
|
{
"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
}
} |
- Изменить
localhost
на <virtualip>
в строках 28, 35, 61, 68.
Блок кода |
---|
theme | RDark |
---|
title | Файл /etc/eltex-portal-constructor/config.txt |
---|
linenumbers | true |
---|
collapse | true |
---|
|
# Количество попыток входа в панель администратора до наступления блокировки
admin.attempts=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 |
Изменить localhost
на <virtualip>
в строках 9, 36.
Блок кода |
---|
theme | RDark |
---|
title | Файл /etc/eltex-portal/config.txt |
---|
linenumbers | true |
---|
collapse | true |
---|
|
# DB ELTEX_PORTAL
# Диалект 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=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/ |
Изменить localhost
на <virtualip>
в строке 18.
Блок кода |
---|
theme | RDark |
---|
title | Файл /etc/eltex-radius-nbi/radius_nbi_config.txt |
---|
linenumbers | true |
---|
collapse | true |
---|
|
# 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 |
- Изменить
localhost
на <virtualip>
в строках 3, 11, 19, 27, 35, 71, 77, 81, 85, 101 - Изменить
127.0.0.1
на <virtualip>
в строках 49, 66
Блок кода |
---|
theme | RDark |
---|
title | Файл /etc/eltex-ngw/notification.properties |
---|
linenumbers | true |
---|
collapse | true |
---|
|
#Common gates settings
#Current gate used for each type (config name, for example smpp_gate.conf)
sms.gate.outgoing.sms.config=smsc_gate.conf
#For incoming sms/calls fields for numbers in configs should be set
sms.gate.incoming.sms.config=
sms.gate.incoming.call.config=
#Gate pool settings
sms.gate.pool.size=50
sms.gate.pool.wait.millis=5000
#Port to listen for requests
server.port=8040
#=============================
#=======database settings=====
#=============================
#mongodb.uri=mongodb://192.168.1.1,192.168.1.2:27017/notification-gw
mongodb.host=localhost
mongodb.port=27017
#mongodb.user=user
#mongodb.password=password
mongodb.name=notification-gw
#=============================
#=======email settings========
#=============================
mail.smtp.submitter=test@email.com
mail.smtp.password=
mail.smtp.auth=true
mail.smtp.host=email.com
mail.smtp.port=587
mail.smtp.sendpartial=true
mail.smtp.starttls.enable=false
mail.smtp.connectiontimeout=5000
mail.gate.pool.size=20
mail.pool.wait.millis=10000 |
- Изменить
localhost
на <virtualip>
в строке 19
Блок кода |
---|
theme | RDark |
---|
title | Файл /etc/eltex-radius/local.conf |
---|
linenumbers | true |
---|
collapse | true |
---|
|
# Ports on which the server will listen
auth_port=1812
acct_port=1813
inner_tunnel_port=18121
# MySQL database
db_host="localhost"
db_port=3306
db_login="radius"
db_password="radpass"
db_name="radius"
# Enable checking that SSID is locked (1 - enabled, other values - disabled)
# Check is performed using query to 'wireless' database
ssid_check_enabled=1
# MySQL 'wireless' database
wireless_db_host="localhost"
wireless_db_port=3306
wireless_db_login="javauser"
wireless_db_password="javapassword"
wireless_db_name="wireless"
# PCRF
pcrf_host="127.0.0.1"
pcrf_port=7080
pcrf_enabled=1
# EAP
ca_cert_name="default.pem"
tls_key_password="eltex"
# 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"
# 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 |
- Изменить
localhost
на <virtualip>
в строках 7, 18 - Изменить
127.0.0.1
на <virtualip>
в строке 25
Блок кода |
---|
language | xml |
---|
theme | RDark |
---|
title | Файл /etc/eltex-wifi-cab/system.xml |
---|
linenumbers | true |
---|
collapse | true |
---|
|
<?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://172.27.1.18:8080/axis2/services/RadiusNbiService?wsdl</entry>
<entry key="nbi.serviceLogin.user">softwlc_service</entry>
<entry key="nbi.serviceLogin.password">softwlc</entry>
<!-- параметры, применяемые при авторизации через eltex-auth-service -->
<entry key="radius.auth.address">localhost</entry>
<entry key="radius.auth.shareSecret">eltex</entry>
<entry key="radius.auth.authPort">21812</entry>
<entry key="radius.auth.acctPort">21813</entry>
<entry key="radius.auth.timeout.sec">10</entry>
<entry key="radius.auth.retries">5</entry>
</properties>
|
- Изменить
localhost
на <virtualip>
в строках 4, 5, 9
Блок кода |
---|
language | js |
---|
theme | RDark |
---|
title | Файл /usr/lib/eltex-ems/conf/config.txt |
---|
linenumbers | true |
---|
collapse | true |
---|
|
# 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
Смена настроек в GUI
Также нужно настроить модули SoftWLC при помощи графического интерфейса.
Личный кабинет
В разделе Настройки → Интеграция в параметрах PCRF URL и URL NGW-клиента изменить localhost на виртуальный ip-адрес:
![](/download/attachments/38017093/wifi-cab_opt_addr.png?version=1&modificationDate=1559033586000&api=v2)
Конструктор порталов
Изменить localhost на виртуальный ip-адрес в разделах настроек:
Системные настройки → Конструктор порталов
![](/download/attachments/38017093/epadmin_opt_portal.png?version=1&modificationDate=1559033586000&api=v2)
Системные настройки → Доступ к NBI
![](/download/attachments/38017093/epadmin_opt_nbi.png?version=1&modificationDate=1559033586000&api=v2)
Системные настройки → Доступ к NGW
![](/download/attachments/38017093/epadmin_opt_ngw.png?version=1&modificationDate=1559033586000&api=v2)
Системные настройки → БД платежей
![](/download/attachments/38017093/epadmin_opt_pay-db.png?version=1&modificationDate=1559033586000&api=v2)
Системные настройки → Доступ к PCRF
![](/download/attachments/38017093/epadmin_opt_pcrf.png?version=1&modificationDate=1559033586000&api=v2)
EMS-GUI
В графическом интерфейсе сервера EMS изменить localhost (либо 127.0.0.1) на виртуальный ip-адрес в следующих разделах:
Администрирование → Настройка сервера → Системные модули → pcrf
![](/download/attachments/38017093/ems_v-ip_pcrf.png?version=1&modificationDate=1559033586000&api=v2)
Администрирование → Настройка сервера → Системные модули → radius
![](/download/attachments/38017093/ems_v-ip_radius.png?version=1&modificationDate=1559033586000&api=v2)
Администрирование → Настройка сервера → Системные модули → softwlc.nbi
![](/download/attachments/38017093/ems_v-ip_nbi.png?version=1&modificationDate=1559033586000&api=v2)
Администрирование → Настройка сервера → Системные модули → system
![](/download/attachments/38017093/ems_v-ip_system.png?version=1&modificationDate=1559033586000&api=v2)
Администрирование → Настройка сервера → Системные модули → tftpserver
![](/download/attachments/38017093/ems_v-ip_tftp.png?version=1&modificationDate=1559033586000&api=v2)