Исходные данные
По техническому заданию требуется определить аппаратную платформу.
Актуальная информация с требованиями к серверам, которые должны использоваться для работы комплекса ECSS-10. Полоса пропускания СПД Требуемая полоса пропускания СПД не менее 1000Mb/s№ Требования к серверам 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 для хранения записей
Минимальные требования при установке ECSS-10 на виртуальные машины* C - core, они же ядра T - thread = поток, vCore (1) — серия Top на текущий момент рассчитана для реализации контроллера транковых шлюзов (работа по 4 классу). *Если на системе планируется использование таких сервисов как КЦ, запись разговоров, видео-вызовы, то необходимо согласовать требования с технической поддержкой№ Требования к серверам 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
(2) — уровень Light применяется только для расчета виртуальных машин, для физических серверов минимальная рекомендуемая конфигурация — Light+.
(3) — уровень Light является минимальным рекомендуемым. При запросе расчета ВМ для малого числа абонентов (до 1000: 100, 200...) используем его.
Включение в сеть
Топологию включения сервера в сеть для обеспечения резервирования рекомендуется делать с использованием 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.17 работает под управлением ОС Ubuntu 22.04.
Предварительные требования
- Установочный загрузочный носитель с дистрибутивом операционной системы;
- Подготовленный сервер с обновленным BIOS, ILO (если есть), подключенная сеть для доступа в сеть Интернет;
- Выставленный первый приоритет загрузки с установочного носителя — USB Flash или CD/DVD в BIOS;
- Достаточный объем дискового пространства и памяти в соответствии с проектом.
Установка ОС
Для установки ОС необходимо выполнить следующее:
- После загрузки с установочного носителя выбрать "Install Ubuntu Server".
- Выбрать язык системы и раскладку клавиатуры.
Настроить сетевой интерфейс для подключения к сети Интернет:
- Создать партиции на диске в соответствии с таблицей 1
- Настроить имена сервера и пользователя
- Установить OpenSSH 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 | Журналы функционирования подсистем ECSS | ecss_log | raid 1:hdd1,hdd2 или hdd3 | ecss_log | /var/log/ecss | ext4 | 20 Gb | Логический |
| 7 | Базы данных | ecss_db | raid 1:hdd1,hdd2 или hdd3 | ecss_db | /srv/ecss/ecss-postgres-bdr-ssw/ | ext4 | 100–400 Gb** | Логический |
| 8 | Файлы пользователя | 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.51(52)/24 — для управления, vlan 10;
- 10.0.20.51(52)/24 — core, vlan 20;
- 10.0.20.31(32)/24 — виртуальные (vrrp) для VoIP;
- 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.51, при этом ядро (ecss-core) взаимодействует с сервером обработки мультимедиа-данных (ecss-media-server). Их взаимодействие происходит с использованием одного и того же адреса, но у каждой программной части свой транспортный порт: ecss-core — 5000, ecss-msr — 5040.
Для всех нод кластера определяется единый адрес для обращения к базе данных, например, адрес 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.51/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.51/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.52/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.52/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.51/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.51/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.52/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.52/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.51 ecss1 # Адрес хоста 10.0.10.52 ecss2 # Внутренний адрес другого хоста | 127.0.0.1 localhost # Адрес локальной петли, используется некоторыми сервисами ecss 10.0.10.52 ecss2 # Адрес хоста 10.0.10.51 ecss1 # Внутренний адрес другого сервера |
Теперь, если вызвать утилиту ping на ecssX, можно обратиться к соседнему серверу.
| Обращение к ecss2 с ecss1 | Обращение к ecss1 с ecss2 |
|---|---|
ping ecss2 PING ecss2 (10.0.10.52) 56(84) bytes of data. 64 bytes from ecss2 (10.0.10.52): icmp_seq=1 ttl=64 time=0.047 ms | ping ecss1 PING ecss1 (10.0.10.51) 56(84) bytes of data. 64 bytes from ecss1 (10.0.10.51): icmp_seq=1 ttl=64 time=0.032 ms |
Далее следует организовать доступ между серверами через ssh по rsa-ключам - без использования пароля.
Генерируем rsa-ключ следующий командой (выполняем команду без sudo, чтобы ключ сгенерировался для текущего пользователя), при выполнении команды будут заданы три вопроса, можно использовать значение по умолчанию, нажав три раза Enter:
ssh-keygen
ssh-copy-id ecss2
Таким же образом на хосте ecss2.
ssh-copy-id ecss1
проврете подключение между серверами, со стороны сервера ecss1 - ssh ecss2 соединение должно быть установлено без запроса пароля . Аналогичным образом со стороны сервера ecss2 - ssh ecss1
"Оптимизация" Операционной Системы
Выставить параметры ОС в режим производительности
Используем утилиту cpufrequtils.
sudo apt install -y 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-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
ВАЖНО
Обновление программного обеспечения операционной системы
Для установки системы ECSS-10 необходимо добавить репозиторий ELTEX.
sudo sh -c "echo 'deb [arch=amd64] http://archive.eltex.org/ssw/jammy/3.17 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.17/dists/stable/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 -y 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 -y ifenslave keepalived attr
Перед началом установки пакетов ecss , нужно убедится в соответствии полосы пропускания СПД необходимым требованиям.
Для этого выполнить команду sudo ethtool <имя интерфейса> для всех физических интерфейсов.
Проверить значение следующих параметров:
Advertised auto-negotiation: Yes
Speed: 1000Mb/s (не менее)
Duplex: Full
Инсталляция обязательных пакетов ECSS
Установка пакета ecss-dns-env
Выполнить следующую команду:
sudo apt install -y ecss-dns-env
Настройщик предложит выбрать разделы для настройки по вопросам ниже. Нужно выбрать broker. (для примера 10.0.10.51 и 10.0.10.52 )
| Вопрос ecss-dns-env | Ответы для ecss1 | Ответы для ecss2 |
|---|---|---|
| [Primary broker] Введите адрес ([Primary broker] Enter ip) | 10.0.10.51 (необходимо ввести) | 10.0.10.51 (необходимо ввести) |
| [Secondary broker] Введите адрес ([Secondary broker] Enter ip) | 10.0.10.52 (необходимо ввести) | 10.0.10.52 (необходимо ввести) |
ВАЖНО
В случае последующей коррекции IP-адресов следует использовать команду:
sudo dpkg-reconfigure ecss-dns-env
Установка Postgres
Примечание
Перед установкой ecss-postgres-bdr-ssw в системе, в apt sources, должен быть добавлен docker для этого выполнить следующие команды:
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update && sudo apt upgrade
Установка пакета ecss-postgres-bdr-ssw
Выполняется последовательно, первым устанавливается на сервере который работает в режиме "Master"
sudo apt install -y ecss-postgres-bdr-ssw
При конфигурации пакета ecss-postgres-bdr-ssw будут заданы вопросы:
| Вопросы ecss-postgres-bdr-ssw | Ответы для ecss1 (Master) |
|---|---|
| Текущий IP-адрес сетевого интерфейса. | Выбрать из списка IP-адрес для работы с Postgres |
| Установка в кластере? | Yes (значение по умолчанию) |
| Является ли этот узел мастером? | Yes (необходимо выбрать) |
sudo apt install -y ecss-postgres-bdr-ssw
При конфигурации пакета ecss-postgres-bdr-ssw будут заданы вопросы:
| Вопросы ecss-postgres-bdr-ssw | Ответы для ecss2 (Slave) |
|---|---|
| Текущий IP-адрес сетевого интерфейса. | Выбрать из списка IP-адрес для работы с Postgres |
| Установка в кластере? | Yes (значение по умолчанию) |
| Является ли этот узел мастером? | No (значение по умолчанию) |
| IP-адрес, используемый для подключения к кластеру: | Указать IP-адрес Master (ecss1) |
Проверить корректность настройки репликации
Во время установки в директорию /srv/ecss/ecss-postgres-bdr-ssw устанавливаются скрипт postgresbdr_ssw.sh
Для проверки репликации выполнить следующие команды:
cd /srv/ecss/ecss-postgres-bdr-ssw
sudo ./postgresbdr_ssw.sh check
Вывод на хостах должен быль одинаковый:
sudo ./postgresbdr_ssw.sh checkEnter master ip pleaseLike 10.150.150.1510.0.10.51Enter slave ip please10.0.10.52Press enter with empty passwordПросто щелкайте Enter не вводя парольq - выход из просмотра таблицы (если необходимо)таблица нод на мастере по ecss_storekeeper_dbтаблица нод на слейве по ecss_storekeeper_dbтаблица коннекций на мастер по ecss_storekeeper_db conn_sysid | conn_dsn ---------------------+--------------------------------------------------------------------------------------- 7569499877813944343 | host=10.0.10.51 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1 7569514001040228374 | host=10.0.10.52 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1(2 rows)
таблица коннекций на слейве по ecss_storekeeper_db conn_sysid | conn_dsn ---------------------+--------------------------------------------------------------------------------------- 7569499877813944343 | host=10.0.10.51 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1 7569514001040228374 | host=10.0.10.52 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1(2 rows)
sudo ./postgresbdr_ssw.sh checkEnter master ip pleaseLike 10.150.150.1510.0.10.51Enter slave ip please10.0.10.52Press enter with empty passwordПросто щелкайте Enter не вводя парольq - выход из просмотра таблицы (если необходимо)таблица нод на мастере по ecss_storekeeper_dbтаблица нод на слейве по ecss_storekeeper_dbтаблица коннекций на мастер по ecss_storekeeper_db conn_sysid | conn_dsn ---------------------+--------------------------------------------------------------------------------------- 7569499877813944343 | host=10.0.10.51 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1 7569514001040228374 | host=10.0.10.52 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1(2 rows)
таблица коннекций на слейве по ecss_storekeeper_db conn_sysid | conn_dsn ---------------------+--------------------------------------------------------------------------------------- 7569499877813944343 | host=10.0.10.51 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1 7569514001040228374 | host=10.0.10.52 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1(2 rows)
Установка ecss-node
Установка обязательного пакета ecss-node включает в себя установку и первоначальную настройку основных подсистем.
В системе уже должен быть установлен пакет ecss-postgres-bdr-ssw
Для установки пакета ecss-node выполните команду:
sudo apt install -y ecss-node
Во время установки пакета создается пользователь ssw, от имени которого запускаются все сервисы ecss*. Создаются необходимые каталоги, выполняется настройка DNS, идет настройка SSL-сертификатов.
При установки так же будет установлен пакет ecss-user
Установка на сервере ecss1
Во время установки будет предложено настроить параметры, необходимые для формирования конфигурационных файлов, примеры ответов следует ниже.
| Вопросы ecss-user | Ответы для ecss1 | Пример |
|---|---|---|
| Хотите ли вы использовать стандартные настройки? | Yes (значение по умолчанию) | |
| Вопросы ecss-node | Ответы для ecss1 | Пример |
| Идентификатор ECSS-узла в формате DNS (Настройка имени кластера): (в примере abf.test) | abf.test (необходимо ввести) | |
| Хотите ли вы использовать стандартные настройки? | Yes (значение по умолчанию) | |
| Вопросы ecss-user | Ответы для ecss1 | Пример |
| Максимальный размер несжатого дампа в байтах. | 8G (значение по умолчанию) | |
| Максимальный размер сжатого дампа в байтах. | 2G (значение по умолчанию) | |
| Максимальный размер, который может занять каталог /var/lib/systemd/coredump: | default (значение по умолчанию) | |
| Минимальный объем свободного дискового пространства в байтах. | 30G (значение по умолчанию) | |
Сохраните в безопасное место и удалите файл /etc/ecss/ssl/ecss10root.key! | Ok (значение по умолчанию) | |
После установки пакета ecss-node на хосте ecss1, выполните команду "sudo usermod -a -G ssw <Имя_пользователя>" на хосте ecss1.
Затем выполите установку на хосте ecss2.
Используйте режим "Скопировать существующие сертификаты (copy) по ssh" с сервера ecss1
Установка на сервере ecss2
Во время установки будет предложено настроить параметры, необходимые для формирования конфигурационных файлов, примеры ответов следует ниже.
| Вопросы ecss-user | Ответы для ecss2 | Пример |
|---|---|---|
| Хотите ли вы использовать стандартные настройки? | No (значение по умолчанию) | |
| Хотите ли вы выключить ежедневное обновление apt-пакетов? | Yes (значение по умолчанию) | |
| Как вы хотите сконфигурировать сертификаты? | copy (необходимо выбрать) | |
| Вы хотите установить сертификаты в систему? | Yes (значение по умолчанию) | |
| Каким методом вы хотите скопировать сертификаты? | ssh (необходимо выбрать) | |
| Введите имя хоста для подключения: | ecss1 (необходимо ввести) | |
| Введите порт хоста для подключения: | 22 (значение по умолчанию) | |
| Введите логин для подключения: (для примера eltex) | eltex (необходимо ввести) | |
| Какой метод авторизации использовать? | password (необходимо выбрать) | |
| Введите пароль для подключения: | ||
| Введите путь до сертификатов: | /etc/ecss/ssl (значение по умолчанию) | |
| Вопросы ecss-node | Ответы для ecss2 | Пример |
| Идентификатор ECSS-узла в формате DNS (Настройка имени кластера): (в примере abf.test) | abf.test (необходимо ввести) | |
| Хотите ли вы использовать стандартные настройки? | Yes (значение по умолчанию) | |
| Вопросы ecss-user | Ответы для ecss2 | Пример |
| Максимальный размер несжатого дампа в байтах. | 8G (значение по умолчанию) | |
| Максимальный размер сжатого дампа в байтах. | 2G (значение по умолчанию) | |
| Максимальный размер, который может занять каталог /var/lib/systemd/coredump: | default (значение по умолчанию) | |
| Минимальный объем свободного дискового пространства в байтах. | 30G (значение по умолчанию) | |
Сохраните в безопасное место и удалите файл /etc/ecss/ssl/ecss10root.key! | Ok (значение по умолчанию) | |
Проверить статус сервисов следующей командой:
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
Конфигурация NTP
При установке по умолчанию, (Хотите ли вы использовать стандартные настройки?) конфигурация NTP не будет выполнена. При необходимости выполнить конфигурацию NTP:
Установка паспорта и лицензий
ECSS10 поддерживает два варианта лицензирования: default и distributed. В зависимости от варианта лицензирования последовательность действий отличается. Выберете нужный вам вариант:
Установка distributed лицензирования
Так же требуется выполнить конфигурацию для 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-сервера.
Следует проверить в файле /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.51 address=/secondary.broker.ecss/10.0.10.52
glusterfs
Выполните настройку glusterfs для ecss-restfs на первом хосте (ecss1),
для этого установите пакеты glusterfs-server и attr на обоих хостах:
sudo apt install -y glusterfs-server attr
Запустите glasterd на обоих хостах кластера:
sudo systemctl start glusterd
После запуска выполните создание связи с удаленным виртуальным хостом, выполните команду на ecss1:
sudo gluster peer probe 10.0.10.52
Проверьте наличие созданной связи, выполните команду на 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:
sudo gluster volume create ecss_volume replica 2 transport tcp 10.0.10.51:/var/lib/ecss/glusterfs 10.0.10.52:/var/lib/ecss/glusterfs force
На 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.51:/var/lib/ecss/glusterfs Brick2: 10.0.10.52:/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/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-restfs и его настройка
sudo apt install -y 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.51 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
если SSW работает в кластере
В случае кластерной конфигурации, для предотвращения одновременной обработки/конвертации/удаления одного файла (.pcm/.wav/.mp3) на разных серверах ecss1/ecss2 → сервис ecss-restfs-crawler должен быть запущен только на одном из серверов кластера. Для этого на сервере ecss2 выполнить следующие команды:
sudo systemctl disable ecss-restfs-crawler.timer
sudo systemctl stop ecss-restfs-crawler.timer
ecss-media-server
sudo apt install -y 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.51 (необходимо ввести) | 10.0.20.52 (необходимо ввести) |
| [MSR Control-Channel] Введите bind-ip-адрес | 10.0.20.51 (необходимо ввести) | 10.0.20.52 (необходимо ввести) |
После формирования конфигураций по умолчанию производим проверку:
cat /etc/ecss/ecss-media-server/config.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.51" 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" g726="0" 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.51" 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" g726="0" 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" g726="11" 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):
cat /etc/ecss/ecss-media-server/conf.d/default.xml
После инсталляции пакетов в фале будет указан ip-add 127.0.0.1 , и только для одного хоста.
<?xml version="1.0"?>
<config>
<accounts>
<dynamic msr_name="msr.ecss1" realm="sip:127.0.0.1:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password"/>
</accounts>
</config>
Требуется указать в конфигурации для обоих хостов, реальные IP-add.
после инсталляции пакетов в фале будет указан только свой локальный ip-add , необходимо добавить строчку с ip-add партнера и привести содержимое файла к виду указанному снизу:
Необходимо привести содержимое файла к виду указанному снизу (в примере ecss1 имеет IP-add 10.0.20.51/ ecss2 - 10.0.20.52):
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) |
|---|---|
<?xml version="1.0"?>
<config>
<accounts>
<dynamic msr_name="msr.ecss1" realm="sip:10.0.20.51:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password">
<via dynamic-ifaces="no">
<iface name="net.20" ip="10.0.20.51"/>
</via>
</dynamic>
<dynamic msr_name="msr.ecss1" realm="sip:10.0.20.52:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password">
<via dynamic-ifaces="no">
<iface name="net.20" ip="10.0.20.52"/>
</via>
</dynamic>
</accounts>
</config>
| <?xml version="1.0"?>
<config>
<accounts>
<dynamic msr_name="msr.ecss2" realm="sip:10.0.20.52:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password">
<via dynamic-ifaces="no">
<iface name="net.20" ip="10.0.20.52"/>
</via>
</dynamic>
<dynamic msr_name="msr.ecss2" realm="sip:10.0.20.51:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password">
<via dynamic-ifaces="no">
<iface name="net.20" ip="10.0.20.51"/>
</via>
</dynamic>
</accounts>
</config>
|
В ней указаны текущие настройки, согласно которым происходит регистрация msr на core.
Основными параметрами здесь являются: msr_name и realm:
- msr_name — параметр, определяющий название msr. (рекомендуется задавать msr. и к какому хосту он принадлежит, например msr.ecss1);
- realm — определяет адрес для регистрации на ядре. Точка входа по умолчанию — порт 5000.
После изменения конфигурации файлов /etc/ecss/ecss-media-server/config.xml и /etc/ecss/ecss-media-server/conf.d/default.xml необходимо выполнить перезапуск сервиса ecss-media-server, чтобы изменения вступили в силу, следующей командой:
sudo systemctl restart ecss-media-server
ecss-web-conf
sudo apt install -y ecss-web-conf
Web-конфигуратор позволяет сделать управление системой более наглядным и комфортным. Установка web-конфигуратора не является обязательной, но рекомендуется.
Также при установке пакета ecss-web-conf автоматически устанавливается пакет ecss-subsriber-portal-ui. Приложение "Портал абонента" системы ECSS-10 позволяет абонентам системы самостоятельно управлять услугами, просматривать информацию по совершенным вызовам, активным конференциям, а также настраивать собственные IVR-скрипты для входящих вызовов. Описание работы веб-конфигуратора приведено в разделе "Портал абонента".
| Вопросы ecss-web-conf | Ответы для обоих хостов | Пример |
|---|---|---|
| Хотите ли вы использовать стандартные настройки? | Yes (значение по умолчанию) |
Проверьте возможность подключение к web интерфейсу http://10.0.20.51, пользователь/пароль - admin/password, в настоящий момент не все функции будут доступны, но web интерфейс должен быть рабочий и логин успешный.
Настройка VRRP для SIP-адаптера
Выполните настройку VRRP для SIP-адаптера, для этого на обоих хостах создайте файлы следующего содержания:
Глобального конфигурационного файла 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
Конфигурационного файла sip.conf:
sudo nano /etc/keepalived/sip.conf
| etc/keepalived/sip.conf для ecss1 | etc/keepalived/sip.conf для ecss2 |
|---|---|
vrrp_script check_sip {
script "/usr/bin/ecss_pa_sip_port 65535"
interval 2
timeout 2
}
# Конфигурация адреса для первого виртуального адреса SIP-адаптера
vrrp_instance SIP1 {
state MASTER # Исходное состояние при старте
interface net.20 # Имя сетевого интерфейса, на котором будет работать протокол VRRP
virtual_router_id 31 # Уникальный идентификатор роутера (0..255)
priority 100 # Приоритет (0..255) чем выше - тем больше
advert_int 1 # Интервал рассылки уведомлений (с)
preempt_delay 60 # Интервал ожидания мастера при старте демона (с) при исходном состоянии BACKUP
unicast_src_ip 10.0.20.51 # Собственный реальный IP-адрес
unicast_peer {
10.0.20.52 # Реальный IP-адрес соседа
}
virtual_ipaddress {
# Виртуальный IP-адрес и маска
# dev - сетевой интерфейс, на котором будет поднят виртуальный адрес
# label - метка виртуального интерфейса (для удобства идентификации)
10.0.20.31/24 dev net.20 label net.20:SIP1
}
track_script {
check_sip
}
}
# Конфигурация адреса для второго виртуального адреса SIP-адаптера
vrrp_instance SIP2 {
state BACKUP # Исходное состояние при старте
interface net.20 # Имя сетевого интерфейса, на котором будет работать протокол VRRP
virtual_router_id 32 # Уникальный идентификатор роутера (0..255)
priority 50 # Приоритет (0..255) чем выше - тем больше
advert_int 1 # Интервал рассылки уведомлений (с)
preempt_delay 60 # Интервал ожидания мастера при старте демона (с) при исходном состоянии BACKUP
unicast_src_ip 10.0.20.51 # Собственный реальный IP-адрес
unicast_peer {
10.0.20.52 # Реальный IP-адрес соседа
}
virtual_ipaddress {
# Виртуальный IP-адрес и маска
# dev - сетевой интерфейс, на котором будет поднят виртуальный адрес
# label - метка виртуального интерфейса (для удобства идентификации)
10.0.20.32/24 dev net.20 label net.20:SIP2
}
}
| vrrp_script check_sip {
script "/usr/bin/ecss_pa_sip_port 65535"
interval 2
timeout 2
}
# Конфигурация адреса для первого виртуального адреса SIP-адаптера
vrrp_instance SIP1 {
state BACKUP # Исходное состояние при старте
interface net.20 # Имя сетевого интерфейса, на котором будет работать протокол VRRP
virtual_router_id 31 # Уникальный идентификатор роутера (0..255)
priority 50 # Приоритет (0..255) чем выше - тем больше
advert_int 1 # Интервал рассылки уведомлений (с)
preempt_delay 60 # Интервал ожидания мастера при старте демона (с) при исходном состоянии BACKUP
unicast_src_ip 10.0.20.52 # Собственный реальный IP-адрес
unicast_peer {
10.0.20.51 # Реальный IP-адрес соседа
}
virtual_ipaddress {
# Виртуальный IP-адрес и маска
# dev - сетевой интерфейс, на котором будет поднят виртуальный адрес
# label - метка виртуального интерфейса (для удобства идентификации)
10.0.20.31/24 dev net.20 label net.20:SIP1
}
}
# Конфигурация адреса для второго виртуального адреса SIP-адаптера
vrrp_instance SIP2 {
state MASTER # Исходное состояние при старте
interface net.20 # Имя сетевого интерфейса, на котором будет работать протокол VRRP
virtual_router_id 32 # Уникальный идентификатор роутера (0..255)
priority 100 # Приоритет (0..255) чем выше - тем больше
advert_int 1 # Интервал рассылки уведомлений (с)
preempt_delay 60 # Интервал ожидания мастера при старте демона (с) при исходном состоянии BACKUP
unicast_src_ip 10.0.20.52 # Собственный реальный IP-адрес
unicast_peer {
10.0.20.51 # Реальный IP-адрес соседа
}
virtual_ipaddress {
# Виртуальный IP-адрес и маска
# dev - сетевой интерфейс, на котором будет поднят виртуальный адрес
# label - метка виртуального интерфейса (для удобства идентификации)
10.0.20.32/24 dev net.20 label net.20:SIP2
}
track_script {
check_sip
}
}
|
В данном случае была добавлена поддержка виртуальных интерфейсов со связью 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:
ssh admin@localhost -p 8023











































































