Исходные данные

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

Требуется интеграция программного коммутатора 5 класса ECSS - 10 (SSW)  на 1 физическом сервере с поддержкой SIP со следующими параметрами на нагрузку:

  • Максимальное количество абонентов 15000 (MUL - Max user limit)
  • Максимальное количество одновременных соединений 2000 (MCL - Max call limit)
  • Резервирование системы не требуется.
  • Количество сетевых интерфейсов ethernet - 4.

По техническому заданию требуется определить аппаратную платформу

Таблица 1. Рекомендуемые аппаратные решения

Требования к серверам SSW

Серия аппаратного продукта

Light

Light+

Midi

Heavy

Super Heavy

1

Характеристики системы

1.1

Максимальное количество абонентов

3000

5000

10000

20000

40000

1.2

Максимальная нагрузка одновременных соединений class 5

500

800

1500

3000

6000

1.3

Максимальная нагрузка одновременных соединений class 4

1500

2400

4500

9000

20000

2

Характеристики сервера

2.1

Марка

HP (Lenovo)

HP (Lenovo)

HP (Lenovo)

HP (Lenovo)

HP (Lenovo)

2.2

Серия

DL20 Gen10 (SR250)

DL20 Gen10 (SR250)/DL 360 Gen10 (SR530)

DL360 Gen10 (SR530/SR630)

DL360 Gen10 (SR630)

DL 360 Gen10 (SR630)

2.3

Процессор

Intel Xeon E-2236

Intel Xeon E-2276G/Intel Xeon 4214

Intel Xeon 5220

Intel Xeon 6240

Intel Xeon 8268

2.4

Количество процессоров

1

1

1

2

2

2.5

Объем ОЗУ

8 Gb

12 Gb

16 Gb

24 Gb

64Gb

2.6

HDD

От 3X500 SATA
(от 7200 rpm)

От 3X500 SATA
(от 7200 rpm)

От 3x300 Gb SAS (от 10000 rpm)

От 3x600 Gb SAS
(от 10000 rpm) 2x150Gb SSD

От 6x800 Gb SSD, 2x300 Gb M.2 SSD

2.7

RAID

No raid board

No raid board

HW Raid, от 1Gb cache+battery

HW Raid, от 1Gb cache+battery

HW Raid, от 2Gb Flash cache, поддержка RAID-5

3

Дополнительные комплектующие сервера (в базовых комплект не входят)

3.1

Лицензия на удалённое управление

по желанию

по желанию

+

+

+

3.2

Резервный источник питания

по желанию

по желанию

+

+

+

3.3

Организация хранилища записей разговоров

Дополнительные HDD объединенные в RAID-5

Дополнительные HDD объединенные в RAID-5

Лицензия на HW Raid с поддержкой RAID-5, дополнительные HDD для хранения записей

Лицензия на HW Raid с поддержкой RAID-5, дополнительные HDD для хранения записей

Лицензия на HW Raid с поддержкой RAID-5, дополнительные HDD для хранения записей

Таблица 2. Пример составления аппаратных требований

Устройство

Требуемый ресурс

Серия аппаратного продукта

MCL

MUL

1

Сервер 1

2500

15000

Heavy

После определения по требованиям проекта составляем предварительную сетевую карту

Таблица 3. Пример разнесения составляющих по адресному пространству для одной ноды

Имя сервера (хоста)

Роль

Интерфейс

Адрес

Порт

Внешние адреса программного коммутатора

1

ecss1

Адрес сервера

bond2_ecss1_mgm

10.0.3.237/24

-

2

ecss1

Адрес протокольного адаптера

bond1_ecss1_pa

10.0.3.238/24

-

Внутренние адреса программного коммутатора

3

ecss1

Адрес ядра (ecss-core)

lo

127.0.0.1/24

5000

4

ecss1

Адрес медиа - сервера (ecss-media-server (MSR))

lo

127.0.0.1/24

5040

5

ecss1

Адрес базы данных MySQL (ecss-mysql)

lo

127.0.0.1/24

3034

Рисунок 1 - Схема организации связи

