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

Подготовка к обновлению 

Все дальнейшие действия необходимо произвести на 2х нодах

Подготовка БД

Проверка количества разрешенных коннектов к БД .

vagrant@ubuntu:~$ mysql -uroot -proot
mysql> show variables like "%max_connections%"; (Если меньше 500, то выполнить следующую команду)
mysql> SET GLOBAL max_connections = 500;

При обновлении необходимо остановить репликацию MySQL:

vagrant@ubuntu:~$ mysql -uroot -proot
mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)

Для обновления необходимо выдать права на доступ к БД. Для этого перейдите в БД и выполните следующие команды : 

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
mysql> flush privileges;

Перед обновлением сделайте дамп БД и желательно сделать snapshot  системы для возможного отката в случае неудачного обновления.

Выполните backUP БД и конфигурационных файлов.

Установите пакет pv перед сохранением БД и запуском скрипта.

На вход скрипта требуется подать login/password от БД.

vagrant@ubuntu:~$ sudo apt install pv                  # установка пакета pv 
vagrant@ubuntu:~$ sudo chmod +x backup_mysql.sh        # добавление прав на исполнение файла скрипта бэкапа mysql
vagrant@ubuntu:~$ sudo ./backup_mysql.sh root root     # запуск скрипта бэкапа БД mysql пользователя root, с паролем root
vagrant@ubuntu:~$ sudo chmod +x mongo_update.sh.       # добавление прав на исполнение файла скрипта бэкапа mongo
vagrant@ubuntu:~$ sudo ./mongo_update.sh --backup      # запуск скрипта бэкапа БД mongo  

mongo_update.sh

backup_mysql.sh

BackUP базы данных работоспособен только для вашей текущей версии SoftWLC.  Условно говоря, backup от  SoftWLC версии 1 не подойдет к SoftWLC версии 2.

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

Выполнить backup файлов текущих репозиториев

vagrant@ubuntu:~$ sudo cp /etc/apt/sources.list.d/eltex.list /etc/apt/sources.list.d/eltex.list.backup   

Проверка состояния сервисов 

Перед началом обновления, необходимо проверить, что дата и время на всех серверах соответствует действительности. Для этого необходимо выполнить команду : date  

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

vagrant@ubuntu:~$ sudo systemctl list-units |grep eltex
  eltex-airtune.service                                                                        loaded active running   LSB: Eltex AirTune Server
  eltex-apb.service                                                                            loaded active running   Eltex Access Point Binder service
  eltex-bruce.service                                                                          loaded active running   Scheduling service
  eltex-disconnect-service.service                                                             loaded active running   Eltex Disconnect service
  eltex-doors.service                                                                          loaded active running   AP Monitoring service
  eltex-ems.service                                                                            loaded active running   Eltex EMS
  eltex-jobs.service                                                                           loaded active running   Eltex executor service
  eltex-johnny.service                                                                         loaded active running   Eltex johnny — a service to rule them all
  eltex-logging-service.service                                                                loaded active running   Eltex logging service
  eltex-mercury.service                                                                        loaded active running   Eltex Mercury — hotspot user management service
  eltex-ngw.service                                                                            loaded active running   Eltex Notification Gateway
  eltex-pcrf.service                                                                           loaded active running   Eltex PCRF Service
  eltex-portal-constructor.service                                                             loaded active running   Eltex Portal Constructor
  eltex-portal.service                                                                         loaded active running   Eltex Portal
  eltex-radius-nbi.service                                                                     loaded active running   Eltex-Radius-Northbound — SoftWLC SOAP/XML Northbound
  eltex-radius.service                                                                         loaded active running   Eltex FreeRADIUS multi-protocol policy server
  eltex-wids.service                                                                           loaded active running   Eltex WIDS/WIPS
  eltex-wifi-cab.service                                                                       loaded active running   Wi-Fi Customer Cab Service

Проверка работоспособности Nbi 

в поисковой строке введите запрос : 

http://<ip-softwlc>:8080/axis2/services/RadiusNbiService?wsdl

На страничке браузера должно отобразиться следующее:


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

vagrant@ubuntu:~$ sudo ./eltex-softwlc-helper-latest.sh --test-ports
Test ports mode

Start TCP/UDP port checking for all services..
Checking tcp port '3306' for application 'mysqld' (Server MySQL) - passed
Checking tcp port '27017' for application 'mongo' (MongoDB server) - passed
Checking tcp port '9310' for application 'java' (EMS-server Applet API ) - passed
Checking udp port '162' for application 'java' (EMS server SNMP API) - passed
Checking tcp port '8081' for application 'java' (tomcat (NBI, EMS applet)) - passed
Checking tcp port '8083' for application 'java' (WiFi Customer Cab (Jetty)) - passed
Checking tcp port '8080' for application 'nginx' (Nginx proxy server) - passed
Checking tcp port '9000' for application 'java' (Captive Portal, Portal Group) - passed
Checking tcp port '9001' for application 'java' (Portal Constructor, Portal Group) - passed
Checking tcp port '8040' for application 'java' (eltex-notification-gw, Portal Group) - passed
Checking tcp port '8090' for application 'java' (eltex-apb, Portal Group) - passed
Checking tcp port '6565' for application 'java' (eltex-mercury service, Portal Group) - passed
Checking tcp port '9097' for application 'java' (eltex-doors service HTTP API, Portal Group) - passed
Checking tcp port '7070' for application 'java' (PCRF monitoring API) - passed
Checking tcp port '7080' for application 'java' (PCRF RADIUS API) - passed
Checking tcp port '5701' for application 'java' (PCRF Hazelcast API) - passed
Checking udp port '1813' for application 'java' (PCRF, RADIUS accounting API) - passed
Checking tcp port '8008' for application 'java' (eltex-bruce service HTTPS API) - passed
Checking tcp port '9696' for application 'java' (eltex-jobs service HTTPS API) - passed
Checking udp port '1812' for application 'eltex-radius' (RADIUS API) - passed
Checking tcp port '9095' for application 'eltex-wids' (eltex-wids-service API) - passed
Checking tcp port '9099' for application 'java' (eltex-logging-service, Portal Group) - passed
Checking tcp port '9096' for application 'java' (eltex-disconnect-service HTTP API, Portal Group) - passed
Checking tcp port '9100' for application 'java' (eltex-johnny service HTTP API, Portal Group) - passed
Checking tcp port '8082' for application 'eltex-airtune' (eltex-airtune API) - passed
Checking tcp port '8089' for application 'eltex-airtune' (eltex-airtune API) - passed
Checking tcp port '8099' for application 'eltex-airtune' (eltex-airtune API) - passed
Checking udp port '514' for application 'syslog' (Linux syslog server) - passed
Checking udp port '69' for application 'tftp' (Linux TFTP server) - passed

> Main core ports are tested successfully!

На действующем slave будут недоступны порты 162 и 9310. Это связано с тем, что на slave выключен сервис  eltex-ems

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

vagrant@ubuntu:~$ systemctl stop rsync.service

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

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

Перед обновление пакетов убедитесь, что репликация на 2х нодах не работает. Для этого выполните следующие действия : 

vagrant@ubuntu:~$ mysql -uroot -proot
mysql> show slave status;

Вывод команды, выше должен содержать следующие строки: (команду необходимо запустить на 2х нодах) 

              Slave_IO_Running: No
             Slave_SQL_Running: No

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

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

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

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

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

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

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

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

sudo systemctl list-units | grep eltex

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

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

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

Configuration file '/etc/eltex-radius/local.conf'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** local.conf (Y/I/N/O/D/Z) [default=N] ? D (n)

Configuration file '/usr/lib/eltex-ems/scripts/rsync_ems_backup.sh'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** rsync_ems_backup.sh (Y/I/N/O/D/Z) [default=N] ? y

Configuration file '/etc/logrotate.d/eltex-radius'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** eltex-radius (Y/I/N/O/D/Z) [default=N] ? y

Configuration file '/etc/eltex-pcrf/eltex-pcrf.json'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** eltex-pcrf.json (Y/I/N/O/D/Z) [default=N] ? y

После выполнения скрипта на первой ноле, необходимо перевести мастрество. Выполните следующую команду на мастере :

systemctl restart keepalived.service 

Проверьте, что репликация остановлена на 2х нодах 

vagrant@ubuntu:~$ mysql -uroot -proot
mysql> show slave status;

Вывод команды, выше должен содержать следующие строки: (команду необходимо запустить на 2х нодах) 

              Slave_IO_Running: No
             Slave_SQL_Running: No

Необходимо перевести mongo ДБ в состояние  PRIMARY на 2ой ноде (которую необходимо обновить)  для этого можно перезапустить mongo на первой ноде 
Выполнив команду: 
sudo systemctl restart mongod.service

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

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

Настройка  MySQL​

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

где,

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

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

Выполнять из mysql-client (mysql -uroot -proot)
show slave status \G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: <ip_server1>
                  Master_User: replication
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 107
               Relay_Log_File: mysqld-relay-bin.000001
                Relay_Log_Pos: 107
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 107
              Relay_Log_Space: 107
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 2
1 row in set (0.00 sec)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

mysql> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: <ip_server1>
                  Master_User: replication
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.002455
          Read_Master_Log_Pos: 89717415
               Relay_Log_File: mysqld-relay-bin.000004
                Relay_Log_Pos: 89717561
        Relay_Master_Log_File: mysql-bin.002455
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table:

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

  • Нет меток