Первоначальная установка системы 3.14.16 с резервированием в кластере из двух серверов
Исходные данные
Исходные данные
В данном разделе использованы специфичные для данного продукта термины, ознакомиться с ними можно здесь.
Техническое задание:
Требуется интеграция программного коммутатора 5 класса ECSS-10 (SSW) на 2-х физических серверах с поддержкой SIP со следующими параметрами на нагрузку группы серверов:
- Максимальное количество абонентов 15000 (MUL — Max user limit);
- Максимальное количество одновременных соединений 2000 (MCL — Max call limit);
- Требуется полный резерв системы ecss (все ноды резервируется на втором сервере);
- Количество сетевых интерфейсов ethernet — 4.
По техническому заданию требуется определить аппаратную платформу.
Актуальная информация с требованиями к серверам, которые должны использоваться для работы комплекса ECSS-10.
| № | Требования к серверам SSW | Серия Light+ | Серия Midi | Серия Heavy | Серия Супер Heavy | Серия Top (1) |
|---|---|---|---|---|---|---|
| 1 | Характеристики системы | |||||
| 1.1 | Максимальное количество абонентов | 5000 | 10000 | 20000 | 40000 | - |
| 1.2 | Максимальная нагрузка одновременных соединений class 5 | 800 | 1500 | 3000 | 6000 | - |
| 1.3 | Максимальная нагрузка одновременных соединений class 4 | 2400 | 4500 | 9000 | 20000 | 80000 |
| 2 | Характеристики сервера | |||||
| 2.1 | Марка | HP (Lenovo) | HP (Lenovo) | HP (Lenovo) | HP (Lenovo) | HP /Lenovo /Depo |
| 2.2 | Серия | DL20 Gen10/DL 360 Gen10 (SR530) | DL360 Gen10 (SR530/SR630) | DL360 Gen10 (SR630) | DL360 Gen10 (SR630) | DL360 Gen10 /SR650 V2 /Storm 3450 |
| 2.3 | Процессор | Intel Xeon 4214 | Intel Xeon 5220 | Intel Xeon 6240 | Intel Xeon 8268 | Intel Xeon 8380 |
| 2.4 | Количество процессоров | 1 | 1 | 2 | 2 | 2 |
| 2.5 | Оперативная память | 16 Gb | 24 Gb | 32 Gb | 64 Gb | 1024 Gb |
| 2.6 | HDD | От 3X500 SATA (от 7200 rpm) | От 3x300 Gb SAS (от 10000 rpm) | От 3x600 Gb SAS (от 10000 rpm) 2x150Gb SSD | От 6x800 Gb SSD, 2x300Gb M.2 SSD | От 6x1.2 Tb SSD, 2x300Gb M.2 SSD |
| 2.7 | RAID | no raid board | HW Raid, от 1Gb cache+battery | HW Raid, от 1Gb cache+battery | HW Raid, от 2Gb Flash cache, поддержка RAID-5 | HW Raid, от 2Gb Flash cache, поддержка RAID-5 |
| 3 | Дополнительные комплектующие сервера (в базовый комплект не входят) | |||||
| 3.1 | Лицензия на удалённое управление | по желанию | + | + | + | + |
| 3.2 | Резервный источник питания | по желанию | + | + | + | + |
| 3.3 | Организация хранилища записей разговоров | Дополнительные HDD, объединенные в RAID-5 | Лицензия на HW Raid с поддержкой RAID-5, дополнительные HDD для хранения записей | Лицензия на HW Raid с поддержкой RAID-5, дополнительные HDD для хранения записей | Лицензия на HW Raid с поддержкой RAID-5, дополнительные HDD для хранения записей | Лицензия на HW Raid с поддержкой RAID-5, дополнительные HDD для хранения записей |
Полоса пропускания СПД
Требуемая полоса пропускания СПД не менее 1000Mb/s
Минимальные требования при установке ECSS-10 на виртуальные машины*
| № | Требования к серверам SSW | Уровень Light (2)(3) | Уровень Light+ | Уровень Midi | Уровень Heavy | Уровень Супер Heavy | Уровень Top (1) |
|---|---|---|---|---|---|---|---|
| 1 | Характеристики системы | ||||||
| 1.1 | Максимальное количество абонентов | 1000 | 5000 | 10000 | 20000 | 40000 | - |
| 1.2 | Максимальная нагрузка одновременных соединений class 5 | 250 | 800 | 1500 | 3000 | 6000 | - |
| 1.3 | Максимальная нагрузка одновременных соединений class 4 | 1000 | 4500 | 9000 | 20000 | 80000 | - |
| 2 | Характеристики сервера | ||||||
| 2.4 | Количество ядер/потоков (vCore) | 8С | 12С/24T | 18С/36T | 36С/72T | 48С/96T | 80С/160T и более |
| 2.5 | Частота процессора | от 2.4 Ghz | от 3 Ghz | от 3Ghz | от 3.6 Ghz | от 3.4 Ghz | от 3.2 Ghz |
| 2.6 | Оперативная память | 8 Gb | 16 Gb | 24 Gb | 32 Gb | от 64 Gb | от 512 Gb |
| 2.7 | HDD | От 50 GB, 75 IOPS | От 500 GB SATA (от 7200 rpm, от 75 IOPS) | От 500 Gb SAS (от 10000 rpm, 170 IOPS) | От 500 Gb SAS (от 10000 rpm, 170 IOPS) и 150Gb SSD | от 800 Gb SSD и 300Gb M.2 SSD | От 1.2 Tb SSD и 300Gb M.2 SSD |
C - core, они же ядра
T - thread = поток, vCore
(1) — серия Top на текущий момент рассчитана для реализации контроллера транковых шлюзов (работа по 4 классу).
(2) — уровень Light применяется только для расчета виртуальных машин, для физических серверов минимальная рекомендуемая конфигурация — Light+.
(3) — уровень Light является минимальным рекомендуемым. При запросе расчета ВМ для малого числа абонентов (до 1000: 100, 200...) используем его.
*Если на системе планируется использование таких сервисов как КЦ, запись разговоров, видео-вызовы, то необходимо согласовать требования с технической поддержкой
Полоса пропускания СПД
Требуемая полоса пропускания СПД не менее 1000Mb/s
Пример составления аппаратных требований:
Устройство | Требуемый ресурс | Серия аппаратного продукта | |
|---|---|---|---|
| MCL | MUL | ||
Сервер 1 | 2000 | 15000 | Heavy |
| Сервер 2 | Heavy | ||
После определения по требованиям проекта составляем предварительную сетевую карту.
Пример разнесения составляющих по адресному пространству для одной ноды:
Имя сервера (хоста) | Роль | Интерфейс | Адрес | Адрес вашего проекта | Порт |
|---|---|---|---|---|---|
Статические адреса программного коммутатора | |||||
ecss1 | Интерфейс управления сервером (порт 2000 ssh) | net.10 | 10.0.10.11/24 | 2000 | |
ecss2 | Интерфейс управления сервером (порт 2000 ssh) | net.10 | 10.0.10.12/24 | 2000 | |
ecss1 | Адрес ядра (ecss-core) | net.20 | 10.0.20.11/24 | 5000 | |
| ecss2 | Адрес ядра (ecss-core) | net.20 | 10.0.20.12/24 | 5000 | |
ecss1, ecss2 | Адрес шлюза | net.10 | 10.0.10.1 | - | |
ecss1, ecss2 | Адреса DNS-серверов | net.10 | 10.0.10.1, 8.8.8.8 | - | |
| ecss1, ecss2 | Адреса NTP-серверов | net.10 | 10.136.16.211, 10.136.16.212 | 123 | |
Виртуальные адреса программного коммутатора | |||||
| ecss1 | Виртуальный адрес программного адаптера хоста ecss1 | net.20:SIP1 | 10.0.20.31/24 | - | |
| ecss2 | Виртуальный адрес программного адаптера хоста ecss2 | net.20:SIP2 | 10.0.20.32/24 | - | |
| ecss1 | Запасной виртуальный адрес программного адаптера хоста ecss2 на хосте ecss1 | net.20:SIP2 | 10.0.20.32/24 | - | |
| ecss2 | Запасной виртуальный адрес программного адаптера хоста ecss1 на хосте ecss2 | net.20:SIP1 | 10.0.20.31/24 | - | |
ecss1, ecss2 | Виртуальный адрес базы данных MySQL | net.10:MYSQL | 10.0.10.10/24 | 3306 | |
Включение в сеть
Топологию включения сервера в сеть для обеспечения резервирования рекомендуется делать с использованием 2-х коммутаторов.

Рисунок 2 — Схема организации связи
Вариант 1. Схема active-backup
Коммутаторы связаны между собой в erps-кольцо.
Все 4 физических сетевых интерфейса каждого сервера объединяются в 1 агрегированный линк (bond). Агрегация портов сервера настраивается в режиме active-backup, т.е. в работе всегда находится только 1 сетевой интерфейс. Сетевые интерфейсы каждого сервера попарно включены в коммутаторы, на которых агрегация портов (port-channel) также настраивается в режиме active-backup. Например, eth0 и eth1 каждого сервера включаются в первый коммутатор (port-channel 1 и 2), а eth2 и eth3 (port-channel 3 и 4) — во второй.
Вариант 2. Схема LACP
Коммутаторы связаны между собой в стек. Стек должен логически работать как один коммутатор, способный обеспечивать агрегацию портов в режиме LACP между разными физическими коммутаторами. Пример — коммутаторы MES-3124 со специализированной прошивкой.
Все 4 физических сетевых интерфейса также объединяются в 1 агрегированный линк (bond). Агрегация портов сервера настраивается в режиме 802.3ad. Создаются агрегированные группы сетевых карт с одинаковой скоростью и дуплексом. При таком объединении передача задействует все каналы в активной агрегации согласно стандарту IEEE 802.3ad. Выбор того, через какой интерфейс необходимо отправлять пакет, определяется политикой. По умолчанию это XOR-политика, можно использовать «xmit_hash» политику. Подробнее — в разделе Приложение Е. Netplan.
Требования:
- Поддержка Ethtool в драйвере для получения информации о скорости и дуплексе на каждом сетевом интерфейсе;
- Поддержка на коммутаторе стандарта IEEE 802.3ad;
Сетевые интерфейсы сервера также попарно включены в коммутаторы, на которых агрегация портов (port-channel) тоже настраивается в режиме LACP. Например, eth0 и eth1 каждого сервера включаются в первый коммутатор (port-channel 1 и 2), а eth2 и eth3 (port-channel 3 и 4) — во второй.
Последовательность установки SSW ECSS10 в кластере из двух серверов
Установка SSW ECSS10 состоит из 2-х основных частей :
Подготовительной - Установка ОС Ubuntu 22.04, обновлений пакетов OC Ubuntu , "оптимизация" OC, установка дополнительных пакетов программ, подготовка сетевых интерфейсов, /etc/hosts, ssh-keygen
- Установка приложений Eltex ECSS10
Подготовительный этап
В этом разделе приведено описание инсталляции операционной системы, а также необходимых и дополнительных пакетов. Система ECSS-10 версии 3.14.16 работает под управлением ОС Ubuntu 22.04.
Предварительные требования
- Установочный загрузочный носитель с дистрибутивом операционной системы;
- Подготовленный сервер с обновленным BIOS, ILO (если есть), подключенная сеть для доступа в сеть Интернет;
- Выставленный первый приоритет загрузки с установочного носителя — USB Flash или CD/DVD в BIOS;
- Достаточный объем дискового пространства и памяти в соответствии с проектом.
Установка ОС
Для установки ОС необходимо выполнить следующее:
- После загрузки с установочного носителя выбрать "Install Ubuntu Server".
- Выбрать язык системы и раскладку клавиатуры.
Настроить сетевой интерфейс для подключения к сети Интернет:
- Создать партиции на диске в соответствии с таблицей 1
- Настроить имена сервера и пользователя
- Установить OpenSSH server
- Перезагрузить успешно установленную ОС






























Ubuntu Linux Server установлен
Таблица 1 — Вариант размещения информации в файловой системе на физических носителях для серверов
| 1 | Загрузочный раздел операционной системы (создается автоматически) | boot | raid 1:hdd1,hdd2 | boot | /boot | ext4 | 1 Gb | Первичный |
| 2 | Корневой раздел операционной системы | root | raid 1:hdd1,hdd2 | root | / | ext4 | 30 Gb | Логический |
| 3 | Информация локальных баз данных | mnesia | raid 1:hdd1, hdd2 | mnesia | /var/lib/ecss | ext4 | 10 Gb | Логический |
| 4 | Распределенная БД для хранения медиаресурсов | glusterfs | raid 1:hdd1, hdd2 или hdd3 | glusterfs | /var/lib/ecss/glusterfs* | ext4 | Max Gb | Логический |
| 5 | Журналы функционирования подсистем ОС | log | raid 1:hdd1,hdd2 или hdd3 | log | /var/log | ext4 | 20 Gb | Логический |
| 6 | Логический раздел для mysql базы | mysql | raid 1:hdd1,hdd2 или hdd3 | mysql | /var/lib/mysql | ext4 | 30Gb | Логический |
| 7 | Журналы функционирования подсистем ECSS | ecss_log | raid 1:hdd1,hdd2 или hdd3 | ecss_log | /var/log/ecss | ext4 | 20 Gb | Логический |
| 8 | Базы данных | ecss_db | raid 1:hdd1,hdd2 или hdd3 | ecss_db | /var/lib/ecss-mysql | ext4 | 100–400 Gb** | Логический |
| 9 | Файлы пользователя | home | raid 1:hdd1,hdd2 или hdd3 | home | /home | ext4 | 10 Gb | Логический |
* Если сервер не будет работать в кластере, то вместо glusterfs создается раздел /var/lib/ecss/restfs.
** Рекомендуемое значение для серий Light, Light+, Midi — 100 Gb. Рекомендуемое значение для серии Heavy — 200 Gb, Super Heavy — 400 Gb.
Для работы системы необходимо как минимум 256 Gb свободного пространства.
На серверах системы необходимо настроить параметр "hostname".
На всех серверах системы желательно указать одинаковое имя пользователя (любое, кроме ssw). Лицензия ECSS-10 привязывается к ключу eToken/ruToken и к имени компьютера (hostname). Системный пользователь ssw создается при инсталляции пакета ecss-user.
При установке системы в кластере, рекомендуемое значение для первого сервера — ecss1, для второго — ecss2.
Настройка сети
Согласно параметрам, заданным в техническом задании (далее ТЗ), выполните сетевые настройки. В данном примере считается, что уже установлена необходимая операционная система.
Рекомендуется разделять трафик, используемый в разных целях. Например, трафик управления и трафик VoIP. Для этого создаются 2 или более vlan. При небольшой нагрузке для простоты можно обойтись и одним vlan, но это может в будущем доставлять неудобства при снятии дампов трафика и его анализе. В соответствии с техническим заданием на vlan настраиваются IP-адреса самого хоста, шлюзы, DNS и маршрутизация в другие сети.
В данном примере согласно ТЗ будем использовать адреса (в скобках — различия для ecss2):
- 10.0.10.11(12)/24 — для управления, vlan 10;
- 10.0.20.11(12)/24 — core, vlan 20;
- 10.0.20.31(32)/24 — виртуальные (vrrp) для VoIP;
- 10.0.10.10 — виртуальный (vrrp) адрес сервера MySQL;
- 10.0.10.1 — шлюз и dns для доступа во внешнюю сеть;
- 10.0.20.1 — шлюз в подсеть 10.0.3.0/24;
- 10.136.16.211, 10.136.16.212 — адреса NTP-серверов, доступ до которых осуществляется через шлюз 10.0.10.1.
Внутри серверной платформы существует адресная структура и используются внутренние адреса для взаимодействия между подсистемами (нодами) в кластере. Например, внутренний адрес для кластера на одном сервере 10.0.20.11, при этом ядро (ecss-core) взаимодействует с сервером обработки мультимедиа-данных (ecss-media-server). Их взаимодействие происходит с использованием одного и того же адреса, но у каждой программной части свой транспортный порт: ecss-core — 5000, ecss-msr — 5040.
Для всех нод кластера определяется единый адрес для обращения к базе данных MySQL, например, адрес ecss-mysql 10.0.10.10. Таким образом, выполняется условие единообразия, при котором все ноды кластера имеют полностью одинаковые данные о текущем состоянии динамических составляющих программного коммутатора (например, история вызовов).
Сначала настраиваются сетевые интерфейсы.
В Ubuntu 22 для их настройки используется утилита netplan:
sudo nano /etc/netplan/ecss_netplan.yaml |
В конфигурациях для каждого хоста в первую очередь мы объявляем секцию ethernets, в которой описываются существующие в системе ethernet-интерфейсы, используемые в дальнейшем. Для каждого интерфейса необходимо отключить использование динамического распределения адресов (DHCP).
Следующим разделом описываются агрегированные каналы — bonds. В зависимости от выбранного варианта включения в сеть настраивается режим резерва 1:1 (active - backup) или LACP (802.3ad).
Далее настраиваются vlan, на которых опционально определяются шлюзы для связи с внешним миром и адреса DNS-серверов, а также непосредственно IP-адреса для каждого интерфейса.
ВАЖНО
Обратите внимание, что во время редактирования netplan необходимо соблюдать правила разметки YAML:
- Обязательное наличие двух пробелов перед каждой строкой (кроме network);
- Каждая подсекция дополнительно сдвигается на 2 пробела:
→ Секция |network
→ Подсекция |_'_'bonds:
→ Подсекция описания секции bonds |_'_'_'_'bonded_one:
→ и т.д. |_'_'_'_'...
- Перед знаком ":" нет пробела, после — один пробел;
- Перед знаком "-" количество пробелов такое, как будто начинается новый подраздел, после — один пробел.
Пример netplan для режима active-backup
| Netplan для интерфейсов сервера ecss1 (/etc/netplan/ecss_netplan.yaml) | Netplan для интерфейсов сервера ecss2 (/etc/netplan/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: # Название bonding-интерфейса
interfaces: # Секция определения связанного интерфейса
- eth0
- eth1
- eth2
- eth3
parameters: # Раздел определения параметров связанного интерфейса
primary-reselect-policy: failure # позволяет избежать лишних переключений
gratuitous-arp: 5 # Способствует более быстрому переключению
all-slaves-active: true # принимать входящие кадры на backup интерфейсах
up-delay: 1000 # сделать задержку в одну секунду
mode: active-backup # Режим резервирования, один активным, а остальные в резерве
mii-monitor-interval: 100 # интервал мониторинга интерфейса(мс)
primary: eth0 # Секция определения основного интерфейса
optional: false # Определение, является ли интерфейс обязательным при старте
vlans:
net.10: # Интерфейс управления
id: 10
link: bond1
addresses: [10.0.10.11/24]
gateway4: 10.0.10.1 # Адрес шлюза
nameservers:
addresses: [10.0.10.1, 8.8.8.8] # Адреса серверов DNS
routes: # Маршрутизация в подсеть к NTP
- to: 10.136.16.0/24
via: 10.0.10.1 # Адрес шлюза в данную подсеть
on-link: true # Определяет, что указанные маршруты непосредственно связаны с интерфейсом
net.20: # Интерфейс для VoIP
id: 20
link: bond1
addresses: [10.0.20.11/24]
routes:
- to: 10.0.3.0/24
via: 10.0.20.1
on-link: true
| # Netplan для хоста ecss2 программного коммутатора
# Обратите внимание на обязательное наличие минимум двух пробелов в каждой строке и секции (кроме строки секции 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: # Название bonding-интерфейса
interfaces: # Секция определения связанного интерфейса
- eth0
- eth1
- eth2
- eth3
parameters: # Раздел определения параметров связанного интерфейса
primary-reselect-policy: failure # позволяет избежать лишних переключений
gratuitous-arp: 5 # Способствует более быстрому переключению
all-slaves-active: true # принимать входящие кадры на backup интерфейсах
up-delay: 1000 # сделать задержку в одну секунду
mode: active-backup # Режим резервирования, один активным, а остальные в резерве
mii-monitor-interval: 100 # интервал мониторинга интерфейса(мс)
primary: eth0 # Секция определения основного интерфейса
optional: false # Определение, является ли интерфейс обязательным при старте
vlans:
net.10: # Интерфейс управления
id: 10
link: bond1
addresses: [10.0.10.12/24]
gateway4: 10.0.10.1 # Адрес шлюза
nameservers:
addresses: [10.0.10.1, 8.8.8.8] # Адреса серверов DNS
routes: # Маршрутизация в подсеть к NTP
- to: 10.136.16.0/24
via: 10.0.10.1 # Адрес шлюза в данную подсеть
on-link: true # Определяет, что указанные маршруты непосредственно связаны с интерфейсом
net.20: # Интерфейс для VoIP
id: 20
link: bond1
addresses: [10.0.20.12/24]
routes:
- to: 10.0.3.0/24
via: 10.0.20.1
on-link: true
|
Следующие настройки bonds обязательны для сервера ECSS, чтобы схема работала верно:
mode: active-backup - задаёт режим работы, когда один из линков выбирается активным, а остальные остаются в резерве;
primary-reselect-policy: failure - указывает, что выбирать новый активный линк следует только тогда, когда текущий активный линк переходит в состоянии аварии. Это позволяет избежать лишних переключений;
gratuitous-arp: 5 - при смене активного линка в сторону коммутатора отправляются пять запросов gratuitous ARP, чтобы обновить на нём таблицу коммутации. Способствует более быстрому переключению;
all-slaves-active: true - заставляет принимать входящие кадры на backup интерфейсах. Таким образом балансировка трафика на MESе не мешает работе. Данные в сторону сервера идут со всех линков, а сервер отправляет данные только с active линка;
mii-monitor-interval: 100 - активирует мониторинг линков через интерфейс MII и указывает интервал опроса в 100мс;
up-delay: 1000 - указывает считать поднявшийся интерфейс доступным для работы не сразу, а сделать задержку в одну секунду после того, как интерфейс поднялся. Необходимо для того, чтобы избежать лишних переключений в случае, когда порт "прыгает" несколько раз из состояния "включено" в состояние "выключено" и обратно.
Пример netplan для режима 802.3ad
| Netplan для интерфейсов сервера ecss1 (/etc/netplan/ecss_netplan.yaml) | Netplan для интерфейсов сервера ecss2 (/etc/netplan/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: # Название bonding-интерфейса
interfaces: # Секция определения связанного интерфейса
- eth0
- eth1
- eth2
- eth3
parameters: # Раздел определения параметров связанного интерфейса
mode: 802.3ad # Режим LACP
mii-monitor-interval: 100 # интервал мониторинга интерфейса(мс)
primary: eth0 # Секция определения основного интерфейса
optional: false # Определение, является ли интерфейс обязательным при старте
vlans:
net.10: # Интерфейс управления
id: 10
link: bond1
addresses: [10.0.10.11/24]
gateway4: 10.0.10.1 # Адрес шлюза
nameservers:
addresses: [10.0.10.1, 8.8.8.8] # Адреса серверов DNS
routes: # Маршрутизация в подсеть к NTP
- to: 10.136.16.0/24
via: 10.0.10.1 # Адрес шлюза в данную подсеть
on-link: true # Определяет, что указанные маршруты непосредственно связаны с интерфейсом
net.20: # Интерфейс для VoIP
id: 20
link: bond1
addresses: [10.0.20.11/24]
routes:
- to: 10.0.3.0/24
via: 10.0.20.1
on-link: true
| # Netplan для хоста ecss2 программного коммутатора
# Обратите внимание на обязательное наличие минимум двух пробелов в каждой строке и секции (кроме строки секции 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: # Название bonding-интерфейса
interfaces: # Секция определения связанного интерфейса
- eth0
- eth1
- eth2
- eth3
parameters: # Раздел определения параметров связанного интерфейса
mode: 802.3ad # Режим LACP
mii-monitor-interval: 100 # интервал мониторинга интерфейса(мс)
primary: eth0 # Секция определения основного интерфейса
optional: false # Определение, является ли интерфейс обязательным при старте
vlans:
net.10: # Интерфейс управления
id: 10
link: bond1
addresses: [10.0.10.12/24]
gateway4: 10.0.10.1 # Адрес шлюза
nameservers:
addresses: [10.0.10.1, 8.8.8.8] # Адреса серверов DNS
routes: # Маршрутизация в подсеть к NTP
- to: 10.136.16.0/24
via: 10.0.10.1 # Адрес шлюза в данную подсеть
on-link: true # Определяет, что указанные маршруты непосредственно связаны с интерфейсом
net.20: # Интерфейс для VoIP
id: 20
link: bond1
addresses: [10.0.20.12/24]
routes:
- to: 10.0.3.0/24
via: 10.0.20.1
on-link: true
|
Так же рекомендуется проверить отсутствие в каталоге /etc/netplan/ еще каких либо файлов, если другие файлы присутствуют , то их нужно переместить в другой каталог или удалить, в противном случае возможна некорректная настройка сетевых интерфейсов и некорректная работа SSW.
Применим установленные параметры командой:
на обоих хостах
sudo netplan apply
Просмотреть получившиеся настройки можно при помощи команд ifconfig или ip a.
На серверах системы необходимо настроить параметр "hostname".
На всех серверах системы желательно указать одинаковое имя пользователя (любое, кроме ssw). Лицензия ECSS-10 привязывается к ключу eToken/ruToken и к имени компьютера (hostname), поэтому необходимо использовать стандартные значения. Системный пользователь ssw создается при инсталляции пакета ecss-user.
При установке системы в кластере значение для первого сервера — ecss1, для второго — ecss2.
Другие имена хостов возможны только при согласовании проекта, это потребуется для генерации лицензий.
Указать имя хоста: ecss1 / ecss2 в файле /etc/hostname:
на обоих хостах
sudo nano /etc/hostname
Настройка /etc/hosts
После настройки netplan необходимо указать, что внутренний адрес 10.0.10.Х принадлежит соответствующему серверу ecssX. Для этого настраиваем /etc/hosts:
| Настройка hosts для ecss1 (/etc/hosts) | Настройка hosts для ecss2 (/etc/hosts) |
|---|---|
127.0.0.1 localhost # Адрес локальной петли, используется некоторыми сервисами ecss 10.0.10.11 ecss1 # Адрес хоста 10.0.10.12 ecss2 # Внутренний адрес другого хоста | 127.0.0.1 localhost # Адрес локальной петли, используется некоторыми сервисами ecss 10.0.10.12 ecss2 # Адрес хоста 10.0.10.11 ecss1 # Внутренний адрес другого сервера |
Теперь, если вызвать утилиту ping на ecssX, можно обратиться к соседнему серверу.
| Обращение к ecss2 с ecss1 | Обращение к ecss1 с ecss2 |
|---|---|
ping ecss2 PING ecss2 (10.0.10.12) 56(84) bytes of data. 64 bytes from ecss2 (10.0.10.12): icmp_seq=1 ttl=64 time=0.047 ms | ping ecss1 PING ecss1 (10.0.10.11) 56(84) bytes of data. 64 bytes from ecss1 (10.0.10.11): icmp_seq=1 ttl=64 time=0.032 ms |
"Оптимизация" операционной системы Ubuntu
Выставить параметры ОС в режим производительности
Используем утилиту cpufrequtils.
на обоих хостах
sudo apt install cpufrequtils
по умолчанию после инсталляции Ubuntu использует режим "ondemand" - "по запросу" (производительность CPU по запросу приложений, экономит электроэнергию , но ниже производительность):
на обоих хостах
cat /etc/init.d/cpufrequtils | grep GOVERNOR=
в выходном сообщении системы , режим работы по умолчанию после инсталляции - "ondemand" :
GOVERNOR="ondemand"
Установить режим - результативность/производительность - в файле /etc/init.d/cpufrequtils значение "ondemand" заменить на "performance"
на обоих хостах
sudo sed -i 's/GOVERNOR="ondemand"/GOVERNOR="performance"/g' /etc/init.d/cpufrequtils
Перезапустить утилиту:
на обоих хостах
sudo /etc/init.d/cpufrequtils restart
Затем выполнить команду:
на обоих хостах
sudo systemctl daemon-reload
Отключить SWAP
Ubuntu сервер SSW работает в реальном масштабе времени , поэтому все необходимые данные должны находится в оперативной памяти, использование файла подкачки (swap-файл - /swap. img) может привести к увеличению времени обработки вызовов приложения SSW ECSS10 , что недопустимо. Swap - отключаем.
Выполнить последовательно три команды:
Отключение Swap:
на обоих хостах
sudo swapoff -a
Удалить файл swap.img.
на обоих хостах
sudo rm /swap.img
Закомментировать строку - /swap.img none swap sw 0 0 - в файле /etc/fstab -
привести ее к виду # /swap.img none swap sw 0 0
либо удалить эту строчку (/swap.img none swap sw 0 0)
на обоих хостах
sudo nano /etc/fstab
# /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> # / was on /dev/sda2 during curtin installation /dev/disk/by-uuid/731728e2-4d6b-499a-afea-9362fd6726b2 / ext4 defaults 0 1 # /swap.img none swap sw 0 0
Для проверки выполните команду free -h:
на обоих хостах
free -h
Размер Swap равен 0 - то есть он выключен
free -h
total used free shared buff/cache available
Mem: 3,9G 110M 3,2G 820K 535M 3,5G
Swap: 0B 0B 0B
Установка часового пояса
При инсталляции Ubuntu-22 не предлагается установить часовой пояс(по умолчанию устанавливается время UTC). Его нужно установить вручную (для корректной работы системы тарификации , работ по расписанию и т.д. ), например:
на обоих хостах
sudo timedatectl set-timezone Asia/Novosibirsk
В случае выноса компонентов системы на разные серверы/ВМ (ecss-node/ecss-mysql/ecss-msr) необходимо указывать единый часовой пояс, для всех компонентов системы.
Улучшение работы высоконагруженных серверов
Улучшить работу высоконагруженных серверов можно увеличив лимит открытых файлов.
Для установки лимита открытых файлов необходимо:
Проверить текущий лимит командой:
на обоих хостах
ulimit -a
результат :
eltex@ecss1:~$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 15515 max locked memory (kbytes, -l) 65536 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 15515 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
Данного лимита ( open files 1024 ) недостаточно для нормальной работы высоконагруженных серверов.
Установить лимит открытых файл для каждого пользователя:
sudo sed -i '55i\* soft nproc 65536\n* hard nproc 131072\n* soft nofile 65536\n* hard nofile 131072\nroot - memlock unlimited' /etc/security/limits.conf
# /etc/security/limits.conf##Each line describes a limit for a user in the form:##<domain> <type> <item> <value>##Where:#<domain> can be:# - a user name# - a group name, with @group syntax# - the wildcard *, for default entry# - the wildcard %, can be also used with %group syntax,# for maxlogin limit# - NOTE: group and wildcard limits are not applied to root.# To apply a limit to the root user, <domain> must be# the literal username root.##<type> can have the two values:# - "soft" for enforcing the soft limits# - "hard" for enforcing hard limits##<item> can be one of the following:# - core - limits the core file size (KB)# - data - max data size (KB)# - fsize - maximum filesize (KB)# - memlock - max locked-in-memory address space (KB)# - nofile - max number of open files# - rss - max resident set size (KB)# - stack - max stack size (KB)# - cpu - max CPU time (MIN)# - nproc - max number of processes# - as - address space limit (KB)# - maxlogins - max number of logins for this user# - maxsyslogins - max number of logins on the system# - priority - the priority to run user process with# - locks - max number of file locks the user can hold# - sigpending - max number of pending signals# - msgqueue - max memory used by POSIX message queues (bytes)# - nice - max nice priority allowed to raise to values: [-20, 19]# - rtprio - max realtime priority# - chroot - change root to directory (Debian-specific)##<domain> <type> <item> <value>#
#* soft core 0#root hard core 100000#* hard rss 10000#@student hard nproc 20#@faculty soft nproc 20#@faculty hard nproc 50#ftp hard nproc 0#ftp - chroot /ftp#@student - maxlogins 4* soft nproc 65536* hard nproc 131072* soft nofile 65536* hard nofile 131072root - memlock unlimited
# End of file
ВАЖНО
Установку пакетов требуется делать НЕ из-под пользователя ssw.Обновление программного обеспечения операционной системы
Для установки системы ECSS-10 необходимо добавить репозиторий ELTEX.
на обоих хостах
sudo sh -c "echo 'deb [arch=amd64] http://archive.eltex.org/ssw/jammy/3.14.16.1 stable main extras external' > /etc/apt/sources.list.d/eltex-ecss10-stable.list"
Далее необходимо выполнить импорт ключа командой:
на обоих хостах
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 33CB2B750F8BB6A5
Для обновления ОС необходимо выполнить команды:
на обоих хостах
sudo apt update
Если вы видите такое сообщение системы:
W: http://archive.eltex.org/ssw/jammy/3.14/dists/unstable/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
Выполните следующую команду:
на обоих хостах
sudo cp /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d
на обоих хостах
sudo apt upgrade
Установка и настройка программного обеспечения
установка пакетов deb
┌ версия ПО ECSS. Сейчас в заявке на сертификацию она заявлена как 3.
| Мы её менять не будем до следующей сертификации или │ выпуска принципиально новой версии системы. │ │ ┌ версия System Release. Общая версия для всех компонент входящих в конкретный релиз.
| | Меняем её централизовано, когда
│ │ принимаем решение о выпуске нового релиза. Релизы между собой обычно не совместимы.
┌─┴┐ ┌──┴─┐
ECSS.SysRel.SubMaj.SubMin
└──┬─┘ └──┬─┘
│ └ версия Subsystem minor. Минорную версию подсистемы устанавливает разработчик подсистемы. | Минорную версию
│ меняем при добавлении патча. Как правило, минорные версии в рамках одной мажорной версии
│ совместимы между собой и отличаются в рамках конкретных патчей.
│
└ версия Subsystem major. Мажорная версия устанавливается разработчиком подсистемы. Мажорную версию подсистемы необходимо менять при внесении в подсистему существенных изменений.
Утилита установки пакетов APT анализирует версию пакета слева направо, то есть мы имеем пакет 14.14.7.7 ,
в репозитории находятся пакеты
14.14.7.8
14.14.7.9
14.14.8.1
14.14.20 -14.14.28
то при выполнении команды sudo apt install имя пакета → будет автоматически проверен и установлен пакет 14.14.28 , так как он самый последний, анализ будет выполнен по 3-й позиции (major), анализ по 4-й (minor) выполнен не будет (аналогичным образом будет выполнятся команда sudo apt upgrade).
В случае если для конкретной ситуации требуется перейти с версии 14.14.7.7 на версию 14.14.7.9 , стандартная команда → sudo apt upgrade , нам не поможет, так как будет выбран самый новый пакет, в данной ситуации нам необходимо в явном виде указать какую версию пакета мы хотим установить, в данном примере мы должны выбрать команду → sudo apt install имя пакета=14.14.7.9 . Обычно это необходимо для тестирования определенного патча, для стандартных обновлений достаточно выбора привычной команды установки /обновления пакета
Установите все предложенные пакеты:
на обоих хостах
sudo apt install ntp ntpdate tcpdump vlan dnsmasq aptitude atop ethtool htop iotop mc minicom mtr-tiny nmap pptpd pv screen ssh tftpd vim sngrep tshark cpanminus gnuplot libgraph-easy-perl debconf-utils
Также установите пакеты для системы с резервированием:
на обоих хостах
sudo apt install ifenslave keepalived attr
Список обязательного сервисного программного обеспечения:
sudo apt install ntp tcpdump vlan dnsmasq
| ntp | NTP-сервер |
| tcpdump | сниффер пакетов |
| vlan | управление VLAN |
| dnsmasq | легковесный DNS/DHCP-сервер |
Список рекомендуемого диагностического и вспомогательного программного обеспечения:
sudo apt install aptitude atop ethtool htop mc screen ssh tftpd sngrep tshark gnuplot libgraph-easy-perl debconf-utils iotop ncdu
| aptitude | установка программ из репозиториев, рекомендуется использовать вместо программы apt/apt-get |
| atop | мониторинг загрузки хоста с функцией периодического сохранения информации в файлы |
| ethtool | просмотр статистики сетевых интерфейсов |
| htop | мониторинг процессов |
| mc | файловый менеджер |
| screen | мультиплексор терминалов |
| ssh | сервер и клиент SSH |
| tftpd | TFTP-сервер |
| sngrep | трассировка sip |
| tshark | консольный аналог wireshark |
| gnuplot | вывод графиков статистики |
| libgraph-easy-perl | Perl-модуль для преобразования или рендеринга графиков (в ASCII, HTML, SVG или через Graphviz) |
| debconf-utils | набор утилит для работы с базой debconf |
| iotop | инструмент для мониторинга использования ввода-вывода (IO) на диске в реальном времени в Linux |
| ncdu | утилита для поиска больших директорий в системе Linux |
Данное программное обеспечение не требуется для работы системы ECSS-10, однако может упростить сервисное обслуживание системы и её отдельных компонентов со стороны инженеров эксплуатации и техподдержки.
Список обязательных пакетов для схем с резервированием:
sudo apt install ifenslave-2.6 keepalived attr
| ifenslave-2.6 | управление BOND-интерфейсами |
| keepalived | сервис мониторинга серверов/служб в кластере |
| attr | сервис управления атрибутами файловых систем |
Список дополнительных пакетов для схем с резервированием:
sudo apt install bridge-utils ethtool
| bridge-utils | управление bridge-интерфейсами |
| ethtool | управление и мониторинг сетевых интерфейсов |
Перед началом установки пакетов ecss , нужно убедится в соответствии полосы пропускания СПД необходимым требованиям.
Для этого выполнить команду sudo ethtool <имя интерфейса> для всех физических интерфейсов.
sudo ethtool net.20Settings for net.20: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Supported FEC modes: Not reported Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: Yes Advertised FEC modes: Not reported Speed: 1000Mb/s Duplex: Full Auto-negotiation: on Port: Twisted Pair PHYAD: 0 Transceiver: internal MDI-X: off (auto) Link detected: yes
Проверить значение следующих параметров:
Advertised auto-negotiation: Yes
Speed: 1000Mb/s (не менее)
Duplex: Full
Установка пакета ecss-mysql
Перед установкой необходимо убедиться, что в системе не установлен mysql-сервер, и папка /var/lib/mysql/ пуста.
При установке mysql на отдельную, выделенную, партицию, автоматически создается директория "/var/lib/mysql/lost+found" она будет мешать установке mysql-server.
Удалите все содержимое директории "/var/lib/mysql/" следующей командой:
sudo rm -R /var/lib/mysql/
при появлении следующего сообщения, не обращайте внимания.
sudo rm -R /var/lib/mysql/ rm: cannot remove '/var/lib/mysql/': Device or resource busy
Это нормальное сообщение системы.
Для установки выполните команду:
на обоих хостах
sudo apt install ecss-mysql
Настройка пакета ecss-dns-env
Перед установкой пакета ecss-mysql вам будет предложено настроить переменные окружения для сервисов в dnsmasq. Настройщик предложит выбрать разделы для настройки по вопросам ниже. Нужно выбрать broker и mysql. (для примера 10.0.10.11 и 10.0.10.12 )
| Вопрос ecss-dns-env | Ответы для ecss1 | Ответы для ecss2 |
|---|---|---|
| [Primary broker] Введите адрес ([Primary broker] Enter ip) | 10.0.10.11 (необходимо ввести) | 10.0.10.11 (необходимо ввести) |
| [Secondary broker] Введите адрес ([Secondary broker] Enter ip) | 10.0.10.12 (необходимо ввести) | 10.0.10.12 (необходимо ввести) |
| [Mysql] Введите адрес ([Mysql] Enter ip) | 10.0.10.10 (необходимо ввести) | 10.0.10.10 (необходимо ввести) |
ВАЖНО
В случае последующей коррекции IP-адресов следует использовать команду:
sudo dpkg-reconfigure ecss-dns-env
Настройка пакета ecss-mysql
Во время установки настройщик задаст вопросы, ответы указаны в таблице ниже. Обратите внимание, что пароль является одинаковым для обоих хостов, на которых устанавливается mysql.
| Вопросы ecss-mysql | Ответы для ecss1 | Ответы для ecss2 |
|---|---|---|
| IP маски для прав MySQL таблиц, разделенные пробелами: | 10.0.10.% (необходимо ввести) | 10.0.10.% (необходимо ввести) |
| Путь до внешней data-директории, где будут создаваться таблицы баз данных: | /var/lib/ecss-mysql (значение по умолчанию) | /var/lib/ecss-mysql (значение по умолчанию) |
| Логин для администратора MySQL (Login for MySQL root) | root (значение по умолчанию) | root (значение по умолчанию) |
| Пароль для администратора MySQL (Password for MySQL root) | password(необходимо ввести) | password (необходимо ввести) |
| IP маска сервиса ecss-address-book для прав MySQL таблиц: | 10.0.10.% (необходимо ввести) | 10.0.10.% (необходимо ввести) |
для Elph
В случае использования в составе Элтекс решения Elph-Descktop / Elph-Mobile. И нахождения серверов Elph в подсетях отличных от подсети SSW.
Необходимо при ответе на вопрос "IP маски для прав MySQL таблиц, разделенные пробелами" добавить не только подсеть для mysql, но и IP адрес или подсеть для серверов Elph-api / Elph-chat. В случае если подсети для Elph-api и Elph-chat , необходимо указать каждую из них.
В качестве разделителя обязательно использовать "пробел"
Для примера:
| Вопросы ecss-mysql | Ответы для ecss1 | Ответы для ecss2 |
|---|---|---|
| IP маски для прав MySQL таблиц, разделенные пробелами: (IP masks for MySQL permission, separated by spaces) | 10.0.10.% 192.168.1.% (необходимо ввести) или 10.0.10.% 192.168.1.248 (необходимо ввести) или 10.0.10.% 192.168.1.248 10.1.100.5 (необходимо ввести) | 10.0.10.% 192.168.1.% (необходимо ввести) или 10.0.10.% 192.168.1.248 (необходимо ввести) или 10.0.10.% 192.168.1.248 10.1.100.5 (необходимо ввести) |
ВАЖНО
В случае последующей коррекции IP-адресов следует использовать команду:
sudo dpkg-reconfigure ecss-mysql
Базы данных mysql, используемых системой ECSS-10, после установки будут храниться по пути /var/lib/ecss-mysql . Проверяем наличие файлов в папке:
на обоих хостах
ls -la /var/lib/ecss-mysql/
ls -la /var/lib/ecss-mysql/ drwxr-xr-x 2 mysql mysql 4096 дек 1 13:34 ecss_address_book drwxr-xr-x 2 mysql mysql 4096 дек 1 13:34 ecss_audit drwxr-xr-x 2 mysql mysql 4096 дек 1 13:34 ecss_calls_db drwxr-xr-x 2 mysql mysql 4096 дек 1 13:34 ecss_dialer_db drwxr-xr-x 2 mysql mysql 4096 дек 1 13:34 ecss_meeting_db drwxr-xr-x 2 mysql mysql 4096 дек 1 13:34 ecss_numbers_db drwxr-xr-x 2 mysql mysql 4096 дек 1 13:34 ecss_statistics drwxr-xr-x 2 mysql mysql 4096 дек 1 13:34 ecss_subscribers drwxr-xr-x 2 mysql mysql 4096 дек 1 13:34 ecss_system drwxr-xr-x 2 mysql mysql 4096 дек 1 13:34 history_db drwxr-xr-x 2 mysql mysql 4096 дек 1 13:34 web_conf
Проверяем, что сервер запущен:
на обоих хостах
systemctl status mysql.service
systemctl status mysql.service
● 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 Tue 2025-01-21 15:51:04 +07; 4min 8s ago
Main PID: 10471 (mysqld)
Status: "Server is operational"
Tasks: 39 (limit: 4564)
Memory: 415.5M
CPU: 4.471s
CGroup: /system.slice/mysql.service
└─10471 /usr/sbin/mysqld
янв 21 15:51:03 ecss1 systemd[1]: Starting MySQL Community Server...
янв 21 15:51:04 ecss1 systemd[1]: Started MySQL Community Server.
Попробуйте войти в базу данных MySQL под логином (<LOGIN>), с паролем (<PASSWORD>), указанным при установке (root/root):
на обоих хостах
sudo mysql -uroot -ppassword
В случае корректной установки откроется CLI MySQL-сервера.
Можно сразу посмотреть список созданных БД:
mysql>
SHOW DATABASES;
Результат:
SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | ecss_address_book | | ecss_audit | | ecss_calls_db | | ecss_dialer_db | | ecss_meeting_db | | ecss_numbers_db | | ecss_statistics | | ecss_subscribers | | ecss_system | | history_db | | mysql | | performance_schema | | sys | | web_conf | +--------------------+
Чтобы выйти из CLI MySQL, выполните команду "exit".
В целях безопасности логин root разрешено использовать только для входа с локального хоста.
Далее следует организовать доступ между серверами с ecss-mysql через ssh по rsa-ключам - без использования пароля.
Генерируем rsa-ключ следующий командой (выполняем команду без sudo, чтобы ключ сгенерировался для текущего пользователя), при выполнении команды будут заданы три вопроса, можно использовать значение по умолчанию, нажав три раза Enter:
на обоих хостах
ssh-keygen
на ecss1
ssh-copy-id ecss2
Таким же образом на хосте ecss2.
на ecss2
ssh-copy-id ecss1
проврете подключение между серверами, со стороны сервера ecss1 - ssh ecss2 соединение должно быть установлено без запроса пароля . Аналогичным образом со стороны сервера ecss2 - ssh ecss1
ssh ecss2 ssh ecss1
Запустите скрипт репликации БД mysql на ecss1:
на ecss1
sudo /usr/lib/ecss/ecss-scripts/mysql-replication/install_replication.sh
Перед выполнением скрипта необходимо определить некоторые параметры. Пример ответа на вопросы для разных хостов приведен ниже. Следует обратить внимание, что пароль password— это тот же пароль, который задавался выше. Виртуальный адрес mysql задаем вручную. Причина приведена в разделе "Настройка виртуального адреса для MySQL".
| Вопросы install_replication. | Ответы для ecss1 |
|---|---|
| Логин для доступа к БД | root (значение по умолчанию) |
| Пароль для доступа к БД | password (необходимо ввести) |
| Логин для пользователя репликации | replica (значение по умолчанию) |
| Пароль для пользователя репликации | replica (необходимо ввести) |
| Адресная маска для репликации (ENTER REPLICA HOST WILDCARD) | 10.0.10.% (значение по умолчанию) |
| Адрес локального хоста | 10.0.10.11 (необходимо ввести) |
| Адрес удаленного хоста | 10.0.10.12 (необходимо ввести) |
| Имя пользователя на удаленном хосте | support (значение по умолчанию , имя вашего пользователя) |
| Mediator IP | 127.0.0.1 (значение по умолчанию) |
| Порт SNMP (default: 162) | 162 (значение по умолчанию) |
| DO YOU WANT TO SET MASTER (VIRTUAL) IP address? | нет (значение по умолчанию) |
| Какой хост будет MASTER? (default: localhost): | localhost (значение по умолчанию) |
Выберите для подтверждения конфигурации - c - продолжить
Выберите для подтверждения продолжения процедуры yes
далее вам потребуется несколько раз ввести пароль вашего пользователя для подтверждение репликации базы данных на втором сервере ecss2
После работы скрипта можно проверить, что в MySQL создан пользователь replica@10.0.10.% на обоих хостах:
на обоих хостах
sudo mysql -uroot -ppassword
на обоих хостах
SELECT user,host FROM mysql.user;
Среди всех пользователей можно увидеть такую запись:
+------------------+---------------+ |
Проверьте состояние реплики на обоих хостах (пароль - password ):
на обоих хостах
sudo mysql -uroot -p -e 'show slave status \G;' | grep -E "Slave_IO_Running:|Slave_SQL_Running:"
sudo mysql -uroot -p -e 'show slave status \G;' | grep -E "Slave_IO_Running:|Slave_SQL_Running:" Enter password: Slave_IO_Running: Yes Slave_SQL_Running: Yes
Редактирование keepalived.conf
Следующий шаг — редактирование глобального конфигурационного файла keepalived.conf. На обоих хостах содержимое файла одинаковое:
на обоих хостах
sudo nano /etc/keepalived/keepalived.conf
скопируйте и вставьте следующий текст в файл /etc/keepalived/keepalived.conf
global_defs {
vrrp_version 3 # версия протокола VRRP (2 или 3)
script_user nobody # ограниченный в правах системный пользователь, от которого будут запускаться скрипты проверки доступности
enable_script_security # не запускать скрипты от root, если часть пути к ним доступна на запись для обычных пользователей
}
include /etc/keepalived/sip.conf
include /etc/keepalived/mysql.conf
Поскольку при создании репликации не была задействована автоматическая генерация конфигурации для mysql, то в конфигурационном файле необходимо сделать ссылку на mysql.conf: include /etc/keepalived/mysql.conf
Далее на обоих хостах создаются файлы /etc/keepalived/mysql.conf
на обоих хостах
sudo nano /etc/keepalived/mysql.conf
со следующим содержимым (каждый хост имеет индивидуальную информацию в этом файле)
скопируйте и вставьте следующий текст в файл /etc/keepalived/mysql.conf ( в примере использованы IP адреса 10.0.10.11 , 10.0.10.12 , 10.0.10.10)
Создание VRRP для MySQL
| /etc/keepalived/mysql.conf для ecss1 | /etc/keepalived/mysql.conf для ecss2 |
|---|---|
на ecss1
YML
| на ecss2
YML
|
В данной конфигурации мы задаем ID для виртуального маршрутизатора, который будет являться балансером для своего хоста. Важно, чтобы virtual_router_id совпадали у обоих хостов.
После конфигурации необходимо перезапустить сервис keepalived на обоих хостах:
на обоих хостах
sudo systemctl restart keepalived.service
проверьте наличие интерфейса и ip-адреса после рестарта сервиса командой ifconfig, на хосте ecss1 вы должны увидеть :
abf@ecss1:~$ ifconfig
. . .
net.10:mysql: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.10.10 netmask 255.255.255.0 broadcast 0.0.0.0
ether 08:00:27:6d:4f:02 txqueuelen 1000 (Ethernet)
Установка ecss-node
Установка обязательного пакета ecss-node включает в себя установку и первоначальную настройку основных подсистем.
В системе уже должен быть установлен пакет ecss-mysql
Для установки пакета ecss-node выполните команду:
первоначально на ecss1 по окончанию установки пакета на ecss2
sudo apt install ecss-node
Во время установки пакета создается пользователь ssw, от имени которого запускаются все сервисы ecss*. Создаются необходимые каталоги, выполняется настройка DNS, идет настройка SSL-сертификатов.
Настройка сертификатов
Скопировать с другого сервера ecss10 (ecss1) можно при условии: пользователь (с которым вы работаете) должен быть добавлен в группу ssw. Для этого, на первом ноде (с которого будете копировать сертификат (ecss1)) выполните команду sudo usermod -a -G ssw <Имя_пользователя> (для примера sudo usermod -a -G ssw support)
При установке будут заданы вопросы по сертификатам.
Способы конфигурирования сертификатов:
Ручной (manual)
При выборе ручного способа конфигурации сертификатов откроется окно с информацией о том, что установка может быть продолжена после помещения файлов ecss10.{pem,crt,key} в /etc/ecss/ssl. Также данное окно может открыться по достижении конца установки. Поместите необходимые файлы в требуемую директорию и начните процесс установки заново (перезапустите установку). Если все действия были выполнены верно — установка завершится, и можно будет продолжить установку системы.
Сгенерировать самоподписанный сертификат (generate)
При выборе данного способа будут сгенерированы следующие вопросы:
Страна (RU)
Область (Novosibirsk)
Город (Novosibirsk)
Организация (ELTEX)
Структурный узел (IMS)
Имя сертификата (ecss10)
Почта (ssw-team@eltex.loc)
Количество дней жизни сертификата
Пароль для корневого приватного ключа
Алгоритм шифрования для ключа
Сложность ключа
Сложность для параметров Диффи-Хеллмана
Дополнительные имена, за которые отвечает сертификат (на примере офиса — это ssw1.eltex.loc, ssw2.eltex.loc, ssw.eltex.loc), перечисленные через пробел (для последнего уровня можно wildcard)
Чем выше сложность ключа, тем дольше будет установка (dhparam при сложности 8192 на машине средней производительности занимает около часа). При отсутствии особых требований к безопасности можно оставить значение по умолчанию. После чего отобразится уведомление, что необходимо убрать приватный корневой ключ в безопасное место.
В систему установится ecss10root.crt (при копировании также пытается скачать ecss10root.crt, либо если при ручной установке был помещён данный файл). Если уже имеются сертификаты, то никаких действий не будет произведено. В конце также проверяется валидность сертификата.
Чтобы сгенерировать новый сертификат, необходимо удалить ecss10.{pem,crt,key} и ecss10root.{crt,key} (из директории "/etc/ecss/ssl/" ), после чего сделать dpkg-reconfigure ecss-user.
Скопировать существующие сертификаты (copy) по ssh
Скопировать с другого сервера ecss10 (ecss1) (предварительное условие: пользователь должен быть добавлен в группу ssw.
На сервере ecss1 выполните команду sudo usermod -a -G ssw <Имя_пользователя> для примера sudo usermod -a -G ssw support)
При выборе данного способа будут сгенерированы следующие вопросы:
| Вопросы ecss-node | Ответы для ecss2 |
|---|---|
| Вы хотите установить сертификаты в систему? | Yes (необходимо выбрать) |
| Каким методом вы хотите скопировать сертификаты? | ssh (необходимо выбрать) |
| Введите имя хоста для подключения: | ecss1 (необходимо ввести) |
| Введите порт хоста для подключения: | 22 (необходимо выбрать) |
| Введите логин для подключения: | support (необходимо ввести в примере "support") |
| ВНИМАНИЕ! Перед копированием убедитесь, что пользователь от которого будет осуществляться копирование состоит в группе ssw. | подтвердить "Ок" (подтверждение , что вы выполнили команду sudo usermod -a -G ssw <Имя_пользователя> на первом хосте ecss1) |
| Какой метод авторизации использовать? | password (необходимо выбрать) |
| Введите пароль для подключения: | пароль (необходимо ввести) |
| Введите путь до сертификатов: | /etc/ecss/ssl (необходимо выбрать) |
Во время установки будет предложено настроить некоторые параметры , с помощью вопросов , примеры ответов следует ниже, необходимые для формирования конфигурационных файлов.
Подробнее о настройке NTP в разделе "Синхронизация времени на серверах".
В случае выноса компонентов системы на разные серверы/ВМ (ecss-node/ecss-mysql/ecss-msr) необходимо на вопрос "NTP: укажите локальные серверы для синхронизации через пробел: (NTP: Indicate local servers for synchronization separated a space:)" указывать IP адреса всех серверов/ВМ (за исключением текущего) через пробел.
| Вопросы ecss-node | Ответы для ecss1 | Ответы для ecss2 |
|---|---|---|
| Использовать настройки по умолчанию для БД (Set DB config to default ?) | Yes (значение по умолчанию) | Yes (значение по умолчанию) |
| Взводить аварию ECSS-10 при заполнении раздела MySQL (Set alarm true when MYSQL DB overloads) | Yes (необходимо выбрать) | Yes (необходимо выбрать) |
| Внешние NTP-серверы через пробел: (External NTP servers through a space) | (default: ntp.ubuntu.com) | (default: ntp.ubuntu.com) |
| NTP: Вы хотите использовать настройки для кластера? (NTP: Do you want use settings for cluster ?) | Yes (необходимо выбрать) | Yes (необходимо выбрать) |
| NTP: Установка Startum для кластера (NTP: Set stratum for cluster) | 7 (значение по умолчанию) | 7 (значение по умолчанию) |
| NTP: укажите локальные серверы для синхронизации через пробел: (NTP: Indicate local servers for synchronization separated a space:) | 10.0.10.12 (необходимо ввести) | 10.0.10.11 (необходимо ввести) |
| NTP: Вы хотите определить сети вручную, у которых должен быть доступ до ntp? (NTP: Do you want to define manually which networks should have access to ntp?) | Yes (необходимо выбрать) | Yes (необходимо выбрать) |
NTP: Сети, у которых должен быть доступ до ntp через пробел: Формат: <сетевой адрес>|маска (x.x.x.x|255.255.255.0) | 10.0.10.0|255.255.255.0 (необходимо ввести) | 10.0.10.0|255.255.255.0 (необходимо ввести) |
| Установить утилиту ecss-copycdr ? | No (значение по умолчанию) | No (значение по умолчанию) |
После установки пакета ecss-node на хосте ecss1, выполните команду "sudo usermod -a -G ssw <Имя_пользователя>" на хосте ecss1.
Затем выполите установку на хосте ecss2.
Используйте режим "Скопировать существующие сертификаты (copy) по ssh" с сервера ecss1
DNS
В ходе установки пакета ecss-node выполняется конфигурирование внутренних DNS-адресов. При установке, в зависимости от текущей конфигурации системы, может отобразиться сообщение:
See "systemctl status dnsmasq.service" and "journalctl -xe" for details. invoke-rc.d: initscript dnsmasq, action "start" failed. ● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
Такой вывод в ходе установки является нормальным и не свидетельствует о проблемах. Главное, чтобы после окончания установки ecss-node dnsmasq.service был активен.
Пример:
sasha@ecss1:~$ systemctl status dnsmasq.service
● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2021-09-24 20:52:03 +07; 2 weeks 3 days ago
Main PID: 10914 (dnsmasq)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/dnsmasq.service
└─10914 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,19036,8,2,49aac11d7b6f6446702e54a1607371607a1a41
Sep 24 20:52:03 ecss1 systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server...
Sep 24 20:52:03 ecss1 dnsmasq[10890]: dnsmasq: syntax check OK.
Sep 24 20:52:03 ecss1 systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.
Проверить статус сервисов следующей командой:
на обоих хостах
systemctl is-active ecss-core ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium
В случае статуса "active" продолжаем дальше, в случае статуса "inactive" выполнить команду "sudo systemctl restart ecss-<имя пакета>"
systemctl is-active ecss-core ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium active active active active active
Для просмотра информации о состоянии синхронизации c NTP, используется команда ntpq –p . Если использовать дополнительный ключ –n, вместо имени сервера будет указан IP-адрес:
ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
+ecss2 185.125.190.56 3 s 109 128 376 0.279 -0.360 0.069
*185.125.190.58 201.68.88.106 2 u 71 256 377 86.251 +0.681 1.400
ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
+ecss1 185.125.190.58 3 s 258 256 376 0.279 +0.614 0.164
*185.125.190.56 17.253.28.253 2 u 72 256 377 90.001 -0.255 0.207
Установка паспорта и лицензий
Под паспортом системы ECSS-10 понимается связь определенной инсталляции (SSW_ID) с USB-ключом. Паспорт гарантирует, что заказчик не сможет запустить больше подсистем DS с заданным SSW_ID, чем количество USB-ключей. Система без паспорта не работает.
Лицензионный ключ содержит в себе информацию о лицензионных ограничениях. Информация привязана к определенному SSW_ID. Позволяет добавлять лицензионные ограничения к определенной инсталляции системы ECSS-10. Если не добавлено ни одной лицензии, то действуют ограничения по умолчанию. Например, по умолчанию разрешено не более двух одновременных вызовов. Добавляя лицензию, можно расширить это количество до произвольных значений.
<licence> — последовательность цифр, букв и других символов без кавычек, следующая за строкой Licence: в файле лицензии.
<passport> — последовательность цифр, букв и других символов без кавычек, следующая за строкой Passport: в файле лицензии.
Если данные лицензии и паспорта будут введены корректно, то система выдаст подтверждение: ОК.
ВАЖНО
Перед началом работы проверьте наличие Token в системе.
Для проверки работы токена можно использовать приложение pkcs11-tool. Возможно проверить следующее:
Вывести общую информацию для ключа:
- для eToken:
pkcs11-tool --module /usr/lib/libeToken.so -I Cryptoki version 2.1 Manufacturer SafeNet, Inc. Library eToken PKCS#11 (ver 8.1) Using slot 0 with a present token (0x0)
- для Рутокен:
pkcs11-tool --module /usr/lib/ecss/ecss-ds/lib/lpm_storage-<VERSION>/priv/x64/librtpkcs11ecp.so -I Cryptoki version 2.20 Manufacturer Aktiv Co. Library Rutoken ECP PKCS #11 library (ver 1.5) Using slot 0 with a present token (0x0)
Расположение модуля для Рутокен может отличаться в зависимости от версии подсистемы DS. В общем случае файл располагается в /usr/lib/ecss/ecss-ds/lib/lpm_storage-<ВЕРСИЯ ПОДСИСТЕМЫ>/priv/x64/librtpkcs11ecp.so
Для проверки можно использовать общую команду pkcs11-tool --module $(find /usr/lib/ecss/ecss-ds/lib/ -name librtpkcs11ecp.so | head -n1) -L
Остановите пакеты ecss-mycelium и ecss-ds на втором хосте. Если этого не сделать, то паспорт и лицензия могут быть не добавлены с первого раза.
на ecss2
sudo systemctl stop ecss-mycelium
на ecss2
sudo systemctl stop ecss-ds
Перейдите в CLI - CoCon:
на ecss1 пароль - password
ssh admin@localhost -p 8023
ssh admin@localhost -p 8023 The authenticity of host '[localhost]:8023 ([127.0.0.1]:8023)' can't be established. RSA key fingerprint is SHA256:/reVfo2jbltLDwNpZbiLvibXBwaWJbfSChd1M7wm1nc. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '[localhost]:8023' (RSA) to the list of known hosts. admin@localhost's password: password
Проверьте состояние системы:
/system-status Checking... ┌─┬───────────────┬───────────────────────────┬───────────────┬────────────┬───────┐ │ │ Node │ Release │ Erlang nodes │Mnesia nodes│Uptime │ ├─┼───────────────┼───────────────────────────┼───────────────┼────────────┼───────┤ │ │ds1@ecss1 │ecss-ds-3.14.16.0.408 │ds1@ecss1 │ds1@ecss1 │27m 28s│ │ │mycelium1@ecss1│ecss-mycelium-3.14.16.0.408│mycelium1@ecss1│not running │27m 29s│ └─┴───────────────┴───────────────────────────┴───────────────┴────────────┴───────┘
Чтобы узлы системы смогли встать в работу, надо сконфигурировать систему указав имена хостов на которых развёрнуты ecss-сервисы.
Команда в коконе: /system/clusters/set [<host1>, <host2>, ... <hostN>].
В примере кластера из 2-х хостов (имя хоста ecss1 и ecss2) выполнить команду :
выполняется в CoCon
/system/clusters/set [ecss1, ecss2]
Выйти из CoCon ("exit"),
Перезапустить ecss сервисы командой:
на ecss1
sudo systemctl restart ecss-*
Далее необходимо загрузить паспорт и лицензии в систему:
выполняется в CoCon
/cluster/storage/ds1/licence/set-passport <ssw passport>
/cluster/storage/ds1/licence/set-passport bc3ae6e95822c6896446fb0055fcbd08f16a166f63b47f559ab699325d994f3f90085b88e5073fbc73d3ca6fa45b816b01994f168239bf6e57fbfe5d111dbebc4c494f9fff238e0969ca00b0d13f06c2a70f0e3ff24bb14af8e56d2f4d2b5232dfe24ebefda92013a2b7c1f257a07727d5783c80a55bc4ac4b3876bb5edb134e-433ed1b19a8eff234c325041b58a80131828d586e0624653731216f9aae6eaa2e15b15f71695cd9181c3820fbd261c084bed2c6b303a707ee2bcf45efd33ff4cc1f233bc1fe6ac24ba79b40dc8f99470f2493aba14976def7ceea8c4d83419afabf3b4a526fdc7d148c2cec589355745f32044cff15c6f1b7fdda9488c58fb8a-89c215aed50cfb8e911231887612ada29d5e22b0e7ab536341f76468d88203b1e26bec42db067470f7c7b34fb5b5dfa600abe453059485d80bef4fe722c0857512fe44a9b71544c97e6a3d16557cb7ab498cd17cc9e708da73d2d3346db14bbe190d99b3bd8dc84f39f87af23ad5f99936d1da9c034a0586bb84d142f015494c[set-passport] You are trying to set ECSS-10 passport with SSW ID ECSS 010070 (created in 2024/12/27 07:07:09), but passport SSW ID is ECSS-3.16-TEST-3 (created in 2023/08/24 09:51:40) already has been set. All non-compliant licenses will be removed.Are you sure?: [yes]/no ?> yesOK
выполняется в CoCon
/cluster/storage/ds1/licence/add <ssw licence>
/cluster/storage/ds1/licence/add 27624a5bc87894b9а9053cbac8389d6bb46851148b3c3032689d628afcdd30f58db83bb802f99dc086bca081bf34841501ad64bb0e6b882e7f80d891e06c2173cba1545e801757d61b36cacbb72d68e8bdda91a2ad8625d67db4869a1b24fb351f45bb031f31d6aeb10d18808bf3e1f0891d2d3afb9525f5f276584282d1342e-8e158cb7300179aaa9e3e8b5e781e20eb2b061f083b0680cbdd80e72761f78ab8f0731f13f44f7aff6412f2a1261ddb6bdfb1384dd3a72945f7b30e79441941a1ce5d8095cd498dd6e90134ec1d464c4f11ea351c2d7e24e3042d2b30b3014665a96fc03678ff70b6d775c1f78320f16a170f818538565585fbe306f36a5eab2-f60d370d8599a7c718aca542dc9354c5d1ee8f2d87d6305d56bf305a57ac54ed13891ca0a738ceaeff9а4979d2651249c37a1724fb6725ce9c72006502b4779f534e120689bc60e9e16d22340095ca28df5906а78d0ca27143f1fda6a91e076f440646c4b93b4a0afa5018787ef7b056829b77e0f01a43e1d03deb9c40e8eda5-f7fed4a0ab3dbb5b16eff497afe3da98f2280f56182a0aa2f2ec72f58426f5a2b1db707773f0969e59bf678120847c380530fffc831d8228aed28f1f8487e3a3fb30737c03b89b32d80577e86d055bb0a9acb72685ac97651af1921648f6e40ad913c29902350c8212f15c9fda84882cac607b84024b1f3eb9111f95f4d348b8-643c93fe669eddfc2713df2dbba5eb36c3cf2321a76cf3560856f28b7130892c08da34a2c5bd9d3ea3e6c7445f175d6e41256d226993418660c2693cdd9d845ba95d12ba4f87febce23b55bcd6d75592dd4971186b956f0651717e5c32e31a8846fd313e551a62af9ee39a0c1168feceb9aec18d6923ac8d430e7fa885434578-f425f70b540a21c28d62ecc6e50182ed398b178fb86a86eb2682182c89a8aa15bd95ffd0fbаc73302bcd55238ba752b0073a841c7ff7e5d22fa966677921cb58429ed05efd7b2fefdf53fdb9a6314ef704b43e912806d825ed73eed78b96e2d500a47f0b3e67b95e0276076f7eda020f3427a98449a259d9a628e85cf2725c48-8e051d2ec4959506bb1a90ab2573e1f5d892a26a3525064c7cf754c0bf5ed8f30b890f74f05c6093c34c441cb72650a5c529273b9ca5a19cd1ba530556cd3bf422cec7a93947c3a5207874f034bf388d57a69b9eeaf7e07a489e007d7cc2dd24e349d1f32c41c25b4557b8c041598db632282ab056f7f826cf62a7fb3bdada4f-bd7e2ffe8fbfc3e8fd2b0d3c6ce4961b5d59874bce6783e164c224758d1bc2a459fd5d19719555b2b557111d7aaea5cfdf52fd0b3f473b418cd292f3dc66fd0bec185ad39d1cd2f42dd3а446723ad4a658b2fc6f922290b66a81d9e412ec7372e6920dccbc14a1b8eb1b283edf5de9f99aa86e3502c89257a1eac02f60e09613-627e19ee9a821f7288bd49afe97e9db33b58f7d65dad52d75790664acf59fce89d4e7cf3d242219df02e4f7499bd9ab98620801d294b4818287838ac4ee48440dd2aeb0a11b34baf2def46e42b6cd846e03c4a208b2463328174ae3f7efe5570bab9895fa7aa1eb024d98535da2612aa62dd39a208f7240a6c7d2acb748543be-a6baca7aabe885125b494d736d16b99bf4c89f4b309ca07f188bfc483473e1a0e7d3d6890ef9df921e09270fe107fdfа7ed8fd043ebc5d5ab32ffb9b7994897f4b019fd68c5191d2ba9bce9ac43384abe5325e502c6bdfe57ae13abb9e9b2527b533375330ae981a02b19103e00c24f30deb4f0baf406316adf047e6cbeb4647-397dcaa7d2aef37f17e9аf0d92f1e10f3f90f0bff22082b806039b78286b4f9b13528a1efb32c3e4c79c033cb8b24ef038863d2f5e1adba2885a3dbaee431edc3d0dc7529f0fc0a0e87492a90b95a1e29070e01e43404bfcb2cf7a5100cdaacb1325f5a67f282fc7a8937b1c402111717f2a18d241e38da22e8516e5fd8ef24d-717730cc35c98ee6f397b59b69b67a708b6cd49c88cf0c24af00d55d85461e01455f647588893bb14f529f0ebd761a47b14df2234d28efe00c941b9ebа9f403d0988867be7c8c18b3682dd7d29534bbаf11413aa1fdc9472484e6a56125ae4c046a4e5375cefe309efd987a40b20843a67ebea91d141df8b854acd6e21c2ee87-4fc79e679e9e59ded4c8b65c48f84fc2a653ca306b3052866b27d3ee1c10467aab6aab20a053f18bf594a9824efa03f076f821b0c2fe69f0dfaf7bdead745351082ad28383451a40c7fcf67b93f55e7d966a979444147388d105f70bfb7d837a7ee3d58a15d52c71e73c48278db4086b8b52c0ddb7915de27ad21bb17f9493b1-cf76879572a2112483c29de9436e9c12ceff6171e104cf23658а65ba4ebc6c94790f5039453cbdc6cff3b205870d13d483918c884992542dа86a584469ba7ace7da91b883c54ecb3f36aca0847d5915fdd518539aadc48e5d9c30e2be4ba3b020689c72500f4b0c05380a7a59fe27827e472cf3f4e94d9be13e2fd0bfaf22475-5b05e03a53b6587009e61f238ead152b8d04ac996ca7b736dca10d389f95b5f219d78035b3302ce542bace36c599c7de7bc6c3c6de112da4861d097c5acd3b7b6b7bf318a6bacf4d395dbbbf84b65a85fd41f06a18488835e9a5edcf5664c23d02a15647d1b9a2466b01c6a5a8d39888dee5de3ea1929607191f93eb0221c697┌─┬───────────────────────────────────────────────┬──────────────────┬────────────────────────────┐│A│ Description │ Old Value │ New Value │├─┼───────────────────────────────────────────────┼──────────────────┼────────────────────────────┤│^│Support for reservation of call-processes │false │true ││^│Maximum call duration (in seconds) │3600 │2678400 ││^│Maximum number of simultaneous calls │500000 │10000 ││^│Subscribers limit │6000000 │500000 ││^│Virtual subscribers limit │1000000 │1000 ││^│Add-on conferences │ │ ││^│ total count │50 │1000 ││^│Add-on conferences │ │ ││^│ members of the one add-on conference │50 │300 ││^│Chat rooms │ │ ││^│ total count │50 │100 ││^│Chat rooms │ │ ││^│ members of the one chatroom │50 │300 ││^│Meet Me │ │ ││^│ total count │50 │100 ││^│Meet Me │ │ ││^│ members of the one Meet Me conference │50 │300 ││^│SORM │ │ ││^│ enabled │false │true ││+│ channels on SORM mediator │ │64 ││^│Sorm extractor │none │mfi ││^│Support antifraud system │none │custom ││^│Call center │ │ ││^│ active supervisors │1000 │100 ││^│Teleconference │ │ ││^│ channels │5000 │2000 ││^│Teleconference │ │ ││^│ max members of one teleconference │100 │200 ││^│Teleconference │ │ ││^│ active count │50 │32 ││^│TSMN system │ │ ││^│ concurrent calls (backup) │0 │50 ││^│Total count of simultaneous records voice calls│100000 │200 ││^│Channels on dialer outgoing calls │100 │5 ││^│Supplementary Services licence package(s) │ │ ││^│ name │'ECSS-FULL+' │'ECSS-ADV' ││^│ limit │600000 │10000 ││^│ description │"Весь пакет услуг"│"Дополнительные услуги" ││^│ SS list │[1,2,3,4,5] │[4] ││^│ name │ │'ECSS-ADV+' ││^│ limit │ │10000 ││^│ description │ │"Дополнительные услуги" ││^│ SS list │ │[5] ││^│ name │ │'ECSS-BAS' ││^│ limit │ │10000 ││^│ description │ │"Базовые услуги (РД 45)" ││^│ SS list │ │[2] ││^│ name │ │'ECSS-BAS+' ││^│ limit │ │10000 ││^│ description │ │"Расширение базовых услуг" ││^│ SS list │ │[3] ││^│ name │ │'ECSS-FULL+' ││^│ limit │ │50000 ││^│ description │ │"Дополнительные услуги" ││^│ SS list │ │[1,2,3,4,5] ││^│ name │ │'ECSS-GEN' ││^│ limit │ │10000 ││^│ description │ │"Стандартные услуги (РД 45)"││^│ SS list │ │[1] │└─┴───────────────────────────────────────────────┴──────────────────┴────────────────────────────┘Legend: '^' - Changed; '-' - Deleted; '+' - New.
[add] You are trying to add a license that is different from the current one by the pa rameters in the table (other values will remain unchanged).Are you sure?: [yes]/no ?> yesok
Выйдите из CoCon ("exit")
И перезапустите сервисы ecss-ds и ecss-mycelium на первом и запустите остальные сервисы втором хосте:
на ecss1
sudo systemctl restart ecss-mycelium
на ecss1
sudo systemctl restart ecss-ds
на ecss1
sudo systemctl start ecss-core ecss-pa-sip ecss-mediator
на ecss2
sudo systemctl start ecss-mycelium ecss-ds ecss-core ecss-pa-sip ecss-mediator
Выполнить проверку лицензий, для этого зайти в CoCon :
на ecss1 пароль - password
ssh admin@localhost -p8023
Проверить наличие лицензией:
выполняется в CoCon
/cluster/storage/ds1/licence/list-licence
Видим активную лицензию №1 (не ECSS DEFAULT)
/cluster/storage/ds1/licence/list-licence ┌──┬───────────────────┬────────────────┬──────┬────────────────────────────────────────────┬────────────────────┬────────────┐ │Id│Creation date(UTC) │ SSW ID │Active│ Description │Expiration date(UTC)│ Time left │ ├──┼───────────────────┼────────────────┼──────┼────────────────────────────────────────────┼────────────────────┼────────────┤ │1 │31.10.2024 14:16:00│ECSS 010070 │* │Eltex SC softswitch │31.12.2025 23:59:59 │112d 21h 31m│ │0 │ │ECSS DEFAULT │ │Default licence │ │ │ └──┴───────────────────┴────────────────┴──────┴────────────────────────────────────────────┴────────────────────┴────────────┘
в случае если получили такую ошибку :

проверить имя хоста, командой cat /etc/hostname
в случае имени хоста отличного от ecss1 заменить на ecss1, выполнив команду sudo nano /etc/hostname
Выйдите из CoCon ("exit").
Так же требуется выполнить конфигурацию для Sip адаптера , выполнив следующую команду:
на обоих хостах
sudo systemctl edit ecss-pa-sip.service
Добавить в конфигурационный файл следующие данные:
[Service] LimitNOFILE=65536
Вставить эти две строчки необходимо в определенное место, (начиная с Ubuntu 22.04.2 есть несколько важных моментов. Файл, который открывается, полностью закомментирован, но первые несколько строк выглядят так (см рисунок ниже). Любые вносимые вами правки должны быть между этими двумя блоками комментариев.)

Перезагрузите конфигурацию
на обоих хостах
sudo systemctl daemon-reload
Актуализировать конфигурационный файл, выполнив перезагрузку сервера:
на обоих хостах
sudo systemctl restart ecss-mycelium ecss-ds ecss-core ecss-pa-sip ecss-mediator
Установка остальных пакетов ecss и их настройка
Для корректной работы кластерной конфигурации необходимо настроить работу RestFS на базе GlusterFS-сервера.
Установка имени кластера mycelium.config
Для работы системы нужно на обоих серверах указать одинаковое имя кластера (для примера test_cluster ). Для этого откройте файл mycelium1.config в текстовом редакторе:
на обоих хостах
sudo nano /etc/ecss/ecss-mycelium/mycelium1.config
Выполните настройку на обоих хостах, заменив дефолтное имя кластера "undefined" , на указанное в проекте , для примера "test_cluster".
| Настройка имени кластера (/etc/ecss/ecss-mycelium/mycelium1.config) |
|---|
%%% -*- mode:erlang -*- .... |
Далее следует проверить в файле /etc/dnsmasq.d/ecss-broker, что адреса primary и secondary broker соответствуют указанным при инсталляции пакета ecss-node.
на обоих хостах
cat /etc/dnsmasq.d/ecss-broker
Пример содержания файла на ecss1 и ecss2 (содержимое файлов должно быть одинаковым на обоих серверах):
address=/primary.broker.ecss/10.0.10.11 address=/secondary.broker.ecss/10.0.10.12
glusterfs
Выполните настройку glusterfs для ecss-restfs на первом хосте (ecss1),
для этого установите пакеты glusterfs-server и attr на обоих хостах:
на обоих хостах
sudo apt install glusterfs-server attr
Запустите glasterd на обоих хостах кластера:
на обоих хостах
sudo systemctl start glusterd
После запуска выполните создание связи с удаленным виртуальным хостом, выполните команду на ecss1:
на ecss1
sudo gluster peer probe 10.0.10.12
Проверьте наличие созданной связи, выполните команду на ecss2:
на ecss2
sudo gluster peer status
Должна появиться информация о первом хосте — ecss1:
Number of Peers: 1 Hostname: ecss1 Uuid: d7319720-ea3a-43a4-a7d5-e97bf9d205b9 State: Peer in Cluster (Connected)
Выполните аналогичную проверку на другом хосте — ecss1. Вы также должны увидеть информацию о партнере ecss2 (или его IP-адрес).
Создайте кластер для репликации, запустите репликацию и посмотрите ее статус, выполните следующие команды на ecss1:
на ecss1
sudo gluster volume create ecss_volume replica 2 transport tcp 10.0.10.11:/var/lib/ecss/glusterfs 10.0.10.12:/var/lib/ecss/glusterfs force
На ecss1:
на ecss1
sudo gluster volume start ecss_volume
На обоих хостах ecss1 и ecss2:
на обоих хостах
sudo gluster volume info
Таким образом, статус репликации будет выглядеть следующим образом, необходимо обратить внимание на поля "Status" и "Bricks" — они должны иметь следующий вид:
Volume Name: ecss_volume Type: Replicate Volume ID: 3bfc7587-0f85-48ed-9612-21f0d79c6e52 Status: Started Snapshot Count: 0 Number of Bricks: 1 x 2 = 2 Transport-type: tcp Bricks: Brick1: 10.0.10.11:/var/lib/ecss/glusterfs Brick2: 10.0.10.12:/var/lib/ecss/glusterfs Options Reconfigured: transport.address-family: inet nfs.disable: on performance.client-io-threads: off
Чтобы смонтировать glusterfs раздел, выполните на обоих хостах ecss1 и ecss2 следующие действия:
- Создайте новый systemd unit
на обоих хостах
sudo nano /etc/systemd/system/ecss-glusterfs-mount.service
- Добавьте в него следующую конфигурацию:
[Unit]
Description=mount glusterfs
After=network.target
Requires=network.target
[Service]
RemainAfterExit=no
Type=forking
RestartSec=10s
Restart=always
ExecStart=/sbin/mount.glusterfs localhost:/ecss_volume /var/lib/ecss/restfs -o fetch-attempts=10
ExecStop=/bin/umount /var/lib/ecss/restfs
[Install]
WantedBy=multi-user.target
- Добавить unit в автозагрузку на обоих хостах.
на обоих хостах
sudo systemctl enable glusterd.service
на обоих хостах
sudo systemctl enable ecss-glusterfs-mount.service
- Создайте директорию для корректной установки RestFS на обоих хостах:
на обоих хостах
sudo mkdir /var/lib/ecss/restfs
Выполнить следующие команды на обоих хостах:
на обоих хостах
sudo systemctl daemon-reload
на обоих хостах
sudo systemctl restart ecss-glusterfs-mount.service
Проверьте, что раздел подмонтировался, для этого на обоих хостах выполните команду - df -h:
df -h
/dev/sda10 19G 6,5G 11G 38% /var/lib/mysql/dev/sda8 4,5G 213M 4,1G 5% /var/log/dev/sda5 37G 48M 35G 1% /var/lib/ecss/ecss-media-server/records/dev/sda6 19G 44M 18G 1% /var/lib/ecss/cdr/dev/sda7 19G 44M 18G 1% /var/lib/ecss/statistics/dev/sda9 19G 7,6G 9,7G 44% /var/log/ecsslocalhost:/ecss_volume 46G 59M 44G 1% /var/lib/ecss/restfs
При просмотре информации должен появиться подмонтированный раздел —
localhost:/ecss_volume 46G 59M 44G 1% /var/lib/ecss/restfs
Далее на обоих хостах выполните установку всех необходимых пакетов (подробнее по установке необходимых и дополнительных пакетов в разделе "Инсталляция пакетов ECSS"):
Установка пакета ecss-restfs и его настройка
на обоих хостах
sudo apt install ecss-restfs
Установка ecss-restfs. В ходе установки нужно будет ответить на ряд вопросов для создания необходимых конфигурационных файлов. Также инсталлятор предложит установить и настроить пакет Text2speech от Yandex.
| Вопросы ecss-restfs | Ответы для ecss1 | Ответы для ecss2 |
|---|---|---|
| Хотите ли вы использование функции Text To Speeh (Use TTS service) | No (значение по умолчанию) | No (значение по умолчанию) |
| Хотите настроить сервис телефонной книги (Configure phone book) | No (значение по умолчанию) | No (значение по умолчанию) |
| Хотите настроить сервис распознования речи (Configure speech recognition service) | No (значение по умолчанию) | No (значение по умолчанию) |
| Ничего не выбирать | Ok (необходимо выбрать) | Ok (необходимо выбрать) |
после установки пакета ecss-restfs проверьте наличие wav файлов авто-информатора в директории /var/lib/ecss/restfs/system/sounds/ командой:
на обоих хостах
ll /var/lib/ecss/restfs/system/sounds/
наличие wav файлов в указной выше директории говорит о корректности установки пакета ecss-restfs.
Отсутствия wav файлов в указной выше директории, говорит о проблеме при установки пакета ecss-restfs. Для ее решения выполните команду:
sudo apt --fix-broken install
и повторите команду проверки:
ll /var/lib/ecss/restfs/system/sounds/
осталось проверить доступность этих файлов извне, для этой проверки выполним поочередно команду на хосте ecss1 и ecss2:
wget http://ecss1:9990/system/sounds/ai_you.wav
wget http://ecss2:9990/system/sounds/ai_you.wav
wget http://ecss1:9990/system/sounds/ai_you.wav --2023-12-18 17:43:29-- http://ecss1:9990/system/sounds/ai_you.wav Resolving ecss1 (ecss1)... 127.0.1.1, 10.0.10.11 Connecting to ecss1 (ecss1)|127.0.1.1|:9990... connected. HTTP request sent, awaiting response... 200 OK Length: 11670 (11K) [audio/x-wav] Saving to: ‘ai_you.wav’ ai_you.wav 100%[========================================================================================>] 11,40K --.-KB/s in 0s 2023-12-18 17:43:29 (301 MB/s) - ‘ai_you.wav’ saved [11670/11670]
проверочные файлы можно удалить
rm ai_you.wav rm ai_you.wav.1
Установка media и web пакетов ecss и их настройка
на обоих хостах
sudo apt install ecss-media-server
Для медиасервера (ecss-media-server/MSR) возможно начальное конфигурирование с записью параметров в файл конфигурации,
для этого нужно провести конфигурацию transport bind-addr,mcc bind-addres:
| Вопросы ecss-media-server | Ответы для ecss1 | Ответы для ecss2 |
|---|---|---|
| [ MSR SIP ] Введите bind-ip адрес (Enter) | 10.0.20.11 (необходимо ввести) | 10.0.20.12 (необходимо ввести) |
| [MSR Control-Channel] Введите bind-ip-адрес | 10.0.20.11 (необходимо ввести) | 10.0.20.12 (необходимо ввести) |
| [ MSR Name ]Введите имя для аккаунта по умолчанию(Enter) | msr.ecss1 (значение по умолчанию) | msr.ecss2 (значение по умолчанию) |
| [ MSR Realm Address ] Введите сетевой адрес ядра (Entrer) | 10.0.20.11 (необходимо ввести) | 10.0.20.12 (необходимо ввести) |
| [ MSR Realm Port ] Введите сетевой порт ядра (Entrer) | 5000 (значение по умолчанию) | 5000 (значение по умолчанию) |
на обоих хостах
sudo apt install ecss-web-conf
Web-конфигуратор позволяет сделать управление системой более наглядным и комфортным. Установка web-конфигуратора не является обязательной, но рекомендуется.
Также при установке пакета ecss-web-conf автоматически устанавливается пакет ecss-subsriber-portal-ui. Приложение "Портал абонента" системы ECSS-10 позволяет абонентам системы самостоятельно управлять услугами, просматривать информацию по совершенным вызовам, активным конференциям, а также настраивать собственные IVR-скрипты для входящих вызовов. Описание работы веб-конфигуратора приведено в разделе "Портал абонента".
| Вопросы ecss-web-conf | Ответы для ecss1 | Ответы для ecss2 |
|---|---|---|
| IP-адрес или имя хоста сервера БД MySQL на котором будет развернута БД web-conf(Input IP address or hostname of MySQL db for web-conf DB) | 127.0.0.1 (значение по умолчанию) | 127.0.0.1 (значение по умолчанию) |
| Порт доступа к серверу БД MySQL на котором будет развернута БД web-conf (Input port of MySQL db for web-conf DB | 3306 (значение по умолчанию) | 3306 (значение по умолчанию) |
| IP-адрес или имя хоста на котором установлен ECSS-10 для доступа к http_terminal\'y(Input IP address or hostname for ECSS-10 with http_terminal) | 127.0.0.1 (значение по умолчанию) | 127.0.0.1 (значение по умолчанию) |
| Порт ECSS-10 http_terminal\'a (Input port SSW http_terminal) | 9999 (значение по умолчанию) | 9999 (значение по умолчанию) |
| Логин ECSS-10 http_terminal\'a (Input login for SSW http_terminal) | admin (значение по умолчанию) | admin (значение по умолчанию) |
| Пароль ECSS-10 http_terminal\'a (Input password for SSW http_terminal) | password (необходимо ввести) | password (необходимо ввести) |
| Включить интеграция с Elph proxy? | No (необходимо выбрать) | No (необходимо выбрать) |
После формирования конфигураций по умолчанию переходим в директорию, в которой находятся файлы конфигурации и производим их проверку:
cd /etc/ecss/ecss-media-server/
cat config.xml
cat conf.d/default.xml
Внутри лежит конфигурация для msr: config.xml, в директории conf.d лежит конфигурация default.xml.
По своей сути default.xml — это дополнение config.xml, которое определяет секцию аккаунтов. Это сделано для того, чтобы после обновлений пакета данная конфигурация оставалась неизменной. Вид config.xml представлен здесь: файл конфигурации.
<?xml version="1.0" encoding="utf-8"?>
<config date="02:30:33 07.12.2023">
<general log-level="3" log-rotate="yes" max-calls="8192" max-in-group="512" load-sensor="media" load-delta="10" calls-delta="100" spool-dir-size="100M" log-name="msr.log" log-path="/var/log/ecss/media-server" use-srtp="disabled" enable-ice-transport="no" ice-update="no" aggressive-ice="yes" stun-server="" suspicious-mode="no"/>
<transport bind-addr="10.0.20.11" port="5040" transport="udp+tcp"/>
<!-- By default configured public TURN-server -->
<turn-server use-turn="no" host="numb.viagenie.ca" user="webrtc@live.com" password="muazkh"/>
<media mixer-clock-rate="8000" use-vad="no" cng-level="0" jb-size="60" rtcp-timeout="0" rtp-timeout="350" udp-src-check="no" cn-multiplier="3" port-start="12000" port-range="2048" tias-in-sdp="no" thread-cnt="2" vid-enc-threads="2" vid-dec-threads="2" video-conf-layout="evenly" keyframe-interval="1000" vid-decode-delay="100" silence-threshold="-30" dtmf-flash-disable="no" video-dscp="0" other-dscp="0" dummy-video-src="/usr/share/ecss-media-server/video/dummy_video.yuv" video-enc-width="640" video-enc-height="360" finalsilence="1000" rtcp-stat-dump="yes" silent-codec-switch="yes"/>
<codec pcma="1" pcmu="2" ilbc="0" gsm="0" g722="3" g729="0" speex="0" l16="0" g7221="0" opus="0" h264="1" h263-1998="2" t38="1" tel-event-pt="0"/>
<accounts>
<!-- <dynamic msr_name="msr.name"
realm="sip:127.0.0.1:5000"
dtmf_mode="rfc+inband+info"
auth_name="user"
auth_password="password" /> -->
</accounts>
<pbyte>
<mcc bind-addr="10.0.20.11" port="5700"/>
</pbyte>
<conf_dir path="/etc/ecss/ecss-media-server/conf.d"/>
<rtp>
<auto addr-v4=""/>
</rtp>
</config>
По умолчанию после инсталляции ECSS-10 активизирует только кодеки — pcma, pcmu, g722, h264, h263-1998, t38. Остальные имеют статус =0 = выкл. Если хотите активизировать остальные кодеки, в редакторе nano измените приоритет с 0 на цифру приоритета (уровень приоритета не должен повторятся для сервиса audio/video/fax)
sudo nano /etc/ecss/ecss-media-server/config.xml
строчку -
<codec pcma="1" pcmu="2" ilbc="0" gsm="0" g722="3" g729="0" speex="0" l16="0" g7221="0" opus="0" h264="1" h263-1998="2" t38="1" tel-event-pt="0"/>
привести к виду -
<codec pcma="1" pcmu="2" ilbc="6" gsm="4" g722="3" g729="5" speex="7" l16="8" g7221="9" opus="10" h264="1" h263-1998="2" t38="1" tel-event-pt="0"/>
Недопустимо указывать у разных кодеков одинаковый приоритет, для примера g726="5" g729="5". В этом случае они будут работать не корректно/игнорироваться.
За исключением "0" - выключено.
Рассмотрим секцию аккаунтов (файл default.xml):
после инсталляции пакетов в фале будет указан только свой локальный ip-add , необходимо добавить строчку с ip-add партнера и привести содержимое файла к виду указанному снизу:
на обоих хостах
sudo nano /etc/ecss/ecss-media-server/conf.d/default.xml
| Настройка msr для ecss1 (/etc/ecss/ecss-media-server/conf.d/default.xml) | Настройка msr для ecss2 (/etc/ecss/ecss-media-server/conf.d/default.xml) |
|---|---|
BASH
|
BASH
|
В ней указаны текущие настройки, согласно которым происходит регистрация msr на core.
Основными параметрами здесь являются: msr_name и realm:
- msr_name — параметр, определяющий название msr. (рекомендуется задавать msr. и к какому хосту он принадлежит, например msr.ecss1);
- realm — определяет адрес для регистрации на ядре. Точка входа по умолчанию — порт 5000.
Описание настройки остальных сервисов приведено в разделе "Инсталляция дополнительных необязательных пакетов".
Настройка VRRP для SIP-адаптера
Выполните настройку VRRP для SIP-адаптера, для этого на обоих хостах создайте файлы следующего содержания:
на обоих хостах
sudo nano /etc/keepalived/sip.conf
Для Astra Linux
Если ECSS-10 установлен на Astra Linux, то необходимо изменить скрипт проверки доступности контрольного SIP-порта /usr/bin/ecss_pa_sip_port:
#!/bin/bash
netstat -plane | grep $1
| etc/keepalived/sip.conf для ecss1 | etc/keepalived/sip.conf для ecss2 |
|---|---|
BASH
|
BASH
|
В данном случае была добавлена поддержка виртуальных интерфейсов со связью Master - Backup. Для ecss1 основным будет являться net.20:SIP1, а запасным — net.20:SIP2 соответственно. Важно учесть, что в конфигурации учтено использование адресных переменных. В секции interface требуется указать, на каком интерфейсе будут слушаться VRRP-сообщения, а в секции virtual_ipaddress требуется указать интерфейс, на котором будет восстановлен виртуальный адрес.
Выполните перезапуск keepalived:
на обоих хостах
sudo systemctl restart keepalived.service
для проверки правильности установки выполните команду ifconfig, в конце выходного сообщения вы должны видеть новый интерфейс - net.20:SIP1 с выбранным IP-адресом
ifconfig
. . .
net.20:SIP1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.20.31 netmask 255.255.255.0 broadcast 0.0.0.0
ether 08:00:27:6d:4f:02 txqueuelen 1000 (Ethernet)
ifconfig
. . .
net.20:SIP2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.20.32 netmask 255.255.255.0 broadcast 0.0.0.0
ether 08:00:27:05:03:39 txqueuelen 1000 (Ethernet)
Дальнейшая настройка
snpmd
Настройка SNMP описана в разделе "Управление и мониторинг по протоколу SNMP".
Настройка безопасности. SSH
Выполните настройку сервера SSH:
на обоих хостах
sudo nano /etc/ssh/sshd_config
Укажите в конфигурационном файле порт и адрес, по которому можно обратиться к серверу:
| Настройка ssh для ecss1 (/etc/ssh/sshd_config) | Настройка ssh для ecss2 (/etc/ssh/sshd_config) |
|---|---|
# This is the sshd server system-wide configuration file. See # This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin # The strategy used for options in the default sshd_config shipped with Port 2000 <...> | # This is the sshd server system-wide configuration file. See # This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin # The strategy used for options in the default sshd_config shipped with Port 2000 <...> |
Перезапустите ssh:
на обоих хостах
sudo systemctl restart ssh.service
Зайдите в CLI - CoCon:
на ecss1 пароль - password
ssh admin@localhost -p 8023
Добавление медиа-ресурсов в интерфейсе командной строки (CLI)
Медиаресурс — это описание параметров медиасервера, необходимых для работы с ним.
Для возможности использования медиаресурса и установления соединений , необходимо выполнить активизацию в команде создания медиаресурса - /system/media/resource/declare (параметр "is active"=true) или /system/media/resource/set (параметр "active"=true), если при создании активизация не была выполнена. Так же можно выполнить активизацию через веб интерфейс , приложение - сетевые окончания MSR (MSR-registrars).
declare
Команда для объявления подключения медиасервера к ECSS-10.
Для работы в режиме предварительно настроенной системы можно заранее прописать медиаресурсы, информация о которых известна.
Для этого необходимо создать описание известных медиасерверов с указанием всех параметров, что позволить начать работу с медиасервером сразу после его регистрации.
Команда для создания конфигурации медиасервера:
Путь команды:
/system/media/resource/declare
Синтаксис:
declare <node> by_contact <contact> <zone> <site> <is active>
или
declare <node> by_iface <msr> <acc_id> <iface> <zone> <site> <is active>
Параметры:
<node> — имя ноды core;
<contact> — contact uri декларируемого медиаресурса;
<zone> — логическая зона обслуживания MSR;
<site> — идентификатор сети обслуживания MSR;
<is active> — состояние активности медиаресурса, значения true/false;
<msr> — имя MSR;
<acc_id> — номер идентификатор ресурса;
<iface> — название интерфейса.
set
Команда для изменения настроек медиаресурсов.
Путь команды:
/system/media/resource/set
Синтаксис:
set <node|*> <contact> <active|zone|site> <value>
Параметры:
<node|*> - имя ноды;
<contact> - contact uri декларируемого медиаресурса;
<active|zone|site> - активация | зона | сайт;
<value> - значение параметра.
Пример:
Активируем связь MSR- и Core-подсистем. Для этого пропишите команды:
выполняется в CoCon
/system/media/resource/set core1@ecss1 net.20@msr.ecss1 active true
выполняется в CoCon
/system/media/resource/set core1@ecss2 net.20@msr.ecss2 active true
выполняется в CoCon
/system/media/resource/set core1@ecss1 net.20@msr.ecss2 active true
выполняется в CoCon
/system/media/resource/set core1@ecss2 net.20@msr.ecss1 active true
/system/media/resource/set core1@ecss1 net.20@msr.ecss1 active true Media resource: ┌─────────────┬──────────────────┬──────────┬───────┐ │ Node │ Contact │ Property │ Value │ ├─────────────┼──────────────────┼──────────┼───────┤ │ core1@ecss1 │ net.20@msr.ecss1 │ active │ true │ └─────────────┴──────────────────┴──────────┴───────┘ /system/media/resource/set core1@ecss2 net.20@msr.ecss2 active true Media resource: ┌─────────────┬──────────────────┬──────────┬───────┐ │ Node │ Contact │ Property │ Value │ ├─────────────┼──────────────────┼──────────┼───────┤ │ core1@ecss2 │ net.20@msr.ecss2 │ active │ true │ └─────────────┴──────────────────┴──────────┴───────┘ /system/media/resource/set core1@ecss1 net.20@msr.ecss2 active true Media resource: ┌─────────────┬──────────────────┬──────────┬───────┐ │ Node │ Contact │ Property │ Value │ ├─────────────┼──────────────────┼──────────┼───────┤ │ core1@ecss1 │ net.20@msr.ecss2 │ active │ true │ └─────────────┴──────────────────┴──────────┴───────┘ /system/media/resource/set core1@ecss2 net.20@msr.ecss1 active true Media resource: ┌─────────────┬──────────────────┬──────────┬───────┐ │ Node │ Contact │ Property │ Value │ ├─────────────┼──────────────────┼──────────┼───────┤ │ core1@ecss2 │ net.20@msr.ecss1 │ active │ true │ └─────────────┴──────────────────┴──────────┴───────┘
info
Команда для просмотра информации о состоянии подключения конкретного медиаресурса.
Путь команды:
/system/media/resource/info
Синтаксис:
info <node> <contact>
Параметры:
<contact> — contact uri декларируемого медиаресурса;
<node> — имя ноды.
Пример:
/system/media/resource/info core1@ecss1 net.20@msr.ecss1
Media resource specific for node core1@ecss1:
┌─┬─────────────────┬─────────────────────┐
│F│ Parameter │ Value │
├─┼─────────────────┼─────────────────────┤
│r│ Contact │ net.20@msr.ecss1 │
│r│ Status │ registered │
│r│ Cc-status │ connected │
│r│ Cc-status uptime│ 00:56:35 │
│r│ Cc-id │ 54faa9 │
│r│ Address │ 10.0.20.11:5700 │
│r│ Register time │ 2025/01/22 09:53:22 │
│r│ Expired │ 142 │
│r│ Iface │ net.20(10.0.20.11) │
│ │ Active │ true │
│ │ Zone │ default │
│ │ Site │ local │
│r│ MSR version │ 3.14.16.0.95 │
│r│ MSR load │ 0 │
│r│ MSR perf coef │ 1.0 │
└─┴─────────────────┴─────────────────────┘
Legend:
Column F - means Flag, values r - flag for readonly parameter
list
Команда для просмотра списка медиаресурсов в системе ECSS-10.
Путь команды:
/system/media/resource/list
Синтаксис:
list [active | all | register]
Параметры:
active — отображать только активные медиаресурсы (по умолчанию);
register — отображать только зарегистрированные медиаресурсы;
short — отобразить минимальную информацию;
all — отображать все задекларированные медиаресурсы.
По умолчанию команда выдает список зарегистрированных медиасерверов.
Пример:
/system/media/resource/list all
All media resource selected list specific:
┌─────────────┬───────────┬──────────────┬───────────┬──────┬────────┬───────────┬───────────┬─────────────────┬────────┬────────────┬────────┬─────────┬───────┬──────────────────┬────────────┬─────────┐
│ Node │ MSR │ MSR │ MSR │ MSR │ Cc-id │ Cc-status │ Cc-uptime │ Cc-address │ Iface │ Iface │ Active │ Zone │ Site │ Contact │ Status │ Expired │
│ │ │ version │ perf coef │ load │ │ │ │ │ name │ addr │ │ │ │ │ │ │
├─────────────┼───────────┼──────────────┼───────────┼──────┼────────┼───────────┼───────────┼─────────────────┼────────┼────────────┼────────┼─────────┼───────┼──────────────────┼────────────┼─────────┤
│ core1@ecss1 │ msr.ecss1 │ 3.14.16.0.95 │ 1.0 │ 0 │ 54faa9 │ connected │ 00:54:48 │ 10.0.20.11:5700 │ net.20 │ 10.0.20.11 │ true │ default │ local │ net.20@msr.ecss1 │ registered │ 129 │
│ │ msr.ecss2 │ 3.14.16.0.95 │ 1.0 │ 0 │ 4cff7c │ connected │ 00:54:49 │ 10.0.20.12:5700 │ net.20 │ 10.0.20.12 │ true │ default │ local │ net.20@msr.ecss2 │ registered │ 128 │
│ core1@ecss2 │ msr.ecss1 │ 3.14.16.0.95 │ 1.0 │ 0 │ 54faa9 │ connected │ 00:54:35 │ 10.0.20.11:5700 │ net.20 │ 10.0.20.11 │ true │ default │ local │ net.20@msr.ecss1 │ registered │ 142 │
│ │ msr.ecss2 │ 3.14.16.0.95 │ 1.0 │ 0 │ 4cff7c │ connected │ 00:54:35 │ 10.0.20.12:5700 │ net.20 │ 10.0.20.12 │ true │ default │ local │ net.20@msr.ecss2 │ registered │ 142 │
└─────────────┴───────────┴──────────────┴───────────┴──────┴────────┴───────────┴───────────┴─────────────────┴────────┴────────────┴────────┴─────────┴───────┴──────────────────┴────────────┴─────────┘
Добавление управления регистратором для MSR медиа менеджера в интерфейсе командной строки (CLI)
/system/media/registrar/ - команды управления регистратором для MSR медиа менеджера
set
Команда для изменения общих и индивидуальных параметров.
Путь команды:
/system/media/registrar/set
Синтаксис настройки общих параметров:
set common <FIELD> <VALUE>
Параметры:
<FIELD> - имя настраиваемого параметра;
<VALUE> - значение настраиваемого параметра
Где- common - тип выставляемого параметра;
- <common parameter> - общий параметр медиарегистратора для всех нод: registration-timeout;
- private - тип выставляемого параметра;
- <node name> - имя ноды на которой находится медиарегистратор;
- <private parameter> - параметр медиарегистратора, который выставляется на <node name>: is-active, listen-interface & listen-port.
Cписок параметров доступных для настройки:
- is-active - позволяет включить или выключить регистратор (false - деактивирует регистратор, регистратор перестает принимать SIP трафик);
- listen-interface - имя интерфейса, который использует регистратор;
- listen-port - порт, на котором регистратор принимает запросы на регистрацию (по умолчанию 5000);
- registration-timeout - таймер перерегистрации, диапазон значений от 60 до 86400.
В общих параметрах доступна настройка времени регистрации, по умолчанию установлено 60 секунд.
Пример:
Установить время регистрации 60 секунд:
/system/media/registrar/set common registration-timeout 60 Common parameter registration-timeout set to 60.
Синтаксис настройки индивидуальных параметров:
system/media/registrar/set private <CORE> <FIELD> <VALUE>
Параметры:
<CORE> - нода ядра, для которой настраивается Registrar-сервер;
<FIELD> - имя настраиваемого параметра;
<VALUE> - значение настраиваемого параметра.
Настраиваемые параметры:
- is-active - активен ли Registrar-сервер, принимает значения true | false;
- listen-ip - ip-адрес, на котором Registrar-сервер будет принимать соединения (по умолчанию 0.0.0.0);
- listen-port - сетевой порт, на котором Registrar-сервер будет принимать соединения (по умолчанию 5000).
Установить ipадрес для приема соединений от медиасервера:
выполняется в CoCon
/system/media/registrar/set private core1@ecss1 listen-ip 10.0.20.11
выполняется в CoCon
/system/media/registrar/set private core1@ecss2 listen-ip 10.0.20.12
/system/media/registrar/set private core1@ecss1 listen-ip 10.0.20.11 Private parameter listen-ip set to 10.0.20.11 at node core1@ecss1. /system/media/registrar/set private core1@ecss2 listen-ip 10.0.20.12 Private parameter listen-ip set to 10.0.20.12 at node core1@ecss2. [exec at: 22.01.2025 10:00:01, exec time: 46ms, nodes: core1@ecss1 v.3.14.16.0.408]
info
Команда просмотра текущих настроек Registrar-сервера.
Путь команды:
/system/media/registrar/info
/system/media/registrar/info Common parameters: ┌───────────────────────────┬───────┐ │ Parameter │ Value │ ├───────────────────────────┼───────┤ │ registration-timeout, sec │ 180 │ └───────────────────────────┴───────┘ Private parameters: ┌─────────────┬────────┬───────────┬────────────┬─────────────┐ │ Node │ Status │ Is-active │ Listen-ip │ Listen-port │ ├─────────────┼────────┼───────────┼────────────┼─────────────┤ │ core1@ecss2 │ active │ true │ 10.0.20.12 │ 5000 │ │ core1@ecss1 │ active │ true │ 10.0.20.11 │ 5000 │ └─────────────┴────────┴───────────┴────────────┴─────────────┘ [exec at: 22.01.2025 10:16:19, exec time: 18ms, nodes: core1@ecss1 v.3.14.16.0.408]
После того как все сервисы будут запущены, ноды какое-то время будут устанавливать связь. Как только все ноды загрузятся , при выполнении запроса system-status, последует вывод следующей информации:
/system-status Checking... ┌─┬───────────────┬───────────────────────────┬───────────────────────────────┬─────────────────────┬──────┐ │ │ Node │ Release │ Erlang nodes │ Mnesia nodes │Uptime│ ├─┼───────────────┼───────────────────────────┼───────────────────────────────┼─────────────────────┼──────┤ │ │core1@ecss1 │ecss-core-3.14.16.0.408 │core1@ecss1,core1@ecss2 │not running │1h 23m│ │ │core1@ecss2 │ecss-core-3.14.16.0.408 │core1@ecss1,core1@ecss2 │not running │1h 22m│ │ │ds1@ecss1 │ecss-ds-3.14.16.0.408 │ds1@ecss1,ds1@ecss2 │ds1@ecss1,ds1@ecss2 │1h 23m│ │ │ds1@ecss2 │ecss-ds-3.14.16.0.408 │ds1@ecss1,ds1@ecss2 │ds1@ecss1,ds1@ecss2 │1h 22m│ │ │md1@ecss1 │ecss-mediator-3.14.16.0.408│md1@ecss1,md1@ecss2 │md1@ecss1,md1@ecss2 │1h 23m│ │ │md1@ecss2 │ecss-mediator-3.14.16.0.408│md1@ecss1,md1@ecss2 │md1@ecss1,md1@ecss2 │1h 22m│ │ │mycelium1@ecss1│ecss-mycelium-3.14.16.0.408│mycelium1@ecss1,mycelium1@ecss2│not running │1h 23m│ │ │mycelium1@ecss2│ecss-mycelium-3.14.16.0.408│mycelium1@ecss1,mycelium1@ecss2│not running │1h 22m│ │ │sip1@ecss1 │ecss-pa-sip-3.14.16.0.408 │sip1@ecss1,sip1@ecss2 │sip1@ecss1,sip1@ecss2│1h 23m│ │ │sip1@ecss2 │ecss-pa-sip-3.14.16.0.408 │sip1@ecss1,sip1@ecss2 │sip1@ecss1,sip1@ecss2│1h 22m│ └─┴───────────────┴───────────────────────────┴───────────────────────────────┴─────────────────────┴──────┘ All services are started. Active media resource selected list specific: ┌─────────────┬───────────┬──────────────┬───────────┬───────────┐ │ Node │ MSR │ MSR │ Cc-status │ Cc-uptime │ │ │ │ version │ │ │ ├─────────────┼───────────┼──────────────┼───────────┼───────────┤ │ core1@ecss1 │ msr.ecss1 │ 3.14.16.0.95 │ connected │ 00:04:15 │ │ │ msr.ecss2 │ 3.14.16.0.95 │ connected │ 00:04:17 │ │ core1@ecss2 │ msr.ecss1 │ 3.14.16.0.95 │ connected │ 00:04:03 │ │ │ msr.ecss2 │ 3.14.16.0.95 │ connected │ 00:04:02 │ └─────────────┴───────────┴──────────────┴───────────┴───────────┘ [exec at: 22.01.2025 10:19:36, exec time: 863ms, nodes: core1@ecss1 v.3.14.16.0.408, core1@ecss2 v.3.14.16.0.408, ds1@ecss1 v.3.14.16.0.408, ds1@ecss2 v.3.14.16.0.408, md1@ecss1 v.3.14.16.0.408, md1@ecss2 v.3.14.16.0.408, mycelium1@ecss1 v.3.14.16.0.408, mycelium1@ecss2 v.3.14.16.0.408, sip1@ecss1 v.3.14.16.0.408, sip1@ecss2 v.3.14.16.0.408]
В примере выше видно, что ноды вошли в кластер и MSR зарегистрировались на ноде ecss-core.
Создание и настройка группы SIP-IP-адресов (IP-set)
Произведите настройку адаптера SIP согласно ТЗ:
выполняется в CoCon
/cluster/adapter/sip1/sip/network/set ip_set test_set node-ip node = sip1@ecss1 ip = 10.0.20.31
выполняется в CoCon
/cluster/adapter/sip1/sip/network/set ip_set test_set node-ip node = sip1@ecss2 ip = 10.0.20.32
выполняется в CoCon
/cluster/adapter/sip1/sip/network/set ip_set test_set listen-ports list = [5060]
/cluster/adapter/sip1/sip/network/set ip_set test_set node-ip node = sip1@ecss1 ip = 10.0.20.31 Property "ip_set" successfully changed from: to test_set: no ports set test_set: sip1@ecss1 10.0.20.31 test_set: dscp 0. [exec at: 22.01.2025 10:22:30, exec time: 250ms, nodes: sip1@ecss1 v.3.14.16.0.408] /cluster/adapter/sip1/sip/network/set ip_set test_set node-ip node = sip1@ecss2 ip = 10.0.20.32 Property "ip_set" successfully changed from: test_set: no ports set test_set: sip1@ecss1 10.0.20.31 test_set: dscp 0 to test_set: no ports set test_set: sip1@ecss1 10.0.20.31 test_set: sip1@ecss2 10.0.20.32 test_set: dscp 0. [exec at: 22.01.2025 10:23:28, exec time: 208ms, nodes: sip1@ecss2 v.3.14.16.0.408] /cluster/adapter/sip1/sip/network/set ip_set test_set listen-ports list = [5060] Property "ip_set" successfully changed from: test_set: no ports set test_set: sip1@ecss1 10.0.20.31 test_set: sip1@ecss2 10.0.20.32 test_set: dscp 0 to test_set: 5060 test_set: sip1@ecss1 10.0.20.31 test_set: sip1@ecss2 10.0.20.32 test_set: dscp 0. [exec at: 22.01.2025 10:24:13, exec time: 234ms, nodes: sip1@ecss1 v.3.14.16.0.408]
Создание Домена и подключение IP-set
Создайте Домен (виртуальную АТС) и присвойте ему созданную выше группу (IP-set) настроек SIP-адаптера:
выполняется в CoCon
/domain/declare test_domain --add-domain-admin-privileges --add-domain-user-privileges
выполняется в CoCon
/domain/test_domain/sip/network/set ip_set [test_set]
/domain/declare test_domain --add-domain-admin-privileges --add-domain-user-privileges
New domain test_domain is declared
[exec at: 22.01.2025 10:27:52, exec time: 906ms, nodes: ds1@ecss1 v.3.14.16.0.408]
/domain/test_domain/sip/network/set ip_set [test_set]
Property "ip_set" successfully changed from:
[]
to
["test_set"].
[exec at: 22.01.2025 10:28:14, exec time: 86ms, nodes: sip1@ecss2 v.3.14.16.0.408]
Добавление услуг
Установка всех услуг указных в лицензии:
выполняется в CoCon
/cluster/storage/ds1/ss/install ds1@ecss1 ss_*
/cluster/storage/ds1/ss/install ds1@ecss1 ss_*
Successfully installed: /var/lib/ecss/ss/ss_dnd.xml
Successfully installed: /var/lib/ecss/ss/ss_clir.xml
. . .
Successfully installed: /var/lib/ecss/ss/ss_chunt.xml
[exec at: 22.01.2025 10:29:55, exec time: 612ms, nodes: ds1@ecss1 v.3.14.16.0.408]
После установки в систему всех услуг, администратор системы должен открыть доступ на управление услугами оператору Домена (виртуальной АТС). Для этого использовать команду разрешения оператору Домена (виртуальной АТС) "test_domain" управлять всеми услугами :
выполняется в CoCon
/cluster/storage/ds1/ss/access-list add test_domain *
/cluster/storage/ds1/ss/access-list add test_domain * Supplementary services successfully added in the domain test_domain. [exec at: 22.01.2025 10:33:15, exec time: 68ms, nodes: ds1@ecss2 v.3.14.16.0.408]
Для возможности применения пакета услуг у абонентов сразу после создания, необходимо настроить политику применения лицензионных пакетов услуг (детальную информацию вы можете посмотреть здесь )
Создать политику применения лицензии с именем -"new_sub"
выполняется в CoCon
/domain/test_domain/ss/licence/politics/declare new_sub "Задаются при создании абонента"
/domain/test_domain/ss/licence/politics/declare new_sub "Задаются при создании абонента" Licence politic new_sub successfully declared. [exec at: 22.01.2025 10:34:49, exec time: 31ms, nodes: ds1@ecss2 v.3.14.16.0.408]
Задать имя пакета услуг дополнительных сервисов, для этого использовать следующие команды :
выполняется в CoCon
/cluster/storage/ds1/licence/show-licence 1
нас интересует следующая информация :
/cluster/storage/ds1/licence/show-licence 1
SSW ID < Имя SSW ID >
Description Лицензия для тестирования 3.14.16 Локация 2.
. . .
Supplementary Services licence package(s)
name 'ECSS-FULL+'
limit 50000
description "Весь пакет услуг"
SS list [1,2,3,4,5]
. . .
[exec at: 22.01.2025 10:37:29, exec time: 27ms, nodes: ds1@ecss1 v.3.14.16.0.408]
имя пакета услуг в примере "ECSS-FULL+".
Добавить в созданную политику пакет лицензионных услуг с именем "ECSS-FULL+"(именно так он описан в лицензии):
выполняется в CoCon
/domain/test_domain/ss/licence/politics/package-add new_sub ECSS-FULL+
/domain/test_domain/ss/licence/politics/package-add new_sub ECSS-FULL+ Licence packages ["ECSS-FULL+"] successfully added to politic new_sub. [exec at: 22.01.2025 10:39:55, exec time: 53ms, nodes: ds1@ecss1 v.3.14.16.0.408]
Пакет добавлен, но в настоящий момент политика не активна (не может быть применена к абоненту). Для активации политики new_sub выполнить следующую команду:
выполняется в CoCon
/domain/test_domain/ss/licence/politics/activate new_sub
/domain/test_domain/ss/licence/politics/activate new_sub Licence politic new_sub successfully activated. [exec at: 22.01.2025 10:41:06, exec time: 20ms, nodes: ds1@ecss1 v.3.14.16.0.408]
Теперь при создании абонентов можем использовать дополнительные услуги.
После создания домена настройте: