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

Общие сведения

Резервирование контроллеров 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 Листинг файла приведен ниже.

/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, в которых указать логин и пароль.

backup:rspasswd

Назначить права доступа к файлам, выполнив на обоих серверах:

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.

/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.secrets
  • HOST - 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. Для серверов необходимо задать уникальные идентификаторы, к примеру, для первого:

server-id = 1

для второго:

server-id = 2

Включить бинарные логи на обоих серверах:

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. Изменения необходимо внести на обоих серверах.


/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.

Здесь представлены результаты проверки состояния репликации на обоих серверах и краткое резюме по результатам проверки.

Настройка 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

> rs.initiate() 

Через некоторое время, приглашение 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 - список всех членов кластера)
пример, часть конфигурации:

    <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 на обоих серверах. Изменения необходимо внести в приведенные ниже конфигурационные файлы. В целях

Файл /etc/eltex-apb/apb.properties
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.
Файл /etc/eltex-pcrf/eltex-pcrf.json
{
  "auth.address" : "0.0.0.0",
  "auth.port" : 31812,
  "auth.mac.open.timeout.s" : 3600,
  "auth.mac.welcome.service" : "WELCOME",

  "acct.address" : "0.0.0.0",
  "acct.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.


Файл /etc/eltex-portal-constructor/config.txt
# Количество попыток входа в панель администратора до наступления блокировки
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.

Файл /etc/eltex-portal/config.txt
# 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.


Файл /etc/eltex-radius-nbi/radius_nbi_config.txt
# DB  radius(alias=radius)
radius.jdbc.driver=org.gjt.mm.mysql.Driver
radius.jdbc.dbUrl=jdbc:mysql://localhost/radius?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000
radius.jdbc.username=javauser
radius.jdbc.password=javapassword
radius.jdbc.maxPoolSize=48
radius.jdbc.inUse=yes

# DB 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
Файл /etc/eltex-ngw/notification.properties
#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


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

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

# 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
Файл /etc/eltex-wifi-cab/system.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <entry key="mongoaddress">mongodb://localhost:27017/wifi-customer-cab</entry>
    <entry key="nbiaddress">http://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


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

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

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

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

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

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

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

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

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

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

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

Смена настроек в GUI

Также нужно настроить модули SoftWLC при помощи графического интерфейса.

Личный кабинет

В разделе Настройки → Интеграция в параметрах PCRF URL и URL NGW-клиента изменить localhost на виртуальный ip-адрес:

Конструктор порталов

Изменить localhost на виртуальный ip-адрес в разделах настроек:

Системные настройки → Конструктор порталов

Системные настройки → Доступ к NBI

Системные настройки → Доступ к NGW

Системные настройки → БД платежей

Системные настройки → Доступ к PCRF

EMS-GUI

В графическом интерфейсе сервера EMS изменить localhost (либо 127.0.0.1) на виртуальный ip-адрес в следующих разделах:

Администрирование → Настройка сервера → Системные модули → pcrf

Администрирование → Настройка сервера → Системные модули → radius

Администрирование → Настройка сервера → Системные модули → softwlc.nbi

Администрирование → Настройка сервера → Системные модули → system

Администрирование → Настройка сервера → Системные модули → tftpserver


  • Нет меток