В данном разделе использованы специфичные для данного продукта термины, ознакомиться с ними можно здесь. Техническое задание: Требуется интеграция программного коммутатора 5 класса ECSS-10 (SSW) на 2-х физических серверах с поддержкой SIP со следующими параметрами на нагрузку группы серверов:
|
По техническому заданию требуется определить аппаратную платформу.
После определения по требованиям проекта составляем предварительную сетевую карту. Пример разнесения составляющих по адресному пространству для одной ноды:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Топологию включения сервера в сеть для обеспечения резервирования рекомендуется делать с использованием 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.
Требования:
Сетевые интерфейсы сервера также попарно включены в коммутаторы, на которых агрегация портов (port-channel) тоже настраивается в режиме LACP. Например, eth0 и eth1 каждого сервера включаются в первый коммутатор (port-channel 1 и 2), а eth2 и eth3 (port-channel 3 и 4) — во второй.
Установка SSW ECSS10 состоит из 2-х основных частей :
Подготовительной - Установка ОС Ubuntu 22.04, обновлений пакетов OC Ubuntu , "оптимизация" OC, установка дополнительных пакетов программ, подготовка сетевых интерфейсов, /etc/hosts, ssh-keygen
В этом разделе приведено описание инсталляции операционной системы, а также необходимых и дополнительных пакетов. Система ECSS-10 версии 3.17 работает под управлением ОС Ubuntu 22.04.
Для установки ОС необходимо выполнить следующее:
Настроить сетевой интерфейс для подключения к сети Интернет:
Таблица 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.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 → Подсекция |_'_'bonds: → Подсекция описания секции bonds |_'_'_'_'bonded_one: → и т.д. |_'_'_'_'...
|
| Netplan для интерфейсов сервера ecss1 (/etc/netplan/ecss_netplan.yaml) | Netplan для интерфейсов сервера ecss2 (/etc/netplan/ecss_netplan.yaml) | ||
|---|---|---|---|
|
|
Следующие настройки 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 для интерфейсов сервера ecss1 (/etc/netplan/ecss_netplan.yaml) | Netplan для интерфейсов сервера ecss2 (/etc/netplan/ecss_netplan.yaml) | ||
|---|---|---|---|
|
|
Так же рекомендуется проверить отсутствие в каталоге /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 |
После настройки netplan необходимо указать, что внутренний адрес 10.0.10.Х принадлежит соответствующему серверу ecssX. Для этого настраиваем /etc/hosts:
| Настройка hosts для ecss1 (/etc/hosts) | Настройка hosts для ecss2 (/etc/hosts) | ||
|---|---|---|---|
|
|
Теперь, если вызвать утилиту ping на ecssX, можно обратиться к соседнему серверу.
| Обращение к ecss2 с ecss1 | Обращение к ecss1 с ecss2 | ||
|---|---|---|---|
|
|
Далее следует организовать доступ между серверами через 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 |
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 |
|
| Установку пакетов требуется делать НЕ из-под пользователя ssw. |
Для установки системы 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 |
Если вы видите такое сообщение системы:
Выполните следующую команду:
|
sudo apt upgrade |
┌ версия ПО ECSS. Сейчас в заявке на сертификацию она заявлена как 3. | Мы её менять не будем до следующей сертификации или │ выпуска принципиально новой версии системы. │ │ ┌ версия System Release. Общая версия для всех компонент входящих в конкретный релиз. | | Меняем её централизовано, когда
│ │ принимаем решение о выпуске нового релиза. Релизы между собой обычно не совместимы.
┌─┴┐ ┌──┴─┐
ECSS.SysRel.SubMaj.SubMin
└──┬─┘ └──┬─┘
│ └ версия Subsystem minor. Минорную версию подсистемы устанавливает разработчик подсистемы. | Минорную версию
│ меняем при добавлении патча. Как правило, минорные версии в рамках одной мажорной версии
│ совместимы между собой и отличаются в рамках конкретных патчей.
│
└ версия Subsystem major. Мажорная версия устанавливается разработчиком подсистемы. Мажорную версию подсистемы необходимо менять при внесении в подсистему существенных изменений. Утилита установки пакетов APT анализирует версию пакета слева направо, то есть мы имеем пакет 14.14.7.7 , В случае если для конкретной ситуации требуется перейти с версии 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 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-адресов следует использовать команду:
|
Перед установкой
|
Выполняется последовательно, первым устанавливается на сервере который работает в режиме "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 |
Вывод на хостах должен быль одинаковый:
|
|
|
Установка обязательного пакета ecss-node включает в себя установку и первоначальную настройку основных подсистем.
В системе уже должен быть установлен пакет ecss-postgres-bdr-ssw |
Для установки пакета ecss-node выполните команду:
sudo apt install -y ecss-node |
Во время установки пакета создается пользователь ssw, от имени которого запускаются все сервисы ecss*. Создаются необходимые каталоги, выполняется настройка DNS, идет настройка SSL-сертификатов.
При установки так же будет установлен пакет ecss-user |
Во время установки будет предложено настроить параметры, необходимые для формирования конфигурационных файлов, примеры ответов следует ниже.
| Вопросы 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. |
Во время установки будет предложено настроить параметры, необходимые для формирования конфигурационных файлов, примеры ответов следует ниже.
| Вопросы 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:
Синхронизация времени на серверах
Пример:
Затем рекомендуется задать значение текущей системной даты, максимально приближенное к реальному времени. Для этого можно воспользоваться утилитой для ручной синхронизации времени ntpdate. Пример для установки времени с сервера ntp.ubuntu.com:
Команда date без параметров выводит на экран текущее системное время. Установка и настройка NTPКонфигурация NTP настраивается при установке пакета ecss-node. Рассмотрим настройку NTP для кластера из 2-х серверов ecss со следующими параметрами:
В ходе установки будут заданы несколько вопросов для формирования файла конфигурации. Ниже приведен пример ответа на вопросы: Необходимо ввести внешние сервера через пробел (по умолчанию ntp.ubuntu.com):
Необходимо разрешить (Yes) или запретить (No) активацию режима tos orphan (режим для кластера, в котором серверы самостоятельно регулируют синхронизацию). Если система устанавливается в кластере, то серверы ECSS должны иметь одинаковое время, даже если внешние NTP-серверы недоступны. Поэтому необходимо выбрать "Yes". Точность времени кластера по Strаtum. По умолчанию — 7: Предлагается ввести адреса соседних серверов кластера для их синхронизации между собой. В данном примере настраиваем ecss1, поэтому вводим адрес ecss2. При настройке ecss2 соответственно вводится адрес ecss1. Если серверов несколько, необходимо перечислить их через пробел.
Далее предлагается настроить адреса подсетей, из которых другим устройствам разрешено синхронизироваться с данным сервером:
Указываются сети, которые могут иметь доступ до данного сервера, чтобы другие ноды, а также прочие устройства могли синхронизировать время с данным сервером. Формат указания сетей: <адрес_сети|маска_сети>. Если сетей несколько, необходимо перечислить их через пробел.
После инсталляции настройки сохраняются в файле /etc/ecss/ecss-ntp.conf. Пример получившегося файла для сервера ecss1:
Для ecss2 файл будет аналогичным, за исключением строки пира к соседнему серверу (192.168.1.21):
В режиме Orphan серверы в кластере синхронизируются друг от друга, сами определяют мастера и следят, чтобы в рамках кластера часы шли синхронно. Все зависимые устройства в системе ECSS-10 должны синхронизироваться от серверов кластера. Если используется схема без резервирования, от настройки режима для кластера можно отказаться: тогда в конфигурационном файле будет отсутствовать секция настройки локальных серверов для синхронизации между собой.
Правильный способ — использовать команду dpkg-reconfigure:
Для просмотра информации о состоянии синхронизации используется команда ntpq –p . Если использовать дополнительный ключ –n, вместо имени сервера будет указан IP-адрес: Пример:
Описание параметров:
Значение символов перед именами серверов x — фальшивый источник по алгоритму пересечения; После старта сервиса может потребоваться около 10 минут для установления синхронизации времени с базовым NTP-сервером. Проверить состояние настроенного сервера NTP можно с помощью команды ntpdate:
Как видно, значение stratum сервера стало равно 2. |
ECSS10 поддерживает два варианта лицензирования: default и distributed. В зависимости от варианта лицензирования последовательность действий отличается. Выберете нужный вам вариант:
Остановите пакеты ecss-mycelium и ecss-ds на втором хосте. Если этого не сделать, то паспорт и лицензия могут быть не добавлены с первого раза.
Перейдите в CLI - CoCon:
Проверьте состояние системы:
Чтобы узлы системы смогли встать в работу, надо сконфигурировать систему указав имена хостов на которых развёрнуты ecss-сервисы.
Выйти из CoCon ("exit"),
Далее необходимо загрузить паспорт и лицензии в систему:
Выйдите из CoCon ("exit") И перезапустите сервисы ecss-ds и ecss-mycelium на первом и запустите остальные сервисы втором хосте:
Выполнить проверку лицензий, для этого зайти в CoCon :
Проверить наличие лицензией:
Видим активную лицензию №1 (не ECSS DEFAULT)
Выйдите из CoCon ("exit"). |
В случае использования distributed метода лицензирования вместо паспорта / лицензии (как в default методе) используется Product-Id / License-key которые генерируются Элтекс и передаются заказчику. Причины перехода следующие:
Также, чтобы устанавливать SSW на хосты с именами отличными от ecss1 / ecss2 приходилось использовать утилиту ds_db_preparator. Установить пакет ecss-elm-adapter следующей командой:
В процессе установки будут заданы вопросы конфигурации , параметры Elm сервиса будут сохранены в конфигурационном файле /etc/ecss/ecss-elm-adapter/config.exs.
После установки проверить конфигурацию можно в файле (информация в файлах различается для хостов), для примера :
Чтобы узлы системы смогли встать в работу, надо сконфигурировать систему указав имена хостов на которых развёрнуты ecss-сервисы.
Выйти из CoCon ("exit"),
Активировать 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 |
Для корректной работы кластерной конфигурации необходимо настроить работу 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 для 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 следующие действия:
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 |
sudo systemctl enable glusterd.service |
sudo systemctl enable ecss-glusterfs-mount.service |
sudo mkdir /var/lib/ecss/restfs |
Выполнить следующие команды на обоих хостах:
sudo systemctl daemon-reload |
sudo systemctl restart ecss-glusterfs-mount.service |
Проверьте, что раздел подмонтировался, для этого на обоих хостах выполните команду - df -h:
|
При просмотре информации должен появиться подмонтированный раздел —
localhost:/ecss_volume 46G 59M 44G 1% /var/lib/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. Для ее решения выполните команду:
и повторите команду проверки:
|
Осталось проверить доступность этих файлов извне, для этой проверки выполним поочередно команду на хосте 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 |
В случае кластерной конфигурации, для предотвращения одновременной обработки/конвертации/удаления одного файла (.pcm/.wav/.mp3) на разных серверах ecss1/ecss2 → сервис ecss-restfs-crawler должен быть запущен только на одном из серверов кластера. Для этого на сервере ecss2 выполнить следующие команды:
|
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". В этом случае они будут работать не корректно/игнорироваться. |
Рассмотрим секцию аккаунтов (файл default.xml):
cat /etc/ecss/ecss-media-server/conf.d/default.xml |
После инсталляции пакетов в фале будет указан ip-add 127.0.0.1 , и только для одного хоста.
Требуется указать в конфигурации для обоих хостов, реальные 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) | ||
|---|---|---|---|
|
|
В ней указаны текущие настройки, согласно которым происходит регистрация msr на core.
Основными параметрами здесь являются: msr_name и realm:
После изменения конфигурации файлов /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 |
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-адаптера, для этого на обоих хостах создайте файлы следующего содержания:
Глобального конфигурационного файла 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 | ||
|---|---|---|---|
|
|
В данном случае была добавлена поддержка виртуальных интерфейсов со связью 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)
|
Настройка SNMP описана в разделе "Управление и мониторинг по протоколу SNMP".
Выполните настройку сервера 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 |
Исходные данные
Рекомендуется использовать последние доступные версии браузеров. Рекомендуемые к использованию браузеры: Яндекс, Chrome. Для начала конфигурации системы необходимо зайти в web-конфигуратор по адресу http://<Ipadd SSW>. Для определения и регистрации в системе планируются:
Подготовка к работе
Рисунок 3 — Вход в web-конфигуратор (окно авторизации) В окне авторизации необходимо ввести значения, определенные при установке web-конфигуратора.
После входа в систему будет видна основная рабочая область с иконками приложений, а также строка состояния с доступными опциями, в частности:
Рисунок 4 — Вид рабочей области web-конфигуратора Создание учетной записи оператораПосле авторизации для повышения безопасности при эксплуатации программного коммутатора рекомендуется создание учетных записей для операторов, а также сменить пароль для пользователя admin. Для создания новой учетной записи оператора используется приложение "Управление пользователями" ("User manager"):
Рисунок 5 — Вид приложения "Управление пользователями" Нажмите кнопку "Добавить"
Рисунок 6 — Диалоговое окно создания учетной записи оператора
Рисунок 7 — Вид приложения с созданной учетной записью оператора Для смены пароля рядом с названием пользователя нажмите на кнопку редактировать. В появившемся диалоговом окне введите: 1. Старый пароль (для пользователя "admin" по умолчанию паролем является "password"); 2. Новый пароль; 3. Подтвердите новый пароль.
Рисунок 8 — Диалоговое окно редактирования учетной записи Добавление медиа-ресурсов.Для того чтобы начать работу с медиа-сервером сразу после его регистрации, необходимо активировать сетевые интерфейсы MSR. Приложение web-конфигуратора "Сетевые окончания MSR" ("MSR registrars") служит для настройки медиа-ресурсов.
Рисунок 9 — Сетевые окончания MSR Установить ipадрес для приема соединений от медиасервера, изменив значение 0.0.0.0 на реальные адреса MSR:
Создание IP-set (sip-транспорта) и присвоение его к домену
Для настройки интерфейса необходимо открыть приложение "Кластеры ("Clusters").
Рисунок 11 — Вид приложения "Кластеры" Для создания новой группы IP-адресов (IP-set) выделите кластер SIP-адаптера "sip1" и нажмите на кнопку "Свойства кластера" (или нажмите на иконку кластера двойным щелчком левой кнопки мыши). В появившемся диалоговом окне перейдите на вкладку "Транспорт". Далее нажмите кнопку "Добавить". Появится новая группа, для редактирования полей двойным щелчком кнопки мыши нажмите на нужное: 1. Переименуйте группу адресов (IP-set), например "test_set"; 2. Задайте порт, по которому будет происходить обращение к домену, например 5060; 3. Разверните вновь созданную группу нажатием на треугольник слева от названия группы; 4. Определите адрес для ноды SIP-адаптера, согласно примеру конфигурации. Для системы с резервированием укажите 10.0.20.31 и 10.0.20.32:
Рисунок 12 — Вид приложения "Кластеры/Транспорт" для кластера Нажмите кнопку "Сохранить" для применения настроек. Создание доменаДомен - Виртуальная PBX внутри нашего SSW. Таких виртуальных PBX может быть создано необходимое для проекта кол-во. Для создания домена необходимо войти в приложение "Домены" ("Domain"). В открывшемся окне требуется создать домен, для этого: 1. Нажмите кнопку "Добавить домен":
Рисунок 13 — Добавление домена в систему 2. В появившемся диалоговом окне доступны следующие настройки: Введите название домена, например "test_domain"; 3. Нажмите кнопку "Ок":
Рисунок 14 — Определение настроек нового домена 4. Нажмите кнопку "Обновить" Созданный домен будет отображаться в текущей конфигурации:
Рисунок 15 — Отображение созданного домена Для редактирования текущего домена его необходимо выбрать в системе. Для перехода в домен воспользуйтесь опцией выбора домена (см. пункт 2 на рисунке "Вид рабочей области web-конфигуратора"). После выбора домена, согласно текущей конфигурации системы, станут доступны все приложения:
Рисунок 17 — Отображение приложений в текущей конфигурации системы Для того чтобы привязать группу адресов к домену, необходимо вернуться в приложение "Домены" ("Domain"), выделить домен и перейти в настройки нажатием на кнопку "Свойства домена" или двойным нажатием левой кнопки мыши на домен. В настройках списка откройте ветку "SIP", в ней "SIP транспорт", далее выберите в поле IP set созданную группу адресов. Нажмите кнопку "Сохранить" для применения настроек.
Выбрать требуемые услуги для созданного домена, которые будут использоваться (для примера для абонентского домена транковые услуги не востребованы , и наоборот для транзитного домена не нужно указывать услуги для абонента).
Рисунок 19 — После создания нового домена, услуги отсутствуют.
Рисунок 20 — Выбор услуг для абонентов / транков нового домена.
Рисунок 21 — Список услуг теперь доступных для абонентов нового домена. Создание абонентовДля создания и редактирования параметров абонентов в системе используется приложение "Карточка абонента" ("Subscriber card").
Рисунок 22 — Вид приложения "Карточка абонента" В конфигурации возможно создание SIP-абонентов и виртуальных абонентов. Для пользователей, имеющих физическое окончание, используется функционал SIP-абонента, в то время как виртуальный абонент используется тогда, когда нужна функциональность без физических окончаний. Например, номер для обращения к ivr-скрипту. Для создания новых абонентов нужно нажать на кнопку "Добавить". В появившемся диалоговом окне укажите следующие параметры:
Рисунок 23 — Пример создания 10 абонентов в домене "test_domain"
Рисунок 24 — Пример добавления услуг для абонента Создание и применение контекстов маршрутизации для доменаМаршрутизация отвечает за поиск номера и последующую адресацию вызова. Для корректной работы системы должен быть настроен как минимум один контекст маршрутизации. Настройка маршрутизации осуществляется в приложении "Менеджер маршрутизации" ("Routing manager") .
Рисунок 25 — Вид приложения "Менеджер маршрутизации" В качестве примера создадим контекст, а затем несколько правил в нём, для этого: 1. В левой части окна в разделе "Контекст" нажмите на кнопку "Создать контекст" 2. В открывшемся диалоговом окне обозначьте имя контекста:
3. Нажмите "Сохранить контекст" Создадим 4 правила в данном контексте:
Для создания нового правила нужно выделить созданный контекст и нажать кнопку "Создать правило". В появившемся окне нужно ввести название правила. Затем сохранить вновь созданные правила.
Рисунок 27 — Создание правила контекста маршрутизации
Рисунок 28 — Определение правил На данный момент не определен транк, чтобы можно было сослаться на него в правиле, однако можно задать номера, по которым будет производится выборка. Нажав на правило rule1, перейдем в нижнюю часть экрана, в которой располагаются области для редактирования контекста маршрутизации. Условно определим, что выборка для выхода на транк будет проводиться по признакам номера вызываемого абонента (CDPN), а номера в транке должны начинаться с цифры 4. Функционально контекст маршрутизации делится на три части:
rule1: Для выхода на транк нужно правильно отредактировать каждую часть:
Чтобы настроить поле результата, нужно определить транк в системе, поэтому к настройке данного правила вернемся чуть позже. Таким же образом нужно настроить оставшиеся правила. Для rule2:
Для rule 3 допустим, что абоненты с номерами 108, 109 и 110 попадают в ivr-скрипт–информатор, прежде чем звонить далее.
Чтобы настроить поле результата, нужно определить в системе ivr-скрипт, поэтому к настройке данного правила вернемся чуть позже. Для rule 4 мы определяем правило-исключение — это правило, которое работает в случае, если любые другие правила не срабатывают.
Рисунок 29 — Пример настроек контекста маршрутизации
|
|
Для возможности использования медиаресурса и установления соединений , необходимо выполнить активизацию в команде создания медиаресурса - /system/media/resource/declare (параметр "is active"=true) или /system/media/resource/set (параметр "active"=true), если при создании активизация не была выполнена. Так же можно выполнить активизацию через веб интерфейс , приложение - сетевые окончания MSR (MSR-registrars). |
declare Для работы в режиме предварительно настроенной системы можно заранее прописать медиаресурсы, информация о которых известна. Для этого необходимо создать описание известных медиасерверов с указанием всех параметров, что позволить начать работу с медиасервером сразу после его регистрации. Команда для создания конфигурации медиасервера: Путь команды: /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; |
set Команда для изменения настроек медиаресурсов. Путь команды: /system/media/resource/set Синтаксис: set <node|*> <contact> <active|zone|site> <value> Параметры: <node|*> - имя ноды; |
Пример:
Активируем связь MSR- и Core-подсистем. Для этого пропишите команды:
/system/media/resource/set core1@ecss1 net.20@msr.ecss1 active true |
/system/media/resource/set core1@ecss2 net.20@msr.ecss2 active true |
/system/media/resource/set core1@ecss1 net.20@msr.ecss2 active true |
/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 декларируемого медиаресурса; |
Пример:
/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:39:35 │ │r│ Cc-id │ db21af │ │r│ Address │ 10.0.20.51:5700 │ │r│ Register time │ 2025/12/02 16:43:07 │ │r│ Expired │ 84 │ │r│ Iface │ net.20(10.0.20.51) │ │ │ Active │ true │ │ │ Zone │ default │ │ │ Site │ local │ │r│ MSR version │ 3.17.1.0.10 │ │r│ MSR load │ 0 │ │r│ MSR perf coef │ 1.0 │ └─┴─────────────────┴─────────────────────┘ Legend: Column F - means Flag, values r - flag for readonly parameter |
list Путь команды: /system/media/resource/list Синтаксис: list [active | all | register] Параметры: active — отображать только активные медиаресурсы (по умолчанию); |
Пример:
/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.17.1.0.10 │ 1.0 │ 0 │ db21af │ connected │ 00:40:22 │ 10.0.20.51:5700 │ net.20 │ 10.0.20.51 │ true │ default │ local │ net.20@msr.ecss1 │ registered │ 156 │ │ │ msr.ecss2 │ 3.17.1.0.10 │ 1.0 │ 0 │ 263898 │ connected │ 00:40:22 │ 10.0.20.52:5700 │ net.20 │ 10.0.20.52 │ true │ default │ local │ net.20@msr.ecss2 │ registered │ 156 │ │ core1@ecss2 │ msr.ecss1 │ 3.17.1.0.10 │ 1.0 │ 0 │ db21af │ connected │ 00:41:11 │ 10.0.20.51:5700 │ net.20 │ 10.0.20.51 │ true │ default │ local │ net.20@msr.ecss1 │ registered │ 106 │ │ │ msr.ecss2 │ 3.17.1.0.10 │ 1.0 │ 0 │ 263898 │ connected │ 00:44:00 │ 10.0.20.52:5700 │ net.20 │ 10.0.20.52 │ true │ default │ local │ net.20@msr.ecss2 │ registered │ 177 │ └─────────────┴───────────┴─────────────┴───────────┴──────┴────────┴───────────┴───────────┴─────────────────┴────────┴────────────┴────────┴─────────┴───────┴──────────────────┴────────────┴─────────┘ |
/system/media/registrar/ - команды управления регистратором для MSR медиа менеджера
set Команда для изменения общих и индивидуальных параметров. Путь команды: /system/media/registrar/set Синтаксис настройки общих параметров: set common <FIELD> <VALUE> Параметры: <FIELD> - имя настраиваемого параметра; <VALUE> - значение настраиваемого параметра Где
Cписок параметров доступных для настройки:
В общих параметрах доступна настройка времени регистрации, по умолчанию установлено 60 секунд. Пример:
Синтаксис настройки индивидуальных параметров: system/media/registrar/set private <CORE> <FIELD> <VALUE> Параметры: <CORE> - нода ядра, для которой настраивается Registrar-сервер; <FIELD> - имя настраиваемого параметра; <VALUE> - значение настраиваемого параметра. Настраиваемые параметры:
|
Установить ipадрес для приема соединений от медиасервера:
/system/media/registrar/set private core1@ecss1 listen-ip 10.0.20.51 |
/system/media/registrar/set private core1@ecss2 listen-ip 10.0.20.52 |
/system/media/registrar/set private core1@ecss1 listen-ip 10.0.20.51 Private parameter listen-ip set to 10.0.20.51 at node core1@ecss1. /system/media/registrar/set private core1@ecss2 listen-ip 10.0.20.52 Private parameter listen-ip set to 10.0.20.52 at node core1@ecss2. |
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.52 │ 5000 │ │ core1@ecss1 │ active │ true │ 10.0.20.51 │ 5000 │ └─────────────┴────────┴───────────┴────────────┴─────────────┘ |
После того как все сервисы будут запущены, ноды какое-то время будут устанавливать связь. Как только все ноды загрузятся , при выполнении запроса system-status, последует вывод следующей информации:
/system-status Checking... ┌─┬───────────────┬───────────────────────────┬───────────────────────────────┬─────────────────────┬───────┐ │ │ Node │ Release │ Erlang nodes │ Mnesia nodes │Uptime │ ├─┼───────────────┼───────────────────────────┼───────────────────────────────┼─────────────────────┼───────┤ │ │core1@ecss1 │ecss-core-3.17.1.0.1656 │core1@ecss1,core1@ecss2 │not running │43m 43s│ │ │core1@ecss2 │ecss-core-3.17.1.0.1656 │core1@ecss1,core1@ecss2 │not running │47m 5s │ │ │ds1@ecss1 │ecss-ds-3.17.1.0.1656 │ds1@ecss1,ds1@ecss2 │ds1@ecss1,ds1@ecss2 │43m 43s│ │ │ds1@ecss2 │ecss-ds-3.17.1.0.1656 │ds1@ecss1,ds1@ecss2 │ds1@ecss1,ds1@ecss2 │47m 4s │ │ │md1@ecss1 │ecss-mediator-3.17.1.0.1656│md1@ecss1,md1@ecss2 │md1@ecss1,md1@ecss2 │43m 43s│ │ │md1@ecss2 │ecss-mediator-3.17.1.0.1656│md1@ecss1,md1@ecss2 │md1@ecss1,md1@ecss2 │47m 5s │ │ │mycelium1@ecss1│ecss-mycelium-3.17.1.0.1656│mycelium1@ecss1,mycelium1@ecss2│not running │43m 43s│ │ │mycelium1@ecss2│ecss-mycelium-3.17.1.0.1656│mycelium1@ecss1,mycelium1@ecss2│not running │47m 4s │ │ │sip1@ecss1 │ecss-pa-sip-3.17.1.0.1656 │sip1@ecss1,sip1@ecss2 │sip1@ecss1,sip1@ecss2│43m 43s│ │ │sip1@ecss2 │ecss-pa-sip-3.17.1.0.1656 │sip1@ecss1,sip1@ecss2 │sip1@ecss1,sip1@ecss2│47m 5s │ └─┴───────────────┴───────────────────────────┴───────────────────────────────┴─────────────────────┴───────┘ All services are started. Active media resource selected list specific: ┌─────────────┬───────────┬─────────────┬───────────┬───────────┐ │ Node │ MSR │ MSR │ Cc-status │ Cc-uptime │ │ │ │ version │ │ │ ├─────────────┼───────────┼─────────────┼───────────┼───────────┤ │ core1@ecss1 │ msr.ecss1 │ 3.17.1.0.10 │ connected │ 00:42:49 │ │ │ msr.ecss2 │ 3.17.1.0.10 │ connected │ 00:42:48 │ │ core1@ecss2 │ msr.ecss1 │ 3.17.1.0.10 │ connected │ 00:43:38 │ │ │ msr.ecss2 │ 3.17.1.0.10 │ connected │ 00:46:27 │ └─────────────┴───────────┴─────────────┴───────────┴───────────┘ Alarms list on md1: ┌──────────────┬───────────────┬───────────────┬────────────────────┬────────────────────┬────────────────────┬────────────────────────────────────────────────────────────┐ │ Date │ Severity │ Location │ Cause │ Class │ Instance │ Message │ ├──────────────┼───────────────┼───────────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────────────────────────────────────────────┤ └──────────────┴───────────────┴───────────────┴────────────────────┴────────────────────┴────────────────────┴────────────────────────────────────────────────────────────┘ Selected: 0 Total: 0 |
В примере выше видно, что ноды вошли в кластер и MSR зарегистрировались на ноде ecss-core.
Произведите настройку адаптера SIP согласно ТЗ:
/cluster/adapter/sip1/sip/network/set ip_set test_set node-ip node = sip1@ecss1 ip = 10.0.20.31 |
/cluster/adapter/sip1/sip/network/set ip_set test_set node-ip node = sip1@ecss2 ip = 10.0.20.32 |
/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. /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. /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. |
Создайте Домен (виртуальную АТС) и присвойте ему созданную выше группу (IP-set) настроек SIP-адаптера:
/domain/declare test_domain --add-domain-admin-privileges --add-domain-user-privileges |
/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 /domain/test_domain/sip/network/set ip_set [test_set] Property "ip_set" successfully changed from: [] to ["test_set"]. |
Установка всех услуг указных в лицензии:
/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 |
После установки в систему всех услуг, администратор системы должен открыть доступ на управление услугами оператору Домена (виртуальной АТС). Для этого использовать команду разрешения оператору Домена (виртуальной АТС) "test_domain" управлять всеми услугами :
/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. |
Для возможности применения пакета услуг у абонентов сразу после создания, необходимо настроить политику применения лицензионных пакетов услуг (детальную информацию вы можете посмотреть здесь )
Создать политику применения лицензии с именем -"new_sub"
/domain/test_domain/ss/licence/politics/declare new_sub "Задаются при создании абонента" |
/domain/test_domain/ss/licence/politics/declare new_sub "Задаются при создании абонента" Licence politic new_sub successfully declared. |
Задать имя пакета услуг дополнительных сервисов, для этого использовать следующие команды :
/cluster/storage/ds1/licence/show-licence 1 |
нас интересует следующая информация :
/cluster/storage/ds1/licence/show-licence 1
SSW ID < Имя SSW ID >
Description Лицензия для тестирования Локация 2.
. . .
Supplementary Services licence package(s)
name 'ECSS-ADV'
limit 50000
description "Весь пакет услуг"
SS list [1,2,3,4,5]
. . .
|
имя пакета услуг в примере "ECSS-ADV".
Добавить в созданную политику пакет лицензионных услуг с именем "ECSS-ADV"(именно так он описан в лицензии):
/domain/test_domain/ss/licence/politics/package-add new_sub ECSS-ADV |
/domain/test_domain/ss/licence/politics/package-add new_sub ECSS-ADV Licence packages ["ECSS-ADV"] successfully added to politic new_sub. |
Пакет добавлен, но в настоящий момент политика не активна (не может быть применена к абоненту). Для активации политики new_sub выполнить следующую команду:
/domain/test_domain/ss/licence/politics/activate new_sub |
/domain/test_domain/ss/licence/politics/activate new_sub Licence politic new_sub successfully activated. |
Теперь при создании абонентов можем использовать дополнительные услуги.