Примеры пошаговой первоначальной настройки ECSS-10
В данном разделе приведены примеры инсталляции и настройки ECSS для системы с одиночным сервером и для кластера из двух серверов.
Первоначальная установка системы без резервирования с одним сервером
Исходные данные
Исходные данные
В данном разделе использованы специфичные для данного продукта термины, ознакомиться с ними можно здесь.
Требуется интеграция программного коммутатора 5 класса ECSS-10 (SSW) на 1 физическом сервере с поддержкой SIP со следующими параметрами на нагрузку:
- Максимальное количество абонентов 15000 (MUL — Max user limit)
- Максимальное количество одновременных соединений 2000 (MCL — Max call limit)
- Резервирование системы не требуется.
- Количество сетевых интерфейсов ethernet — 4.
По техническому заданию требуется определить аппаратную платформу
Таблица 1. Рекомендуемые аппаратные решения
№ | Требования к серверам SSW | Серия аппаратного продукта | ||||
---|---|---|---|---|---|---|
Light | Light+ | Midi | Heavy | Super Heavy | ||
1 | Характеристики системы | |||||
1.1 | Максимальное количество абонентов | 3000 | 5000 | 10000 | 20000 | 40000 |
1.2 | Максимальная нагрузка одновременных соединений class 5 | 500 | 800 | 1500 | 3000 | 6000 |
1.3 | Максимальная нагрузка одновременных соединений class 4 | 1500 | 2400 | 4500 | 9000 | 20000 |
2 | Характеристики сервера | |||||
2.1 | Марка | HP (Lenovo) | HP (Lenovo) | HP (Lenovo) | HP (Lenovo) | HP (Lenovo) |
2.2 | Серия | DL20 Gen10 (SR250) | DL20 Gen10 (SR250)/DL 360 Gen10 (SR530) | DL360 Gen10 (SR530/SR630) | DL360 Gen10 (SR630) | DL 360 Gen10 (SR630) |
2.3 | Процессор | Intel Xeon E-2236 | Intel Xeon E-2276G/Intel Xeon 4214 | Intel Xeon 5220 | Intel Xeon 6240 | Intel Xeon 8268 |
2.4 | Количество процессоров | 1 | 1 | 1 | 2 | 2 |
2.5 | Объем ОЗУ | 8 Gb | 12 Gb | 16 Gb | 24 Gb | 64Gb |
2.6 | HDD | От 3X500 SATA | От 3X500 SATA | От 3x300 Gb SAS (от 10000 rpm) | От 3x600 Gb SAS | От 6x800 Gb SSD, 2x300 Gb M.2 SSD |
2.7 | RAID | No raid board | No raid board | HW Raid, от 1Gb cache+battery | HW Raid, от 1Gb cache+battery | HW Raid, от 2Gb Flash cache, поддержка RAID-5 |
3 | Дополнительные комплектующие сервера (в базовых комплект не входят) | |||||
3.1 | Лицензия на удалённое управление | по желанию | по желанию | + | + | + |
3.2 | Резервный источник питания | по желанию | по желанию | + | + | + |
3.3 | Организация хранилища записей разговоров | Дополнительные HDD объединенные в RAID-5 | Дополнительные HDD объединенные в RAID-5 | Лицензия на HW Raid с поддержкой RAID-5, дополнительные HDD для хранения записей | Лицензия на HW Raid с поддержкой RAID-5, дополнительные HDD для хранения записей | Лицензия на HW Raid с поддержкой RAID-5, дополнительные HDD для хранения записей |
Таблица 2. Пример составления аппаратных требований
№ | Устройство | Требуемый ресурс | Серия аппаратного продукта | |
---|---|---|---|---|
MCL | MUL | |||
1 | Сервер 1 | 2500 | 15000 | Heavy |
После определения по требованиям проекта составляем предварительную сетевую карту
Таблица 3. Пример разнесения составляющих по адресному пространству для одной ноды
№ | Имя сервера (хоста) | Роль | Интерфейс | Адрес | Порт |
---|---|---|---|---|---|
Внешние адреса программного коммутатора | |||||
1 | ecss1 | Адрес сервера | bond2_ecss1_mgm | 10.0.3.237/24 | - |
2 | ecss1 | Адрес протокольного адаптера | bond1_ecss1_pa | 10.0.3.238/24 | - |
Внутренние адреса программного коммутатора | |||||
3 | ecss1 | Адрес ядра (ecss-core) | lo | 127.0.0.1/24 | 5000 |
4 | ecss1 | Адрес медиа-сервера (ecss-media-server (MSR)) | lo | 127.0.0.1/24 | 5040 |
5 | ecss1 | Адрес базы данных MySQL (ecss-mysql) | lo | 127.0.0.1/24 | 3034 |
Рисунок 1 — Схема организации связи
Программный коммутатор устанавливается на базе одной серверной платформы или их группы , у каждого отдельно взятого хоста должен быть задан внешний адрес для возможности обращения и управления в рамках обслуживаемой программным коммутатором сети. Адресный диапазон формируется исходя из количества серверов. В случае, когда программный коммутатор используется на одном хосте ему присваивается один сетевой адрес (например: 10.0.3.237 / 24). Затем планируется адресное пространство под протокольные адаптеры программного коммутатора. Адреса адаптеров являются внешними и следуют после назначенных адресов всех серверов. Например: 10.0.3.237 /24 — адрес сервера, тогда адрес адаптера — 10.0.3.238 /24. 4 сетевых интерфейса объединяются попарно в bonding интерфейсы, другими словами выполняется агрегирование интерфейсов по протоколу LACP. Таким образом интерфейсы eth0 и eth1 объединяются в интерфейс bond1_ecss1_pa.
Внутри серверной платформы существует адресная структура и используются внутренние адреса для взаимодействия между подсистемами (нодами) в кластере. Например: внутренний адрес для кластера на одном сервере: 127.0.0.1 при этом ядро (ecss-core) взаимодействует с сервером обработки мультимедиа данных (ecss-media-server), и их взаимодействие происходит с использованием одного и того же адреса, но у каждой программной части свой транспортный порт: ecss-core — 5000, ecss-msr — 5040.
Для всех нод кластера определяется единый адрес для обращения к базе данных MySQL. Например адрес ecss-mysql 127.0.0.1 Таким образом выполняется условие единообразия, при котором все ноды кластера имеют полностью одинаковые данные о текущем состоянии динамических составляющих программного коммутатора (например история вызовов).
Установка и настройка программного коммутатора
Согласно заданным параметрам в техническом задании выполним установку программного коммутатора. В данном примере считается, что уже установлена необходимая операционная система. О том как это сделать, смотрите здесь.
Подготовка сетевых интерфейсов системы
Согласно ТЗ система имеет 4 сетевых интерфейса. О их состоянии можно посмотреть с помощью команды ifconfig или ip a:
eth0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500 ether 36:10:28:73:63:01 txqueuelen 1000 (Ethernet) eth1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500 ether 36:10:28:73:63:01 txqueuelen 1000 (Ethernet) eth2: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500 ether be:77:ea:52:4d:39 txqueuelen 1000 (Ethernet) eth3: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500 ether be:77:ea:52:4d:39 txqueuelen 1000 (Ethernet) lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 |
Настройка начинается с настройки сетевых интерфейсов. В Ubuntu18 для настройки используется утилита netplan.
Данная утилита позволяет настроить сетевую конфигурацию и затем загрузить ее в систему с помощью сетевого менеджера networkd или NetworkManager.
sudo nano /etc/netplan/ecss_netplan.yaml |
Пример настройки файла ecss-netplan.yaml:
Netplan для интерфейсов сервера ecss1 (/etc/netpla/ecss_netplan.yaml) |
---|
# Netplan для хоста ecss1 тестового программного коммутатора |
В конфигурациях для каждого хоста, в первую очередь мы объявляем секцию ethernets, в которой описываются ethernet интерфейсы, существующие в системе, и, которые, будут использоваться в дальнейшем. Важно для каждого интерфейса отключить использование динамического распределения адресов (DHCP).
Следующим разделом описываются агрегированные каналы — bonds. В нашем случае используется режим резерва 1 к 1 (active - backup) при котором второй интерфейс находится в резерве и не используется. Опционально определяются шлюзы для связи с внешним миром и адреса DNS серверов, а так же непосредственно IP адреса для каждого интерфейса.
ВАЖНО
Обратите внимание, что во время редактирования netplan необходимо соблюдать правила разметки YAML:
- Обязательное наличие двух пробелов перед каждой строкой (кроме network).
- Каждая подсекция дополнительно сдвигается на 2 пробела :
→ Секция |network
→ Подсекция |_'_'bonds:
→ Подсекция описания секции bonds |_'_'_'_'bonded_one:
→ и.т.д |_'_'_'_'...
- Перед знаком ":" нет пробела, после — один пробел.
- Перед знаком "-" количество пробелов такое, как будто начинается новый подраздел, после — один пробел.
Применим установленные параметры командой:
sudo netplan apply |
Выведем настроенные интерфейсы с помощью ifconfig / ip a:
Вывод ifconfig для ecss1 |
---|
bond1_ecss1_pa: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500 |
Обновление программного обеспечения операционной системы
Для установки системы ECSS-10 необходимо добавить репозиторий ЭЛТЕКС:
sudo sh -c "echo "deb [arch=amd64] http://archive.eltex.org/ssw/bionic/3.14 stable main extras external" > /etc/apt/sources.list.d/eltex-ecss10-stable.list" |
Обратите внимание, что требуется указать верную версию операционной системы при добавлении репозитория Eltex. Если установка происходит на Ubuntu 18.04, то необходимо указать bionic как приведено в примере. Однако, если ECSS-10 устанавливается на Astra Linux необходимо указать соответствующие репозитории smolensk:
sudo sh -c "echo "deb [arch=amd64] http://archive.eltex.org/ssw/smolensk/3.14 stable main extras external" > /etc/apt/sources.list.d/eltex-ecss10-stable.list"
sudo sh -c "echo "http://archive.eltex.org astra smolensk smolensk-extras" > /etc/apt/sources.list.d/eltex-ecss10-stable.list"
Далее необходимо выполнить импорт ключа командой:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 33CB2B750F8BB6A5 |
Для обновления ОС необходимо выполнить команды:
sudo aptitude update |
Установка и настройка программного обеспечения
ВАЖНО
Установку пакетов требуется делать НЕ из под пользователя ssw.Устанавливаем все предложенные пакеты:
sudo aptitude install dnsmasq ntp tcpdump ssh vlan ethtool htop iotop mc minicom mtr-tiny nmap pptpd pv screen tftpd vim tshark cpanminus gnuplot |
Установка пакета ecss-mysql
Установка начинается с развертывания MySQL сервера и интеграции базы данных ecss-mysql.
Для установки выполняем команду:
sudo aptitude install ecss-mysql |
При инсталляции пакеты будут запрошены следующие данные:
Вопросы | Ответы |
---|---|
Адресная маска для MySQL (IP pattern for MySQL permission) | 127.0.0.% |
Логин пользователя (Login for MySQL root) | root |
Пароль пользователя MySQL (Password for MySQL root) | PASSWORD |
Изменение пути по умолчанию — согласиться с изменением конфигурационного файла для внесения пути до баз данных ecss-mysql введя "Y".
Базы данных mysql, используемых системой ECSS-10, после установки, будут храниться по пути /var/lib/ecss-mysql. Проверяем наличие файлов в папке:
ls -l /var/lib/ecss-mysql/ |
Проверяем, что сервер запущен:
sudo systemctl status mysql ● mysql.service - MySQL Community Server |
Установка пакета ecss-node
Устанавливаем пакет ecss-node
|
При его установке будет предложено настроить конфигурацию:
Вопросы | Ответы |
---|---|
Выключить ежедневные обновления (Do you want turn off apt-daily update ?) | Yes |
Установить настройки по умолчанию для БД (Set DB config to default ?) | Yes |
Использовать настройки NTP для кластера (NTP: Do you want use settings for cluster ?) | No |
Внешний NTP сервер (External NTP servers through a space ) | ntp.ubuntu.com |
Использовать локальный сервер? (NTP: Do you want use local server ? ) | No |
Адреса и маски адресов которые должны иметь доступ к NTP (NTP: Addresses and Masks of Network, which must have access to the ntp through a space) | |
Установить приоритет NTP локального сервера ( NTP: Set stratum for local server) | 5 |
Входной порт для портала абонента (Input port for subscriber portal) | 8080 |
Введите адрес MySQL БД (Input host for MySQL DB) | 127.0.0.1 |
Хост или имя хоста для доступа к данным в бд порталу абонентов (Input host or hostname for ecss_subscribers DB) | sp.mysql.ecss |
Имя пользователя для базы данных портала абонентов (Input username for ecss_subscribers DB) | subscribers |
Пароль для базы данных портала абонентов (Input password for ecss_subscribers DB) | subscribers |
Введите имя домена (виртуальной АТС) по умолчанию (Input default domain name) | d.local |
Введите адрес для доступа из портала абонента (Input IP address or hostname for SSW with http_terminal to connect from subscribers_portal) | 127.0.0.1 |
Порт WEB терминала (Input port SSW http_terminal) | 9999 |
Логин для доступа к WEB терминалу (Input login for SSW http_terminal) | admin |
Пароль для доступа к WEB терминалу (Input password for SSW http_terminal) | PASSWORD |
Адрес входного взаимодействия (Input trike cowboy url) | 127.0.0.1:8086 |
Адрес ecss-core (IP address of core) | 127.0.0.1 |
Установить утилиты для работы с cdr | No |
Установка пакетов ecss-media-server, ecss-restf, ecss-web-conf
Далее устанавливаются пакеты ecss-media-server, ecss-restf, ecss-web-conf и.др в любом порядке:
|
При его установке будет предложено настроить конфигурацию:
Вопросы | Ответы |
---|---|
Создать конфигурацию? ("Create configure") | No |
|
При его установке будет предложено настроить конфигурацию:
Вопросы | Ответы |
---|---|
Использование функции TTS (Use TTS service) | No |
Настройка телефонной книги (Configure phone book) | No |
Настроить сервис определения речи (Configure speech recognition service) | No |
Включить полное логирование restfs (Turn on full debug log restfs) | No |
|
При его установке будет предложено настроить конфигурацию:
Вопросы | Ответы |
---|---|
Указать доменное имя или адрес для базы данных MySQL WEB интерфейса (Input IP address or hostname of MySQL db for web-conf DB) | 127.0.0.1 |
Указать порт для базы данных MySQL WEB интерфейса (Input port of MySQL db for web-conf DB | 3306 |
Указать доменное имя или адрес для подключения к WEB интерфейсу (Input IP address or hostname for ECSS-10 with http_terminal) | 127.0.0.1 |
Указать порт для WEB терминала программного коммутатора (Input port SSW http_terminal) | 9999 |
Указать логин для WEB терминала(Input login for SSW http_terminal) | admin |
Указать пароль для WEB терминала(Input password for SSW http_terminal) | password |
Настройка snpmd
Настройка snmp описана здесь.
Настройка безопасности. SSH
Выполняем настройку сервера SSH:
sudo nano /etc/ssh/sshd_config |
Укажем в конфигурационном файле порт и адрес по которому можно обратиться к серверу:
Настройка ssh для ecss1(/etc/ssh/sshd_config) |
---|
# This is the sshd server system-wide configuration file. See # 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.
systemctl restart ssh.service |
Настройка начальной конфигурации
Запускаем необходимые сервисы.
ВАЖНО
Перед началом работы проверьте наличие Token в системе.Запускаем пакеты ecss-mycelium и ecss-ds на первом хосте:
sudo systemctl start ecss-mycelium |
Переходим в CLI:
ssh admin@localhost -p 8023 |
Проверяем состояние системы
system-status
|
Далее необходимо установить паспорт и лицензии в систему:
admin@[mycelium1@ecss1]:/$ cluster/storage/ds1/licence/set-passport <passport> |
Выходим из cocon выполняем перезагрузку подсистем ecss-mycelium и ecss-ds, а затем подключаем оставшиеся в порядке ecss- core, ecss-pa-sip, ecss-media-server, ecss-restfs, ecss-mediator, ecss-web-conf.
sudo systemctl start ecss-core ecss-pa-sip ecss-mediator ecss-media-server ecss-restfs ecss-web-conf |
Возвращаемся в CoCon.
После устанавливается связь MSR и Core подсистем. Для этого прописывается команда:
admin@[mycelium1@ecss1]:/$ /system/media/resource/declare core1@ecss1 iface MSR.ecss1 localhost default local true |
Для проверки выполняем команду system-status и видим вывод:
admin@[mycelium1@ecss1]:/$ system-status |
Производим настройку адаптера SIP согласно техническому заданию. Определяем группу IP адресов (IP-set)
admin@[mycelium1@ecss1]:/$ /cluster/adapter/sip1/sip/network/set ip_set test_set node-ip node = sip1@ecss1 ip = 10.0.3.238 |
Далее создаем домен и присваиваем ему созданную группу (IP-set) настроек SIP адаптера:
admin@[mycelium1@ecss1]:/$ domain/declare test_domain --add-domain-admin-privileges --add-domain-user-privileges |
После создания домена настраиваем:
Первоначальная установка системы с резервированием в кластере из двух серверов
Исходные данные
Исходные данные
В данном разделе использованы специфичные для данного продукта термины, ознакомиться с ними можно здесь.
Техническое задание:
Требуется интеграция программного коммутатора 5 класса ECSS-10 (SSW) на 2 физических серверах с поддержкой SIP со следующими параметрами на нагрузку группы серверов:
- Максимальное количество абонентов 15000 (MUL — Max user limit);
- Максимальное количество одновременных соединений 2000 (MCL — Max call limit);
- Требуется полный резерв системы ecss (все ноды резервируется на втором сервере);
- Количество сетевых интерфейсов ethernet — 4.
По техническому заданию требуется определить аппаратную платформу
Таблица 1. Рекомендуемые аппаратные решения
№ | Требования к серверам SSW | Серия аппаратного продукта | ||||
---|---|---|---|---|---|---|
Light | Light+ | Midi | Heavy | Super Heavy | ||
1 | Характеристики системы | |||||
1.1 | Максимальное количество абонентов | 3000 | 5000 | 10000 | 20000 | 40000 |
1.2 | Максимальная нагрузка одновременных соединений class 5 | 500 | 800 | 1500 | 3000 | 6000 |
1.3 | Максимальная нагрузка одновременных соединений class 4 | 1500 | 2400 | 4500 | 9000 | 20000 |
2 | Характеристики сервера | |||||
2.1 | Марка | HP (Lenovo) | HP (Lenovo) | HP (Lenovo) | HP (Lenovo) | HP (Lenovo) |
2.2 | Серия | DL20 Gen10 (SR250) | DL20 Gen10 (SR250)/DL 360 Gen10 (SR530) | DL360 Gen10 (SR530/SR630) | DL360 Gen10 (SR630) | DL 360 Gen10 (SR630) |
2.3 | Процессор | Intel Xeon E-2236 | Intel Xeon E-2276G/Intel Xeon 4214 | Intel Xeon 5220 | Intel Xeon 6240 | Intel Xeon 8268 |
2.4 | Количество процессоров | 1 | 1 | 1 | 2 | 2 |
2.5 | Объем ОЗУ | 8 Gb | 12 Gb | 16 Gb | 24 Gb | 64Gb |
2.6 | HDD | От 3X500 SATA | От 3X500 SATA | От 3x300 Gb SAS (от 10000 rpm) | От 3x600 Gb SAS | От 6x800 Gb SSD, 2x300 Gb M.2 SSD |
2.7 | RAID | No raid board | No raid board | HW Raid, от 1Gb cache+battery | HW Raid, от 1Gb cache+battery | HW Raid, от 2Gb Flash cache, поддержка RAID-5 |
3 | Дополнительные комплектующие сервера (в базовых комплект не входят) | |||||
3.1 | Лицензия на удалённое управление | по желанию | по желанию | + | + | + |
3.2 | Резервный источник питания | по желанию | по желанию | + | + | + |
3.3 | Организация хранилища записей разговоров | Дополнительные HDD объединенные в RAID-5 | Дополнительные HDD объединенные в RAID-5 | Лицензия на HW Raid с поддержкой RAID-5, дополнительные HDD для хранения записей | Лицензия на HW Raid с поддержкой RAID-5, дополнительные HDD для хранения записей | Лицензия на HW Raid с поддержкой RAID-5, дополнительные HDD для хранения записей |
Таблица 2. Пример составления аппаратных требований
№ | Устройство | Требуемый ресурс | Серия аппаратного продукта | |
---|---|---|---|---|
MCL | MUL | |||
1 | Сервер 1 | 2000 | 15000 | Heavy |
2 | Сервер 2 | Heavy |
После определения по требованиям проекта составляем предварительную сетевую карту
Таблица 3. Пример разнесения составляющих по адресному пространству для одной ноды
№ | Имя сервера (хоста) | Роль | Интерфейс | Адрес | Порт |
---|---|---|---|---|---|
Внешние адреса программного коммутатора | |||||
1 | ecss1 | Интерфейс управления сервером (порт 2000 ssh) | bond2_ecss1_mgm | 10.0.3.237/24 | 2000 |
2 | ecss2 | Интерфейс управления сервером (порт 2000 ssh) | bond2_ecss2_mgm | 10.0.3.240/24 | 2000 |
3 | ecss1 | Интерфейс программного адаптера хоста ecss1 (ecss_pa_sip) | bond1_ecss1_pa | - | - |
4 | ecss2 | Интерфейс программного адаптера хоста ecss2 (ecss_pa_sip) | bond1_ecss2_pa | - | - |
5 | ecss1 | Виртуальный адрес программного адаптера хоста ecss1 | VRRP:SIP1_Mr | 10.0.3.238/24 | - |
6 | ecss2 | Виртуальный адрес программного адаптера хоста ecss2 | VRRP:SIP2_Mr | 10.0.3.241/24 | - |
7 | ecss1 | Запасной виртуальный адрес программного адаптера хоста ecss2 на хосте ecss1 | VRRP:SIP2_Bup | 10.0.3.241/24 | - |
8 | ecss2 | Запасной виртуальный адрес программного адаптера хоста ecss1 на хосте ecss2 | VRRP:SIP1_Bup | 10.0.3.238/24 | - |
Внутренние адреса программного коммутатора | |||||
9 | ecss1 | Внутренний адрес хоста ecss1 | vlan2 | 192.168.1.1/24 | - |
10 | ecss2 | Внутренний адрес хоста ecss2 | vlan2 | 192.168.1.2/24 | - |
11 | ecss1 | Адрес ядра (ecss-core) | vlan2 | 192.168.1.1/24 | 5000 |
12 | ecss2 | Адрес ядра (ecss-core) | vlan2 | 192.168.1.2/24 | 5000 |
13 | ecss1 | Адрес медиа-сервера (ecss-media-server (MSR)) | vlan2 | 192.168.1.1/24 | 5040 |
14 | ecss2 | Адрес медиа-сервера (ecss-media-server (MSR)) | vlan2 | 192.168.1.2/24 | 5040 |
15 | ecss1 | Виртуальный адрес базы данных MySQL (ecss-mysql) | vlan2:mysql (VRRP) | 192.168.1.10/24 | 3306 |
Рисунок 2 — Схема организации связи
Программный коммутатор устанавливается на базе группы серверных платформ , у каждого отдельно взятого хоста должен быть задан внешний адрес для возможности обращения и управления в рамках обслуживаемой программным коммутатором сети. Адресный диапазон формируется исходя из количества хостов. В случае, когда программный коммутатор используется на нескольких хостах ему присваивается один сетевой адрес для одного хоста (например: 10.0.3.237 / 24 , 10.0.3.240 /24). Затем планируется адресное пространство под протокольные адаптеры программного коммутатора. Адреса адаптеров являются внешними и следуют после назначения адреса для каждого хоста. Например: 10.0.3.237 /24 — адрес первого хоста (ecss1), тогда адрес адаптера — 10.0.3.238 /24, аналогично для второго (ecss2) — 10.0.3.240/24 и 10.0.3.241/24.
Внутри серверной платформы существует адресная структура и используются внутренние адреса для взаимодействия между подсистемами (нодами) в кластере. Например: внутренний адрес для группы нод на первом сервере: 192.168.1.1/24 при этом ядро (ecss-core) взаимодействует с сервером обработки мультимедиа данных (ecss-media-server), и их взаимодействие происходит с использованием одного и того же адреса, но у каждой программной части свой транспортный порт: ecss-core — 5000, ecss-msr — 5040. Более того, в примере будет использоваться VLAN, чтобы отделить внутренний трафик от основного.
Для всех нод кластера определяется единый адрес для обращения к базе данных ecss-mysql. Например: 192.168.1.10/24 Таким образом выполняется условие единообразия , при котором все ноды кластера имеют полностью одинаковые данные о текущем состоянии динамических составляющих программного коммутатора (например история вызовов). Резервирование интерфейсов выполняется с помощью объединения в bonding интерфейсы нескольких каналов, другими словами выполняется агрегирование интерфейсов по протоколу LACP. На выходе имеем два агрегированных интерфейса: bond1_ecss1_pa, bond2_ecss1_mgm, которые включают в себя несколько интерфейсы eth0, eth1 и eth2, eth3 соответственно, которые являются каналами к основному (switch1) и резервному (switch 2) коммутаторам. Резервирование адресов выполняется с помощью VRRP (keepalived) для MySQL и некоторых пакетов ecss-node. При данном резерве для интерфейса программного адаптера назначается виртуальный адрес, который в случае отказа одного из хостов будет восстановлен на другом, поэтому для каждого хоста имеется набор виртуальных интерфейсов, поверх основного агригированного канала. Так, для ecss1 имеем интерфейс VRRP:SIP1_Mr (Master) и запасной - VRRP:SIP2_Bup (Backup), который включается только в случае отказа соответствующего интерфейса на ecss2 (VRRP:SIP2_Mr) . Отдельно, для MySQL задается виртуальный адрес, который будет "переезжать" между хостами, при чем тот хост, который первым поднял сервер MySQL и становится мастером, таким образом адрес 192.168.1.10 является виртуальным и поднимается поверх интерфейса vlan2 по средствам виртуального интерфейса vlan2:mysql. Пакет ecss-restfs резервируется по средствам объединения хранилищ с использованием GlusterFS. Создается устойчивый кластер и задается директория которая будут реплицировать хосты между собой.
Резервирование программной части может выполняться по различным схемам, например (в таблицах указаны внутренние адреса):
ecss-node и ecss-mysql на разных хостах, mysql с резервом
ecss1 host-mysql-1 host-mysql-2 ecss-node 192.168.1.1 ecss-mysql 192.168.1.2 192.168.1.3
ecss-node и ecss-mysql на одном хосте, mysql с резервом
ecss1 host-mysql-1 ecss-node 192.168.1.1 ecss-mysql 192.168.1.1 192.168.1.2
ecss-node и ecss-mysql на одном хосте, node с резервом mysql нет
ecss1 ecss2 ecss-node 192.168.1.1 192.168.1.2 ecss-mysql 192.168.1.1
ecss-node и ecss-mysql на одном хосте, node с резервом и mysql с резервом
ecss1 ecss2 ecss-node 192.168.1.1 192.168.1.2 ecss-mysql 192.168.1.1 192.168.1.2
При этом ecss-node так же можно разбить на отдельные ноды (ecss-core, ecss-pa-sip и.др) и по специальной лицензии вынести на различные хосты.
В данном примере будет отработана схема:
ecss1 | ecss2 | |
---|---|---|
ecss-node | 192.168.1.1 | 192.168.1.2 |
ecss-mysql | 192.168.1.1 | 192.168.1.2 |
Настройка сетевых интерфейсов
Согласно заданных параметров в техническом задании выполним установку программного коммутатора. В данном примере считается, что уже установлена необходимая операционная система. О том как это сделать, смотрите здесь.
Настройка netplan
Настройка начинается с настройки сетевых интерфейсов. В Ubuntu18 для настройки используется утилита netplan.
sudo nano /etc/netplan/ecss_netplan.yaml |
Netplan для интерфейсов сервера ecss1 (/etc/netplan/ecss_netplan.yaml) | Netplan для интерфейсов сервера ecss2 (/etc/netplan/ecss_netplan.yaml) |
---|---|
#Netplan для первой ноды тестового программного коммутатора с резервированием # Обратите внимание на обязательное наличие двух пробелов в каждой строке (кроме строки секции network) # Без пробелов система будет выдавать ошибку! network: version: 2 # Версия netplan renderer: networkd # Исполнитель конфигураций netplan ethernets: # Раздел описания интерфейсов ethernet eth0: # Название интерфейса dhcp4: no # Отключаем на интерфейсе динамическое распределение IPv4 адреса eth1: dhcp4: no eth2: dhcp4: no eth3: dhcp4: no bonds: # Раздел описания связанных (bonding) интерфейсов bond1_ecss1_pa: # Название bonding интерфейса !! В имени не может быть более 15 символов !! interfaces: [eth0, eth1] # Секция определения связанного интерфейса -> # -> !! Внимание после запятой обязательно наличие пробела !! parameters: # Раздел определения параметров связанного интерфейса mode: active-backup # Режим резервирования 1:1 mii-monitor-interval: 100 optional: false gateway4: 10.0.3.1 # Секция определения шлюза nameservers: addresses: [8.8.8.8, 8.8.4.4] bond2_ecss1_mgm: interfaces: [eth2, eth3] addresses: [10.0.3.237/24] parameters: mode: active-backup mii-monitor-interval: 100 optional: false gateway4: 10.0.3.1 nameservers: addresses: [8.8.8.8, 8.8.4.4] vlans: # Раздел описания vlan vlan2: # Внутреннее взаимодействие id: 2 link: bond1_ecss1_pa addresses: [192.168.1.1/24] routes: - to: 192.168.1.2/24 via: 192.168.1.1 on-link: true | #Netplan для второй ноды тестового программного коммутатора с резервированием # Обратите внимание на обязательное наличие двух пробелов в каждой строке (кроме строки секции network) # Без пробелов система будет выдавать ошибку! network: version: 2 # Версия netplan renderer: networkd # Исполнитель конфигураций netplan ethernets: # Раздел описания интерфейсов ethernet eth0: # Название интерфейса dhcp4: no # Отключаем на интерфейсе динамическое распределение IPv4 адреса eth1: dhcp4: no eth2: dhcp4: no eth3: dhcp4: no bonds: # Раздел описания связанных (bonding) интерфейсов bond1_ecss2_pa: # Название bonding интерфейса !! В имени не может быть более 15 символов !! interfaces: [eth0, eth1] # Секция определения связанного интерфейса -> # -> !! Внимание после запятой обязательно наличие пробела !! parameters: # Раздел определения параметров связанного интерфейса mode: active-backup # Режим резервирования 1:1 mii-monitor-interval: 100 optional: false gateway4: 10.0.3.1 # Секция определения шлюза nameservers: addresses: [8.8.8.8, 8.8.4.4] bond2_ecss1_mgm: interfaces: [eth2, eth3] addresses: [10.0.3.240/24] parameters: mode: active-backup mii-monitor-interval: 100 optional: false gateway4: 10.0.3.1 nameservers: addresses: [8.8.8.8, 8.8.4.4] vlans: # Раздел описания vlan vlan2: # Внутреннее взаимодействие id: 2 link: bond1_ecss2_pa addresses: [192.168.1.2/24] routes: - to: 192.168.1.1/24 via: 192.168.1.2 on-link: true |
В конфигурациях для каждого хоста, в первую очередь мы объявляем секцию ethernets, в которой описываются ethernet интерфейсы, существующие в системе, и, которые, будут использоваться в дальнейшем. Важно для каждого интерфейса отключить использование динамического распределения адресов (DHCP).
Следующим разделом описываются агрегированные каналы — bonds. В нашем случае используется режим резерва 1 к 1 (active - backup) при котором второй интерфейс находится в резерве и не используется. Опционально определяются шлюзы для связи с внешним миром и адреса DNS серверов. Для адреса управления хостом также определяется IP адрес (ecss 1— 10.0.3.237 /ecss2 — 10.0.3.240). После описания агрегированных каналов, следует секция описания тегированного интерфейса vlan. В моем случае, vlan настраивается поверх существующего bonding интерфейса программного адаптера (bond1_ecssX_pa) и присваиваются соответствующие внутренние адреса для ecss1 и ecss2.
ВАЖНО
Обратите внимание, что во время редактирования netplan необходимо соблюдать правила разметки YAML:
- Обязательное наличие двух пробелов перед каждой строкой (кроме network).
- Каждая подсекция дополнительно сдвигается на 2 пробела :
→ Секция |network
→ Подсекция |_'_'bonds:
→ Подсекция описания секции bonds |_'_'_'_'bonded_one:
→ и.т.д |_'_'_'_'...
- Перед знаком ":" нет пробела, после — один пробел.
- Перед знаком "-" количество пробелов такое, как будто начинается новый подраздел, после — один пробел.
Применим установленные параметры командой:
sudo netplan apply |
Выведем настроенные интерфейсы с помощью ifconfig / ip a:
Вывод ifconfig для ecss1 | Вывод ifconfig для ecss2 |
---|---|
ifconfig bond1_ecss1_pa: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500 bond2_ecss1_mgm: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500 eth0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500 <...> vlan2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 | ifconfig bond1_ecss2_pa: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500 bond2_ecss2_mgm: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500 eth0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500 <...> vlan2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 |
Настройка /etc/hosts
После настройки netplan, необходимо указать, что внутренний адрес 192.168.1.Х принадлежит соответствующему серверу ecssX для этого настраиваем /etc/hosts:
Настройка hosts для ecss1 (/etc/hosts) | Настройка hosts для ecss2 (/etc/hosts) |
---|---|
nano /etc/hosts 127.0.0.1 localhost # Адрес локальной петли, используется некоторыми сервисами ecss | nano /etc/hosts 127.0.0.1 localhost # Адрес локальной петли, используется некоторыми сервисами ecss |
Теперь, если вызвать утилиту ping на ecssX сможет обратиться к соседнему серверу:
Обращение к ecss2 с ecss1 | Обращение к ecss1 с ecss2 |
---|---|
ping ecss2 PING ecss2 (192.168.1.2) 56(84) bytes of data. | ping ecss1 PING ecss1 (192.168.1.1) 56(84) bytes of data. |
Обновление программного обеспечения операционной системы
Для установки системы ECSS-10 необходимо добавить репозиторий ЭЛТЕКС:
sudo su |
Далее необходимо выполнить импорт ключа командой:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 33CB2B750F8BB6A5 |
Для обновления ОС необходимо выполнить команды:
sudo aptitude update |
Установка и настройка программного обеспечения
Устанавливаем все предложенные пакеты:
sudo aptitude install dnsmasq ntp tcpdump ssh vlan ethtool htop iotop mc minicom mtr-tiny nmap pptpd pv screen tftpd vim tshark cpanminus gnuplot |
Устанавливаем также пакеты для системы с резервированием:
sudo aptitude install ifenslave-2.6 keepalived bridge-utils attr |
Установка пакета ecss-mysql
Для установки выполняем команду:
sudo aptitude install ecss-mysql |
Во время установки настройщик задаст вопросы, ответы указаны в таблице ниже. Обратите внимание, что пароль является одинаковым для обоих хостов на которых устанавливается mysql.
Вопросы | Ответы для ecss1 | Ответы для ecss2 |
---|---|---|
Адресная маска для MySQL (IP pattern for MySQL permission) | 192.168.1.% | 192.168.1.% |
Логин пользователя (Login for MySQL root) | root | root |
Пароль пользователя MySQL (Password for MySQL root) | PASSWORD | PASSWORD |
Изменение пути по умолчанию — согласиться с изменением конфигурационного файла для внесения пути до баз данных ecss-mysql введя "Y".
Базы данных mysql, используемых системой ECSS-10, после установки, будут храниться по пути /var/lib/ecss-mysql. Проверяем наличие файлов в папке:
ls -l /var/lib/ecss-mysql/ |
Проверяем, что сервер запущен:
sudo systemctl status mysql ● mysql.service - MySQL Community Server |
После установки необходимо:
Открыть конфигурационный файл mysql: /etc/mysql/mysql.conf.d/mysqld.cnf и добавить туда следующую строку:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address =0.0.0.0Затем перезапустить сервис mysql:
sudo systemctl restart mysql.service
Поддержать доступ между серверами с ecss-mysql через ssh по rsa ключам без использования пароля.
На хосте ecss1 сгенерируем rsa ключ следующий командой (выполняйте команду без sudo, чтобы ключ сгенерировался для текущего пользователя):
ssh-keygen
ssh-copy-id tester@ecss2Такое же проделываем на хосте ecss2.
Запускаю скрипт репликации на ecss1:
sudo /usr/lib/ecss/ecss-scripts/mysql-replication/install_replication.sh
Перед выполнением скрипта необходимо определить некоторые параметры. Пример ответа на вопросы для разных хостов приведен ниже. Обратите внимание, что пароль PASSWORD - это тот же пароль, который задавался чуть выше.
Вопросы | Ответы для ecss1 | Ответы для ecss2 |
---|---|---|
Логин для доступа к БД | root | root |
Пароль для доступа к БД | PASSWORD | PASSWORD |
Логин для пользователя репликации | replica | replica |
Пароль для пользователя репликации | replica | replica |
Адрес первого хоста | 192.168.1.1 | 192.168.1.1 |
Адрес второго хоста | 192.168.1.2 | 192.168.1.2 |
Имя второго хоста | ecss2 | ecss2 |
Имя пользователя на втором хосте | tester | tester |
Mediator IP | 127.0.0.1 | 127.0.0.1 |
Порт SNMP | 162 | 162 |
После работы скрипта можно проверить, что в MySQL создан пользователь replica@192.168.1.% и replica@% на обоих хостах
mysql -uroot -ppassword
mysql> SELECT user,host FROM mysql.userСреди всех пользователей можно увидеть такую запись:
+------------------+---------------+
| user | host |
+------------------+---------------+
| replica | % |
| replica |192.168.1.% |
+------------------+---------------+Проверяем состояние реплики:
sudo mysql -uroot -p -e 'show slave status \G;' | grep -E "Slave_IO_Running:|Slave_SQL_Running:"
Enter password:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Создание VRRP для MySQL. Редактирование keepalived.conf
Следующий шаг — редактирование конфигурационного файла keepalived.conf
sudo nano /etc/keepalived/keepalived.conf |
Файл изначально будет пуст, записываем в его содержимое следующие строки:
Настройка keepalived.conf для ecss1 (/etc/keepalived/keepalived.conf) | Настройка hosts для ecss2 (/etc/keepalived/keepalived.conf) |
---|---|
vrrp_script check_mysqld { script "nc -z localhost 3306" # cheaper than pidof interval 2 # check every 2 seconds fall 1 rise 2 } !-- MySQL ECSS1 BALANCER -- | vrrp_script check_mysqld { script "nc -z localhost 3306" # cheaper than pidof interval 2 # check every 2 seconds fall 1 rise 2 } !-- MySQL ECSS2 BALANCER -- |
В данной конфигурации мы задаем ID для виртуального маршрутизатора, который будет являться балансером для своего хоста. Важно, чтобы virtual_router_id, auth_type, auth_pass совпадали у обоих хостов.
После редактирования необходимо перезапустить сервис keepalived.
sudo systemctl restart keepalived.service |
Вызывая ifconfig после перезагрузки видим, что появился интерфейс vlan2:mysql на одном из хостов
ifconfig |
Установка пакета ecss-node
Устанавливаем пакет ecss-node
sudo aptitude install ecss-node |
Во время установки будет предложено настроить некоторые параметры, пример ответов следует ниже:
Вопросы | Ответы для ecss1 | Ответы для ecss2 |
---|---|---|
Выключить ежедневные обновления (Do you want turn off apt-daily update ?) | Yes | Yes |
Установить настройки по умолчанию для БД (Set DB config to default ?) | Yes | Yes |
Использовать настройки NTP для кластера (NTP: Do you want use settings for cluster ?) | No | Yes |
Установить приоритет NTP для кластера (NTP: Set stratum for cluster ) | - | 7 |
Внешний NTP сервер (External NTP servers through a space ) | ntp.ubuntu.com | |
Использовать локальный сервер? (NTP: Do you want use local server ? ) | No | Yes |
Адрес локального NTP (NTP servers through a space) | - | 192.168.1.1 |
Адреса и маски адресов которые должны иметь доступ к NTP (NTP: Addresses and Masks of Network, which must have access to the ntp through a space) | 192.168.1.0|255.255.255.0 | 192.1681.0|255.255.255.0 |
Установить приоритет NTP локального сервера ( NTP: Set stratum for local server) | 5 | 5 |
Входной порт для портала абонента (Input port for subscriber portal) | 8080 | 8080 |
Введите адрес MySQL БД (Input host for MySQL DB) | 192.168.1.10 | 192.168.1.10 |
Хост или имя хоста для доступа к данным в бд порталу абонентов (Input host or hostname for ecss_subscribers DB) | sp.mysql.ecss | sp.mysql.ecss |
Имя пользователя для базы данных портала абонентов (Input username for ecss_subscribers DB) | subscribers | subscribers |
Пароль для базы данных портала абонентов (Input password for ecss_subscribers DB) | subscribers | subscribers |
Введите имя домена (виртуальной АТС) по умолчанию (Input default domain name) | d.local | d.local |
Введите адрес для доступа из портала абонента (Input IP address or hostname for SSW with http_terminal to connect from subscribers_portal) | 127.0.0.1 | 127.0.0.1 |
Порт WEB терминала (Input port SSW http_terminal) | 9999 | 9999 |
Логин для доступа к WEB терминалу (Input login for SSW http_terminal) | admin | admin |
Пароль для доступа к WEB терминалу (Input password for SSW http_terminal) | PASSWORD | PASSWORD |
Адрес входного взаимодействия (Input trike cowboy url) | 127.0.0.1:8086 | 127.0.0.1:8086 |
Адрес ecss-core (IP address of core) | 192.168.1.1 | 192.168.1.2 |
Установить утилиты для работы с cdr | No | No |
Настраиваем dnsmasq
Редактируем файлы ecss-cocon-mysql, ecss-dialer, ecss-statistic, ecss-tts, ecss-address-book-mysql, ecss-sp-mysql таким образом, что в каждом из них заменяем адрес на виртуальный адрес MySQL:
sudo nano /etc/dnsmasq.d/ecss-cocon-mysql |
Пример файла |
---|
address=/cocon.mysql.ecss/192.168.1.10 |
Перезапускаем сервис dnsmasq
sudo systemctl restart dnsmasq.service |
Установка остальных пакетов ecss и их настройка
Для первого хоста ecss1 выполняем установку всех пакетов (полный список доступных пакетов можно посмотреть здесь):
sudo aptitude install ecss-media-server ecss-web-conf ecss-restfs |
Для второго хоста ecss2 выполняем установку следующих пакетов:
sudo aptitude install ecss-media-server ecss-restfs |
Для медиасервера (ecss-media-server / MSR) возможно начальное конфигурирование с записью параметров в файл конфигурации, пример ответов приведен ниже:
Вопросы ecss-media-server | Ответы для ecss1 | Ответы для ecss2 |
---|---|---|
Создать конфигурацию (Create configure?) | Yes | Yes |
Редактировать основную секцию? (Do you want configure the general section?) | Yes | Yes |
Установить уровень трассировки?(Do you want configure the log level?) | Yes | Yes |
Установите уровень трассировки (Choose log level) (Чем больше значение, тем больше информации в логируемой трассировке) | 1 | 1 |
Редактировать транспортную секцию? (Do you want configure the transport section?) | Yes | Yes |
Редактировать транспортный адрес? (Do you want configure transport bind-addr?) | Yes | Yes |
Введите адрес (Enter) | 192.168.1.1 | 192.168.1.2 |
Редактировать транспортный порт? (Do you want configure transport port?) | Yes | Yes |
Введите порт (Enter) | 5040 | 5040 |
Редактировать медиа секцию? (Do you want configure the media section?) | No | No |
Редактировать имя MSR при регистрации на ядре (core) ecss1 (Do you want configure MSR name (core1)?) | Yes | Yes |
Введите имя (Enter) | MSR.ecss1 | MSR.ecss2 |
Редактировать адрес для регистрации на ядре (core) ecss1? (Do you want configure ip (core1)?) | Yes | Yes |
Введите адрес (Entrer) | 192.168.1.1 | 192.168.1.1 |
Редактировать порт для регистрации на ядре (core) ecss1?(Do you want configure port (core1)?) | Yes | Yes |
Введите порт (Entrer) | 5000 | 5000 |
Редактировать имя MSR при регистрации на ядре (core) ecss2 (Do you want configure MSR name (core2)?) | Yes | Yes |
Введите имя (Enter) | MSR.ecss1 | MSR.ecss2 |
Редактировать адрес для регистрации на ядре (core) ecss2? (Do you want configure ip (core2)?) | Yes | Yes |
Введите адрес (Entrer) | 192.168.1.2 | 192.168.1.2 |
Редактировать порт для регистрации на ядре (core) ecss2?(Do you want configure port (core2)?) | Yes | Yes |
Введите порт (Entrer) | 5000 | 5000 |
Редактирование rtp интерфейса (Configure rtp interface) | Yes | Yes |
Введите IP адрес (Enter real ip) (Вводим адрес виртуального интерфейса) | 10.0.3.238 | 10.0.3.241 |
Описание настройки остальных сервисов приведено здесь.
Настройка VRRP для ecss-node
Выполним настройку VRRP, для этого снова откроем файл keepalived.conf и внесем в него изменения, вид файла представлен ниже:
sudo nano /etc/keepalived/keepalived.conf |
Настройка keepalived.conf для ecss1 (/etc/keepalived/keepalived.conf) | Настройка hosts для ecss2 (/etc/keepalived/keepalived.conf) |
---|---|
vrrp_script chk_sip { include ecss-mysql-replication.conf | vrrp_script chk_sip {
authentication {
include ecss-mysql-replication.conf |
Настройка ecss-mysql-replication.conf для ecss1 (/etc/keepalived/ecss-mysql-replication.conf) | Настройка ecss-mysql-replication.conf для ecss2 (/etc/keepalived/ecss-mysql-replication.conf) |
---|---|
vrrp_script check_mysqld { script "nc -z localhost 3306" # cheaper than pidof interval 2 # check every 2 seconds fall 1 rise 2 } !-- MySQL ECSS1 BALANCER – | vrrp_script check_mysqld { script "nc -z localhost 3306" # cheaper than pidof interval 2 # check every 2 seconds fall 1 rise 2 } !-- MySQL ECSS2 BALANCER -- |
В данном случае мы добавили поддержку виртуальных интерфейсов со связью Master - Backup. Для ecss1 основным будет являться VRRP:SIP1_Mr, а запасным VRRP:SIP1_Bup соответственно. Важно учесть, что в конфигурации учтено использование адресных переменных. В секцию interface требуется указать на каком интерфейсе будут слушаться VRRP сообщения, а вот в секции virtual_ipaddress требуется указать уже интерфейс на котором будет восстановлен виртуальный адрес.
Выполняем перезапуск keepalived
sudo systemctl restart keepalived.service |
Проверяем наличие только что созданных виртуальных интерфейсов:
Проверка состояния интерфейсов для ecss1 (ip a) | Проверка состояния интерфейсов для ecss2 (ip a) |
---|---|
ip a 3: bond1_ecss1_pa: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether ca:d2:8a:13:3a:11 brd ff:ff:ff:ff:ff:ff inet 10.0.3.238/24 scope global VRRP:SIP1_Mr 4: vlan2@bond1_ecss1_pa: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether ca:d2:8a:13:3a:11 brd ff:ff:ff:ff:ff:ff inet 192.168.1.1/24 brd 192.168.1.255 scope global vlan2 inet 192.168.1.10/24 scope global secondary vlan2:mysql | ip a 3: bond1_ecss2_pa: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether a2:58:25:2b:22:28 brd ff:ff:ff:ff:ff:ff inet 10.0.3.241/24 scope global VRRP:SIP2_Mr inet 10.0.3.100/24 scope global secondary VRRP:TC_Bup 4: vlan2@bond1_ecss2_pa: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether a2:58:25:2b:22:28 brd ff:ff:ff:ff:ff:ff inet 192.168.1.2/24 brd 192.168.1.255 scope global vlan2 |
Балансировка интерфейса MySQL выполняется по первенству, тот интерфейс, который быстрее был проверен получает первым виртуальный адрес. Резерв работает при отключении одного из интерфейсов, тогда адрес передается на другой хост. Например если остановить keepalived на одном из хостов, можно увидеть, что адреса "переехали" на другой хост:
Проверка состояния интерфейсов для ecss1 в случае потери ecss2 (ip a) | Проверка состояния интерфейсов для ecss2 (ip a) |
---|---|
ip a 3: bond1_ecss1_pa: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether ca:d2:8a:13:3a:11 brd ff:ff:ff:ff:ff:ff inet 10.0.3.238/24 scope global VRRP:SIP1_Mr inet 10.0.3.100/24 scope global secondary VRRP:TC_Bup inet 10.0.3.241/24 scope global secondary VRRP:SIP2_Bup 4: vlan2@bond1_ecss1_pa: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether ca:d2:8a:13:3a:11 brd ff:ff:ff:ff:ff:ff inet 192.168.1.1/24 brd 192.168.1.255 scope global vlan2 inet 192.168.1.10/24 scope global secondary vlan2:mysql | ip a 3: bond1_ecss2_pa: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether a2:58:25:2b:22:28 brd ff:ff:ff:ff:ff:ff 4: vlan2@bond1_ecss2_pa: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether a2:58:25:2b:22:28 brd ff:ff:ff:ff:ff:ff inet 192.168.1.2/24 brd 192.168.1.255 scope global vlan2 |
Дальнейшая настройка программного коммутатора
mycelium.config
Установка имени кластера производится в конфигурации пакета ecss-mycelium /etc/ecss/ecss-mycelium/mycelium.config:
sudo nano /etc/ecss/ecss-mycelium/mycelium1.config |
Выполним настройку на обоих хостах.
Настройка имени кластера (/etc/ecss/ecss-mycelium/mycelium1.config) |
---|
%%% -*- mode:erlang -*- |
ecss-broker
Настраиваем ecss-broker для возможности регистрации нод на соседнем хосте:
sudo nano /etc/dnsmasq.d/ecss-broker |
Настройка ecss-broker для ecss1 (/etc/dnsmasq.d/ecss-broker) | Настройка ecss-broker для ecss2 (/etc/dnsmasq.d/ecss-broker) |
---|---|
address=/primary.broker.ecss/192.168.1.1 address=/secondary.broker.ecss/192.168.1.2 | address=/primary.broker.ecss/192.168.1.1 address=/secondary.broker.ecss/192.168.1.2 |
ВАЖНО
Нельзя подставлять значения виртуальных адресов, сконфигурированных keepalived, для primary.broker и secondary.broker.epmd
Выполняем настройку epmd:
systemctl edit epmd.service |
Создаем новый сервис и редактируем его
Настройка epmd ecss1 | Настройка epmd ecss2 |
---|---|
[Service] Environment="ERL_EPMD_ADDRESS=127.0.1.1,192.168.1.1" | [Service] Environment="ERL_EPMD_ADDRESS=127.0.1.1,192.168.1.2" |
Перезапускаем сервисы
systemctl daemon-reload systemctl restart epmd.service |
glusterfs
Выполняю настройку glusterfs для ecss-restfs на первом хосте (ecss1), для этого устанавливаем пакеты glusterfs-server и attr
sudo aptitude install glusterfs-server attr |
После установки выполняем создание связи с удаленным виртуальным хостом.
sudo gluster peer probe 192.168.1.2 |
Проверяем наличие созданной связи
sudo gluster peer status |
Далее производим создание кластера для репликации, запускаем репликацию и смотрим ее статус:
sudo gluster volume create ecss_volume replica 2 transport tcp 192.168.1.1:/var/lib/ecss/glusterfs 192.168.1.2:/var/lib/ecss/glusterfs force |
Таким образом статус репликации будет выглядеть следующим образом:
Volume Name: ecss_volume |
Монтируем раздел glusterfs, для этого создаем новый сервис:
/etc/systemd/system/ecss-glusterfs-mount.service |
Добавляем в него следующую конфигурацию:
Настройка /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 daemon-reload |
Проверяем, что раздел смонтировался:
df -h <...> |
snpmd
Настройка 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.
systemctl restart ssh.service |
Настройка кластера пакетов ecss-node
Запускаем необходимые сервисы.
ВАЖНО
Перед началом работы проверьте наличие Token в системе.Запускаем пакеты ecss-mycelium и ecss-ds на первом хосте:
sudo systemctl start ecss-mycelium sudo systemctl start ecss-ds
Переходим в CLI:
ssh admin@localhost -p 8023 password: password
Проверяем состояние системы
admin@ds1@ecss1:/$ system-status Checking... ┌─┬───────────────┬─────────────────────────┬───────────────┬─────────────┬──────┐ │ │ Node │ Release │ Erlang nodes │Mnesia nodes │Uptime│ ├─┼───────────────┼─────────────────────────┼───────────────┼─────────────┼──────┤ │ │ds1@ecss1 │ecss-ds-3.14.4.316 │ds1@ecss1 │ds1@ecss1 │0h 9m │ │ │mycelium1@ecss1│ecss-mycelium-3.14.4.316 │mycelium1@ecss1│not running │0h 9m │ └─┴───────────────┴─────────────────────────┴───────────────┴─────────────┴──────┘
Далее необходимо загрузить паспорт и лицензии в систему:
cluster/storage/ds1/licence/set-passport <ssw passport> ok cluster/storage/ds1/licence/add <ssw licence> ok
Выходим и стартуем остальные сервисы на первом хосте:
sudo systemctl start ecss-core ecss-pa-sip ecss-mediator ecss-media-server ecss-restfs ecss-web-conf
Стартуем на втором хосте:
sudo systemctl start ecss-core ecss-pa-sip ecss-mediator ecss-media-server ecss-restfs
Возвращаемся в CLI:
ssh admin@localhost -p 8023 password: password
После того как все будут запущены, ноды какое-то время будут устанавливать связь. Как только все ноды загрузятся в system-status будет следующий вывод:
admin@mycelium1@ecss1:/$ system-status Checking... ┌─┬───────────────┬─────────────────────────┬───────────────────────────────┬───────────────────────────┬───────┐ │ │ Node │ Release │ Erlang nodes │ Mnesia nodes │Uptime │ ├─┼───────────────┼─────────────────────────┼───────────────────────────────┼───────────────────────────┼───────┤ │ │core1@ecss1 │ecss-core-3.14.4.316 │core1@ecss1,core1@ecss2 │not running │34m 28s│ │ │core1@ecss2 │ecss-core-3.14.4.316 │core1@ecss1,core1@ecss2 │not running │6m │ │ │ds1@ecss1 │ecss-ds-3.14.4.316 │ds1@ecss1,ds1@ecss2 │ds1@ecss1,ds1@ecss2 │34m 29s│ │ │ds1@ecss2 │ecss-ds-3.14.4.316 │ds1@ecss1,ds1@ecss2 │ds1@ecss1,ds1@ecss2 │6m │ │ │md1@ecss1 │ecss-mediator-3.14.4.316 │md1@ecss1,md1@ecss2 │md1@ecss1,md1@ecss2 │33m 54s│ │ │md1@ecss2 │ecss-mediator-3.14.4.316 │md1@ecss1,md1@ecss2 │md1@ecss1,md1@ecss2 │6m │ │ │megaco1@ecss1 │ecss-pa-megaco-3.14.4.316│megaco1@ecss1,megaco1@ecss2 │megaco1@ecss1,megaco1@ecss2│33m 35s│ │ │megaco1@ecss2 │ecss-pa-megaco-3.14.4.316│megaco1@ecss1,megaco1@ecss2 │megaco1@ecss1,megaco1@ecss2│6m │ │ │mycelium1@ecss1│ecss-mycelium-3.14.4.316 │mycelium1@ecss1,mycelium1@ecss2│not running │34m 49s│ │ │mycelium1@ecss2│ecss-mycelium-3.14.4.316 │mycelium1@ecss1,mycelium1@ecss2│not running │6m │ │ │sip1@ecss1 │ecss-pa-sip-3.14.4.316 │sip1@ecss1,sip1@ecss2 │sip1@ecss1,sip1@ecss2 │33m 54s│ │ │sip1@ecss2 │ecss-pa-sip-3.14.4.316 │sip1@ecss1,sip1@ecss2 │sip1@ecss1,sip1@ecss2 │6m │ └─┴───────────────┴─────────────────────────┴───────────────────────────────┴───────────────────────────┴───────┘ All services are started. Active media resource selected list specific: ┌─────────────┬───────────┬───────────┬───────────┬───────────┐ │ Node │ MSR │ MSR │ Cc-status │ Cc-uptime │ │ │ │ version │ │ │ ├─────────────┼───────────┼───────────┼───────────┼───────────┤ │ core1@ecss1 │ MSR.ecss1 │ 3.14.4.26 │ connected │ 00:32:03 │ │ │ MSR.ecss2 │ 3.14.4.26 │ connected │ 00:23:56 │ │ core1@ecss2 │ MSR.ecss1 │ 3.14.4.26 │ connected │ 00:02:39 │ │ │ MSR.ecss2 │ 3.14.4.26 │ connected │ 00:02:38 │ └─────────────┴───────────┴───────────┴───────────┴───────────┘
Видно, что ноды вошли в кластер и MSR зарегистрировались на ноде ecss-core.
Настройка группы IP адресов (IP - set)
Производим настройку адаптера SIP согласно ТЗ.
/cluster/adapter/sip1/sip/network/set ip_set test_set node-ip node = sip1@ecss1 ip = 10.0.3.238 Property "ip_set" successfully changed from: to test_set: no ports set test_set: sip1@ecss1 10.0.3.238 test_set: dscp 0. cluster/adapter/sip1/sip/network/set ip_set test_set node-ip node = sip1@ecss2 ip = 10.0.3.241 Property "ip_set" successfully changed from: to test_set: no ports set test_set: sip1@ecss1 10.0.3.238 test_set: sip1@ecss2 10.0.3.241 test_set: dscp 0.
Далее создаем домен и присваиваем ему созданную группу (IP-set) настроек SIP адаптера:
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"].
После создания домена настраиваем:
Пример первичной конфигурации системы с помощью Web-конфигуратора
Исходные данные
Установка системы завершена. Настроенная система готова к конфигурации. Интерфейсы запущены.
Рекомендуется использовать последнюю доступные версии браузеров. Рекомендуемые к использованию браузеры: Opera, Chrome.
Для начала конфигурации системы необходимо зайти в Web-конфигуратор.
Для определения и регистрации в системе планируются:
- Абоненты с номерами 101, 102 , 103, 104 ,105, 106, 107, 108, 109, 110;
- Транк в сторону шлюза.
Подготовка к работе
Рисунок 3 — Вход в WEB конфигуратор (окно авторизации)
В окне авторизации необходимо ввести значения, определенные при установке WEB конфигуратора:
Стандартные значения для авторизации:
Логин: admin
Пароль: password
После входа в систему будет видна основная рабочая область с иконками приложений, а так же строка состояния с доступными опциями, в частности:
- 1 — выход из системы;
- 2 — выбор домена;
- 3 — выбора языка.
Рисунок 4 — Вид рабочей области WEB конфигуратора
Создание учетной записи оператора
После авторизации, для повышения безопасности при эксплуатации программного коммутатора, рекомендуется создание учетных записей для операторов, а также сменить пароль для пользователя "admin".
Для создания новой учетной записи оператора используется приложение "Управление пользователями" ("User manager").
Рисунок 5 — Вид приложения "Управление пользователями"
Нажмите кнопку "Добавить" . В открывшемся окне требуется определить новую учетную запись, для этого:
1. В поле "Имя" введите логин учетной записи, например "test";
2. В поле "Пароль" и "Подтверждение" введите пароль для пользователя, например "testpassword";
3. Определите уровень прав доступа для пользователя через выбор текущих "Разрешений" или с помощью Ролей, например ecss-user. Описание смотрите тут: Управление пользователями.
Рисунок 6 — Диалоговое окно создания учетной записи оператора
Рисунок 7 — Вид приложения с созданной учетной записью оператора
Для смены пароля рядом с названием пользователя нажмите на кнопку редактировать. В появившемся диалоговом окне введите:
1. Старый пароль (для пользователя "admin" по умолчанию паролем является "password");
2. Новый пароль;
3. Подтвердите новый пароль.
Рисунок 8 — Диалоговое окно редактирования учетной записи
Создание домена
Для создания домена необходимо войти в приложение "Домены" ("Domain"). В открывшемся окне требуется создать домен, для этого:
1. Нажмите кнопку "Добавить домен":
Рисунок 9 — Добавление домена в систему
2. В появившемся диалоговом окне доступны следующие настройки:
Введите название домена, например "test_domain";
3. Нажмите кнопку "Ок":
Рисунок 10 — Определение настроек нового домена
4. Нажмите кнопку "Обновить" в приложении.
Теперь созданный нами домен отобразился в текущей конфигурации.
Рисунок 11 — Отображение созданного домена
Для редактирования текущего домена его необходимо выбрать в системе. Для перехода в домен воспользуйтесь опцией выбора домена (см. пункт 2 на рисунке "Вид рабочей области WEB конфигуратора").
После выбора домена стали доступны все приложения, согласно текущей конфигурации системы.
Рисунок 12 — Отображение приложений, согласно текущей конфигурации системы
Создание IP-set/(sip-транспорта) и присвоение его к домену
Для настройки интерфейса необходимо открыть приложение "Кластеры ("Clusters").
Рисунок 13 — Вид приложения "Кластеры"
IP-set — совокупность одного или нескольких IP-адресов из одной подсети и списка слушающих udp/tcp портов, которые будут открыты sip-адаптером на данных адресах.
Для создания новой группы IP адресов (IP-set) необходимо выделить кластер SIP адаптера "sip1" и нажать на кнопку "Свойства кластера" или щелкнуть по иконке кластера двойным щелчком левой кнопки мыши.
В появившемся диалоговом окне выберите вкладку "Транспорт". На вкладке транспорт нажмите кнопку "Добавить". Появилась новая группа, для редактирования полей двойным щелчком кнопки мыши нажмите на нужное поле:
1. Переименуйте группу адресов (IP set), например "test_set";
2. Задайте порт по которому будут обращаться к домену, например 5062;
3. Разверните вновь созданную группу нажатием на треугольник слева от названия группы;
4. Определите адрес для ноды sip адаптера, согласно примеру конфигурации:
- Для системы без резервирования укажите 10.0.3.238
Рисунок 14 — Назначение IP-адреса в настройках SIP адаптера для одного адаптера
- Для системы с резервированием укажите 10.0.3.238 и 10.0.3.241
Рисунок 15 — Назначение группы IP-адресов в настройках SIP адаптера для двух адаптеров
Нажмите кнопку "Сохранить" для применения настроек.
Для того чтобы привязать группу адресов к домену, необходимо вернуться в приложение "Домены" ("Domain"), выделить домен и перейти в настройки щелкнув по кнопке "Свойства домена" или щелкнув по домену двойным щелчком мыши.
В открытых настройках в списке выберите ветку "SIP" в ней "SIP транспорт" и выбрать в поле IP set созданную группу адресов.
Рисунок 16 — Окно настройки для SIP транспорта
Создание абонентов
Для создания и редактирования параметров абонентов в системе используется приложение "Карточка абонента" ("Subscriber card").
Рисунок 17 — Вид приложения "Карточка абонента"
В конфигурации возможно создание "SIP абонентов" или же "Виртуальных абонентов".
Для пользователей, имеющих физическое окончание, используется функционал "SIP абонента", в то время как "Виртуальный абонент" используется тогда, когда нужна функциональность без физических окончаний. Например, номер для обращения к ivr-скрипту.
Для создания новых абонентов нужно нажать на кнопку "Добавить".
В появившемся диалоговом окне нужно указать следующие параметры:
- Контекст — контекст маршрутизации, выбираем тот, который создали, например "test_name";
Имя интерфейса — номер или группа номеров, который присваивается абоненту, например {100-110};
- Алиас, как пользователь — настройка, которая связывает номер сущности, алиас и пользователя одним и тем же названием, в примере настройка активирована;
- Авторизация — порядок проверки подлинности прав пользователя на доступ к данным, в примере используется always.
- Логин — использую настройку номер как логин для простоты.
- Пароль — можно задать или использовать, сгенерированный системой.
->
Рисунок 18 — Пример определения абонентов в домене
Создание и применение контекстов маршрутизации для домена
Маршрутизация отвечает за поиск номера и последующую адресацию вызова. Для корректной работы системы должен быть настроен, как минимум 1 контекст маршрутизации.
За настройку маршрутизации в системе отвечает приложение "Менеджер маршрутизации" ("Routing manager").
Рисунок 19 — Вид приложения "Менеджер маршрутизации"
В качестве примера создадим контекст, а затем несколько правил в нём, для этого:
1. В левой части окна в разделе "Контекст" нажать на кнопку "Создать контекст" ;
2. В открывшемся диалоговом окне обозначить имя контекста, а так же тип контекста — пустой контекст:
3. Нажмите "Сохранить контекст" ;
Создадим 4 правила в данном контексте:
- rule1 — правило для выхода на транк TAU-72;
- rule2 — правило локальной маршрутизации для номеров 101-105;
- rule3 — правило для выхода в ivr;
- rule4 — правило исключение.
Для создания нового правила нужно выделить созданный контекст и нажать кнопку "создать правило". В появившемся окне нужно ввести название правила. А затем сохранить вновь созданные правила.
Рисунок 20 — Создание правила контекста маршрутизации
Рисунок 21 — Определение правил
На данный момент у нас не определен транк, чтобы можно было сослаться на него в правиле, однако можно задать номера по которым будет производится выборка.
Щелчком мыши выделим правило rule1 и перейдем в нижнюю часть экрана, в которой располагаются области для редактирования контекста маршрутизации. Условно определим, что выборка для выхода на транк будет проводиться по признакам номера вызываемого абонента (CDPN) и номера в транке должны начинаться с цифры 4.
Функционально контекст маршрутизации делится на три части:
- Условия "Condition" — раздел, определяющий выражения для выборки по предложенным признакам.
- Действия "Action" — раздел, выполняющий преобразование признаков номеров к конкретному значению.
- Результат "Result" — раздел, завершающий маршрутизацию и определяющий её результат.
rule1: Для выхода на транк нужно правильно отредактировать каждую часть:
- Находим в разделе условий вкладку CDPN и раскрываем её. Вводим номера телефонов, которые находятся за транком в поле "Номер", например, чтобы определить номера с 106 по 107 вводим условие 10(6-7);
- В разделе действий переходим к вкладке CDPN и раскрываем её. Вводим маску для изменения номера в поле "Номер", например, чтобы добавить число 4 перед номером, нужно заполнить поле следующим выражением 4{1,2,3};
- Нажмем кнопку "Сохранить правило" и "Сохранить контекст" для применения изменений.
Чтобы настроить поле результата нужно определить в системе транк, поэтому к настройке данного правила вернемся чуть позже.
Соответствующим образом настраиваем оставшиеся правила.
Для rule2:
- В разделе условий, во вкладке CDPN вводим номера телефонов, которые находятся за транком в поле "Номер", например, чтобы определить номера с 101 по 105 вводим условие 10(1-5);
- В разделе результата определяем результат, как локальная маршрутизация;
- Нажмем кнопки "Сохранить правило" и "Сохранить контекст" для применения изменений.
Для rule 3 допустим, что абоненты с номерами 108, 109 и 110 попадают в ivr скрипт — информатор, прежде чем звонить далее.
- В разделе условий, во вкладке CGPN вводим номера телефонов, по которым будет выборка в поле "Номер", например 1(10,08-09).
- Нажмем кнопки "Сохранить правило" и "Сохранить контекст" для применения изменений.
Чтобы настроить поле результата нужно определить в системе ivr скрипт, поэтому к настройке данного правила вернемся чуть позже.
Для rule 4 мы определяем правило "исключение" — это правило, которое работает в случае, если любые другие правила не срабатывают.
- По умолчанию данное правило создается в системе в контексте default_routing. В условиях на вызываемый номер прописывается символ %, а результатом является локальная маршрутизация, однако, если мы назначаем абоненту контекст, отличный от default_routing, в конце рекомендуется создавать это правило.
Рисунок 22 — Пример настроек контекста маршрутизации
Создание транка
Для создания и редактирования параметров транка в системе используется приложение "Менеджер транков" ("Trunk manager").
Рисунок 23 — Вид приложения "Менеджер транков"
Для определения транка в системе следует нажать кнопку "Создать транк" , в появившемся диалоговом окне определяем параметры:
- Имя транка — назначаем название транка, по которому можно его идентифицировать в системе;
- Контекст — применяем ранее созданный контекст маршрутизации test_name;
- Группа — выбираем группу интерфейсов созданную при определении абонентов "test.group";
- Группа IP адресов (IP-set) — созданная на домене группа адресов "test_dom";
- Регистрация — если используется транковая то требуется включить данный параметр, в примере она не используется;
- Хост — IP-адрес назначения транка, в качестве примера это будет 10.0.3.100;
- Порт для приёма — транспортный порт, на котором будет слушаться трафик с транка соответствует порту назначенному на группу IP адресов;
->
Рисунок 24 — Создание транка
Создание IVR скрипта
Для создания IVR используется приложение "IVR редактор" ("IVR editor").
Рисунок 25 — Вид приложения "IVR редактор"
Для создания скрипта используем клавишу "Добавить" , выбираем тип скрипта, в данном случае будет скрипт на входящие вызовы, в диалоговом окне указываем название скрипта например "test_ivr".
После создания скрипта в основном окне редактора появляется блок-схема.
В качестве примера составим скрипт, который при срабатывании проигрывает вызывающему абоненту заранее записанную фразу, а затем продолжает вызов.
Пример скрипта приведен на рисунках ниже. Здесь используются блоки info и dial.
- Блок info — блок, который проигрывает сообщения до момента ответа пользователя. В качестве записанной фразы используем обычный генератор тонов:
Рисунок 26 — Вид рабочей области IVR с настройками блока "info"
- Блок dial — блок, который совершает вызов на заданный номер. Чтобы продолжить вызов применяем предопределенную переменную CDPN:
Рисунок 27 — Вид рабочей области IVR
Завершение настройки маршрутизации
Для завершения настройки маршрутизации, требуется войти в "Менеджер маршрутизации" ("Routing manager") и в правилах rule1 и rule 3 настроить соответствующие результаты маршрутизации, для этого:
- rule1: В разделе результаты выберите подпункт внешний и в поле "значение" таблицы "направления" определите как результат созданный ранее транк, после чего сохраните правило .
- rule3: В разделе результаты выберите подпункт ivr и в поле скрипт выбрать созданный ранее ivr скрипт, после чего сохраните правило и контекст .
Рисунок 28 — Вид контекста маршрутизации
Настройка услуг
Для настройки услуг необходимо произвести несколько действий:
- Произвести установку услуг через cocon;
- Произвести добавление услуг для домена в список доступа (access-list) через cocon;
- Далее, любая услуга в списке доступа становится доступна для применения на абоненте или транке.
Для входа в CLI "Cocon" можно воспользоваться терминалом или приложением "Командная консоль CoCon" ("CoCon").
После авторизации в Cocon пропишите следующие команды:
Для установки услуг в систему:
cluster/storage/ds1/ss/install ds1@ecss1 *
После успешной установки услуг пропишите следующую строку для добавления доступа к ним:
cluster/storage/ds1/ss/access-list add test_domain *
Символ звездочка — означает, что команда будет применена ко всем доступным элементам в системе, если требуется установить конкретную услугу, вместо * вводится её название.
Для подключения услуг абоненту необходимо открыть карточку абонента, выбрать его и перейти на вкладку "Дополнительные услуги".
Рисунок 29 — Пример настройки услуг
Для активации услуги для абонента необходимо подключить его, нажав кнопку включения , затем активировать и настроить (прочитать подробнее можно в разделе "Карточка абонента" ("Subscriber card")).