Программный коммутатор устанавливается на базе одной серверной платформы или их группы , у каждого отдельно взятого хоста должен быть задан внешний адрес для возможности обращения и управления в рамках обслуживаемой программным коммутатором сети. Адресный диапазон формируется исходя из количества серверов. В случае, когда программный коммутатор используется на одном хосте ему присваивается один сетевой адрес (например: 10.0.3.237 / 24). Затем планируется адресное пространство под протокольные адаптеры программного коммутатора. Адреса адаптеров являются внешними и следуют после назначенных адресов всех серверов. Например: 10.0.3.237 /24 — адрес сервера, тогда адрес адаптера - 10.0.3.238 /24. 4 сетевых интерфейса объединяются попарно в bonding интерфейсы, другими словами выполняется агрегирование интерфейсов по протоколу LACP. Таким образом интерфейсы eth0  и eth1 объединяются в интерфейс bond1_ecss1_pa.

Внутри серверной платформы существует адресная структура и используются внутренние адреса для взаимодействия между подсистемами (нодами) в кластере. Например: внутренний адрес для кластера на одном сервере:  127.0.0.1 при этом ядро (ecss-core) взаимодействует с сервером обработки мультимедиа данных (ecss-media-server), и их взаимодействие происходит с использованием одного и того же адреса, но у каждой программной части свой транспортный порт: ecss-core — 5000, ecss-msr — 5040.

Для всех нод кластера определяется единый адрес для обращения к базе данных MySQL. Например адрес ecss-mysql 127.0.0.1 Таким образом выполняется условие единообразия, при котором все ноды кластера имеют полностью одинаковые данные о текущем состоянии динамических составляющих программного коммутатора (например история вызовов).

Установка и настройка программного коммутатора

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

Подготовка сетевых интерфейсов системы

Согласно ТЗ система имеет 4 сетевых интерфейса. О их состоянии можно посмотреть с помощью команды ifconfig или ip a:

eth0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 36:10:28:73:63:01 txqueuelen 1000 (Ethernet)

eth1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 36:10:28:73:63:01 txqueuelen 1000 (Ethernet)

eth2: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether be:77:ea:52:4d:39 txqueuelen 1000 (Ethernet)

eth3: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether be:77:ea:52:4d:39 txqueuelen 1000 (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0

Настройка начинается с настройки сетевых интерфейсов. В Ubuntu18 для настройки используется утилита netplan.

Данная утилита позволяет настроить сетевую конфигурацию и затем загрузить ее в систему с помощью сетевого менеджера networkd или NetworkManager.

sudo nano /etc/netplan/ecss_netplan.yaml

Пример настройки файла ecss-netplan.yaml:

Netplan для интерфейсов сервера ecss1 (/etc/netpla/ecss_netplan.yaml)
# Netplan для хоста ecss1 тестового программного коммутатора
# Обратите внимание на обязательное наличие минимум двух пробелов в каждой строке и секции (кроме строки секции network)
# Без пробелов система будет выдавать ошибку
network:
version: 2 # Версия netplan
renderer: networkd # Исполнитель конфигураций netplan
ethernets: # Раздел описания интерфейсов ethernet
eth0: # Название интерфейса
dhcp4: no # Отключаем на интерфейсе динамическое рапределение IP адреса
eth1:
dhcp4: no
eth2:
dhcp4: no
eth3:
dhcp4: no
bonds: # Раздел описания связанных (bonding) интерфейсов
bond1_ecss1_pa: # Название bonding интерфейса !! В имени не может быть более 15 символов !!
interfaces: [eth0, eth1] # Секция определения связанного интерфейса ->
# -> !! Внимание после запятой обязательно наличие пробела !!
addresses: [10.0.3.238/24] # Секция определения IP адресов для связанного интерфейса
parameters: # Раздел определения параметров связанного интерфейса
mode: active-backup # Режим резервирования 1:1
mii-monitor-interval: 100
primary: eth0 # Секция определения основного интерфейса
optional: false
gateway4: 10.0.3.1 # Секция определения шлюза по умолчанию (интерфейс выхода в интернет)
bond2_ecss1_mgm:
interfaces: [eth2, eth3]
addresses: [10.0.3.237/24]
parameters:
mode: active-backup
mii-monitor-interval: 100
primary: eth2
optional: false
gateway4: 10.0.3.1 # Секция определения шлюза по умолчанию (интерфейс выхода в интернет)

В конфигурациях для каждого хоста, в первую очередь мы объявляем секцию ethernets, в которой описываются ethernet интерфейсы, существующие в системе, и, которые, будут использоваться в дальнейшем. Важно для каждого интерфейса отключить использование динамического распределения адресов (DHCP). 

Следующим разделом описываются агрегированные каналы - bonds. В нашем случае используется режим резрва 1 к 1 (active - backup) при котором второй интерфейс находится в резерве и не используется. Опционально определеяются шлюзы для связи с внешним миром и адреса DNS серверов, а так же непосредственно IP адреса для каждого интерфейса.

ВАЖНО

Обратите внимание, что во время редактирования netplan необходимо соблюдать правила разметки YAML:

  • Обязательное наличие двух пробелов перед каждой строкой (кроме network).
  • Каждая подсекция дополнительно сдвигается на 2 пробела :

→  Секция                                                                  |network

→  Подсекция                                                         |_'_'bonds:

→ Подсекция описания секции bonds |_'_'_'_'bonded_one:

→ и.т.д                                                                        |_'_'_'_'...

  • Перед знаком ":" нет пробела, после - один пробел.
  • Перед знаком "-" количество пробелов такое, как будто начинается новый подраздел, после - один пробел.

Применим установленные параметры командой:

sudo netplan apply

Выведем настроенные интерфейсы с помощью ifconfig / ip a:

Вывод ifconfig для ecss1
bond1_ecss1_pa: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
inet 10.0.3.238 netmask 255.255.255.0 broadcast 10.0.3.255
inet6 fe80::1b:41ff:feff:fb78 prefixlen 64 scopeid 0x20<link>
ether 02:1b:41:ff:fb:78 txqueuelen 1000 (Ethernet)
RX packets 36842 bytes 3630842 (3.6 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 24816 bytes 4234408 (4.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

bond2_ecss1_mgm: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
inet 10.0.3.237 netmask 255.255.255.0 broadcast 10.0.3.255
inet6 fe80::e0a0:74ff:fe28:1c31 prefixlen 64 scopeid 0x20<link>
ether e2:a0:74:28:1c:31 txqueuelen 1000 (Ethernet)
RX packets 514023 bytes 1018818719 (1.0 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 62309 bytes 4533761 (4.5 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

 Обновление программного обеспечения операционной системы

Для установки системы ECSS-10 необходимо добавить репозиторий ЭЛТЕКС:

sudo sh -c "echo "deb [arch=amd64] http://archive.eltex.org/ssw/bionic/3.14 stable main extras external" > /etc/apt/sources.list.d/eltex-ecss10-stable.list"

Обратите внимание, что требуется указать верную версию операционной системы при добавлении репозитория Eltex. Если установка происходит на Ubuntu 18.04, то необходимо указать  bionic как приведено в примере. Однако, если ECSS-10 устанавливается на Astra Linux необходимо указать соответствующие репозитории smolensk:

sudo sh -c "echo "deb [arch=amd64] http://archive.eltex.org/ssw/smolensk/3.14 stable main extras external" > /etc/apt/sources.list.d/eltex-ecss10-stable.list"
sudo sh -c "echo "http://archive.eltex.org astra smolensk smolensk-extras" > /etc/apt/sources.list.d/eltex-ecss10-stable.list"
CODE

Далее необходимо выполнить импорт ключа командой:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 33CB2B750F8BB6A5

Для обновления ОС необходимо выполнить команды:

sudo aptitude update
sudo aptitude upgrade

Установка и настройка программного обеспечения

Устанавливаем все предложенные пакеты:

sudo aptitude install dnsmasq ntp tcpdump ssh vlan ethtool htop iotop mc minicom mtr-tiny nmap pptpd pv screen tftpd vim tshark cpanminus gnuplot

Установка пакета ecss-mysql

Установка начинается с развертывания MySQL сервера и интеграции базы данных ecss-mysql.

Для установки выполняем команду:

sudo aptitude install ecss-mysql

При инсталляции пакеты будут запрошены следующие данные:

ВопросыОтветы
Адресная маска для MySQL (IP pattern for MySQL permission)127.0.0.%
Логин пользователя (Login for MySQL root)root
Пароль пользователя MySQL (Password for MySQL root)PASSWORD 

Изменение пути по умолчанию - согласиться с изменением конфигурационного файла для внесения пути до баз данных ecss-mysql введя "Y".

Базы данных mysql, используемых системой ECSS-10, после установки, будут храниться по пути /var/lib/ecss-mysql. Проверяем наличие файлов в папке:

ls -l /var/lib/ecss-mysql/
total 36
drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:36 ecss_address_book
drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:37 ecss_audit
drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:36 ecss_calls_db
drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:36 ecss_dialer_db
drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:36 ecss_meeting_db
drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:36 ecss_statistics
drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:36 ecss_subscribers
drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:36 history_db
drwxr-xr-x 2 mysql mysql 4096 Sep 26 14:32 web_conf

Проверяем, что сервер запущен:

sudo systemctl status mysql
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/mysql.service.d
└─override.conf
Active: active (running) since Thu 2019-09-26 13:36:47 +07; 23h ago
Main PID: 11642 (mysqld)
CGroup: /system.slice/mysql.service
└─11642 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid

Установка пакета ecss-node

Устанавливаем пакет ecss-node

sudo apt install ecss-node

При его установке будет предложено настроить конфигурацию:

ВопросыОтветы
Выключить ежедневные обновления (Do you want turn off apt-daily update ?)Yes
Установить настройки по умолчанию для БД (Set DB config to default ?)Yes
Использовать настройки NTP для кластера (NTP: Do you want use settings for cluster ?)No 
Внешний NTP сервер (External NTP servers through a space )ntp.ubuntu.com
Использовать локальный сервер? (NTP: Do you want use local server ? )No
Адреса и маски адресов которые должны иметь доступ к NTP (NTP: Addresses and Masks of Network, which must have access to the ntp through a space)
Установить приоритет NTP локального сервера ( NTP: Set stratum for local server)5
Входной порт для портала абонента (Input port for subscriber portal)8080
Введите адрес MySQL БД (Input host for MySQL DB)127.0.0.1
Хост или имя хоста для доступа к данным в бд порталу абонентов (Input host or hostname for ecss_subscribers DB)sp.mysql.ecss
Имя пользователя для базы данных портала абонентов (Input username for ecss_subscribers DB)subscribers
Пароль для базы данных портала абонентов (Input password for ecss_subscribers DB)subscribers
Введите имя домена (виртуальной АТС) по умолчанию (Input default domain name)d.local
Введите адрес для доступа из портала абонента (Input IP address or hostname for SSW with http_terminal to connect from subscribers_portal)127.0.0.1
Порт WEB терминала (Input port SSW http_terminal)9999
Логин для доступа к WEB терминалу (Input login for SSW http_terminal)admin
Пароль для доступа к WEB терминалу (Input password for SSW http_terminal)PASSWORD
Адрес входного взаимодействия (Input trike cowboy url)127.0.0.1:8086
Адрес ecss-core (IP address of core)127.0.0.1
Установить утилиты для работы с cdrNo

Установка пакетов ecss-media-server, ecss-restf, ecss-web-conf

Далее устанавливаются пакеты ecss-media-server, ecss-restf, ecss-web-conf и.др в любом порядке:

sudo apt install ecss-media-server

При его установке будет предложено настроить конфигурацию:

ВопросыОтветы

Создать конфигурацию? ("Create configure")

No

sudo apt install ecss-restfs

При его установке будет предложено настроить конфигурацию:

ВопросыОтветы

Использование функции TTS (Use TTS service)

No

Настройка телефонной книги (Configure phone book)

No

Настроить сервис определения речи (Configure speech recognition service)

No

Включить полное  логирование restfs (Turn on full debug log restfs)

No
sudo apt install ecss-web-conf

При его установке будет предложено настроить конфигурацию:

ВопросыОтветы
Указать доменное имя или адрес для базы данных MySQL  WEB интерфейса (Input IP address or hostname of MySQL db for web-conf DB)127.0.0.1

Указать порт для базы данных MySQL WEB интерфейса (Input port of MySQL db for web-conf DB

3306

Указать доменное имя или адрес для подключения к WEB интерфейсу (Input IP address or hostname for ECSS-10 with http_terminal)

127.0.0.1

Указать порт для WEB терминала программного коммутатора (Input port SSW http_terminal)

9999
Указать логин для WEB терминала(Input login for SSW http_terminal)admin

Указать пароль для WEB терминала(Input  password for SSW http_terminal)

password

Настройка snpmd.

Настройка snmp описана здесь.

Настройка безопасности. SSH.

Выполняем настройку сервера SSH:

sudo nano /etc/ssh/sshd_config

Укажем в конфигурационном файле порт и адрес по которому можно обратиться к серверу:

Настройка ssh для ecss1(/etc/ssh/sshd_config)

# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.

Port 2000
#AddressFamily any
ListenAddress 10.0.3.237
#ListenAddress ::

<...>

Перезапустим ssh.

systemctl restart ssh.service

Настройка начальной конфигурации

Запускаем необходимые сервисы.

ВАЖНО

Перед началом работы проверьте наличие Token в системе.

Запускаем пакеты ecss-mycelium и ecss-ds на первом хосте:

sudo systemctl start ecss-mycelium
sudo systemctl start ecss-ds

Переходим в CLI:

ssh admin@localhost -p 8023
password: password

Проверяем состояние системы

system-status

┌─┬───────────────┬───────────────────────┬───────────────┬────────────┬──────┐
│ │ Node          │ Release               │ Erlang nodes  │Mnesia nodes│Uptime│
├─┼───────────────┼───────────────────────┼───────────────┼────────────┼──────┤
│ │ds1@ecss1      │ecss-ds.2.58      │ds1@ecss1      │ds1@ecss1   │36s   │
│ │mycelium1@ecss1│ecss-mycelium.2.58│mycelium1@ecss1│not running │4m 55s│
└─┴───────────────┴───────────────────────┴───────────────┴────────────┴──────┘

Далее необходимо установить паспорт и лицензии в систему:

admin@[mycelium1@ecss1]:/$ cluster/storage/ds1/licence/set-passport <passport>
admin@[mycelium1@ecss1]:/$ cluster/storage/ds1/licence/add <license>

 Выходим из cocon выполняем перезагрузку подсистем ecss-mycelium и ecss-ds, а затем подключаем оставшиеся в порядке ecss- core, ecss-pa-sip, ecss-media-server, ecss-restfs, ecss-mediator, ecss-web-conf.

sudo systemctl start ecss-core ecss-pa-sip ecss-mediator ecss-media-server ecss-restfs ecss-web-conf

Возвращаемся в CoCon.

После устанавливается связь MSR и Core подсистем. Для этого прописывается команда:

admin@[mycelium1@ecss1]:/$ /system/media/resource/declare core1@ecss1 iface MSR.ecss1 localhost default local true

Для проверки выполняем команду system-status и видим вывод:

admin@[mycelium1@ecss1]:/$ system-status

┌─┬───────────────┬─────────────────────────┬───────────────┬─────────────┬──────┐
│ │ Node │ Release │ Erlang nodes │Mnesia nodes │Uptime│
├─┼───────────────┼─────────────────────────┼───────────────┼─────────────┼──────┤
│ │core1@ecss1 │ecss-core.0.764 │core1@ecss1 │not running │2h 8m │
│ │ds1@ecss1 │ecss-ds.0.764 │ds1@ecss1 │ds1@ecss1 │2h 8m │
│ │megaco1@ecss1 │ecss-pa-megaco.0.764│megaco1@ecss1 │megaco1@ecss1│2h 16m│
│ │mycelium1@ecss1│ecss-mycelium.0.764 │mycelium1@ecss1│not running │2h 8m │
│ │sip1@ecss1 │ecss-pa-sip.0.764 |sip1@ecss1 │sip1@ecss1 │2h 8m │
└─┴───────────────┴─────────────────────────┴───────────────┴─────────────┴──────┘

All services are started.

Active media resource selected list specific:
┌─────────────┬──────────┬────────────┬───────────┬───────────┐
│ Node │ MSR │ MSR │ Cc-status │ Cc-uptime │
│─────────────┼──────────┼────────────┼───────────┼───────────┤
│ core1@ecss1 │ MSR.ecss1│ 3.14.0.247 │ connected │ 01:45:25 │
└─────────────┴──────────┴────────────┴───────────┴───────────┘

Производим настройку адаптера SIP согласно техническому заданию. Определяем группу IP адресов (IP-set)

admin@[mycelium1@ecss1]:/$ /cluster/adapter/sip1/sip/network/set ip_set test_set node-ip node = sip1@ecss1 ip = 10.0.3.238 

Property "ip_set" successfully changed from:

to
test_set: no ports set
test_set: sip1@ecss1 10.0.3.238
test_set: dscp 0.

Далее создаем домен и присваиваем ему созданную группу (IP-set) настроек SIP адапетера:

admin@[mycelium1@ecss1]:/$ domain/declare test_domain --add-domain-admin-privileges --add-domain-user-privileges 
New domain test_domain is declared

domain/test_domain/sip/network/set ip_set [test_set] Property "ip_set" successfully changed from:

[] to ["test_set"].

После создания домена настраиваем: