Примеры пошаговой первоначальной настройки ECSS-10
В данном разделе приведены примеры инсталляции и настройки ECSS-10 для системы с одиночным сервером и для кластера из двух серверов.
Первоначальная установка системы без резервирования с одним сервером
Исходные данные
Исходные данные
В данном разделе использованы специфичные для данного продукта термины, ознакомиться с ними можно здесь.
Требуется интеграция программного коммутатора 5 класса ECSS-10 (SSW) на 1 физическом сервере с поддержкой SIP со следующими параметрами на нагрузку:
- Максимальное количество абонентов – 15000 (MUL — Max user limit);
- Максимальное количество одновременных соединений — 2000 (MCL — Max call limit);
- Резервирование системы не требуется;
- Количество сетевых интерфейсов ethernet — 4.
По техническому заданию требуется определить аппаратную платформу.
Таблица 1. Рекомендуемые аппаратные решения
Требования к серверам SSW | Серия аппаратного продукта | |||
---|---|---|---|---|
Light+ | Midi | Heavy | Super Heavy | |
Характеристики системы | ||||
Максимальное количество абонентов | 5000 | 10000 | 20000 | 40000 |
Максимальная нагрузка одновременных соединений class 5 | 800 | 1500 | 3000 | 6000 |
Максимальная нагрузка одновременных соединений class 4 | 2400 | 4500 | 9000 | 20000 |
Характеристики сервера | ||||
Марка | HP (Lenovo) | HP (Lenovo) | HP (Lenovo) | HP (Lenovo) |
Серия | DL20 Gen10 (SR250)/DL 360 Gen10 (SR530) | DL360 Gen10 (SR530/SR630) | DL360 Gen10 (SR630) | DL 360 Gen10 (SR630) |
Процессор | Intel Xeon E-2276G/Intel Xeon 4214 | Intel Xeon 5220 | Intel Xeon 6240 | Intel Xeon 8268 |
Количество процессоров | 1 | 1 | 2 | 2 |
Объем ОЗУ | 12 ГБ | 16 ГБ | 24 ГБ | 64 ГБ |
HDD | От 3X500 SATA | От 3x300 ГБ SAS (от 10000 об/мин) | От 3x600 ГБ SAS | От 6x800 ГБ SSD, 2x300 ГБ M.2 SSD |
RAID | No raid board | HW Raid, от 1 ГБ cache+battery | HW Raid, от 1 ГБ cache+battery | HW Raid, от 2 ГБ Flashcache, поддержка RAID-5 |
Дополнительные комплектующие сервера (в базовых комплект не входят) | ||||
Лицензия на удалённое управление | по желанию | + | + | + |
Резервный источник питания | по желанию | + | + | + |
Организация хранилища записей разговоров | Дополнительные HDD, объединенные в RAID-5 | Лицензия на HW Raid с поддержкой RAID-5, дополнительные HDD для хранения записей | Лицензия на HW Raid с поддержкой RAID-5, дополнительные HDD для хранения записей | Лицензия на HW Raid с поддержкой RAID-5, дополнительные HDD для хранения записей |
Таблица 2. Пример составления аппаратных требований
Устройство | Требуемый ресурс | Серия аппаратного продукта | |
---|---|---|---|
MCL | MUL | ||
Сервер 1 | 2500 | 15000 | Heavy |
После определения по требованиям проекта составляем предварительную сетевую карту.
Таблица 3. Пример разнесения составляющих по адресному пространству для одной ноды
Имя сервера (хоста) | Роль | Интерфейс | Адрес | Порт |
---|---|---|---|---|
Статические адреса программного коммутатора | ||||
ecss1 | Адрес сервера | network.10 (mgm) | 10.0.10.11/24 | - |
ecss1 | Адрес протокольного адаптера | network.20 (voip) | 10.0.20.11/24 | - |
ecss1 | Адрес шлюза | network.10 (mgm) | 10.0.10.1 | - |
ecss1 | Адреса DNS-серверов | network.10 (mgm) | 10.0.10.1, 8.8.8.8 | - |
Внутренние адреса программного коммутатора | ||||
ecss1 | Адрес ядра (ecss-core) | lo | 127.0.0.1/24 | 5000 |
ecss1 | Адрес медиасервера (ecss-media-server (MSR)) | lo | 127.0.0.1/24 | 5040 |
ecss1 | Адрес базы данных MySQL (ecss-mysql) | lo | 127.0.0.1/24 | 3306 |
Включение в сеть
Топологию включения сервера в сеть для обеспечения резервирования рекомендуется делать с использованием 2-х коммутаторов.
Рисунок 1 — Схема организации связи
Вариант 1. Схема active-backup
Коммутаторы связаны между собой в erps-кольцо.
Все 4 физических сетевых интерфейса объединяются в 1 агрегированный линк (bond). Агрегация портов сервера настраивается в режиме active-backup, т.е. в работе всегда находится только 1 сетевой интерфейс. Сетевые интерфейсы сервера попарно включены в коммутаторы, на которых агрегация портов (port-channel) также настраивается в режиме active-backup.
Например, eth1 и eth2 включаются в первый коммутатор, а eth3 и eth4 — во второй.
Вариант 2. Схема LACP
Коммутаторы связаны между собой в стек. Стек должен логически работать как один коммутатор, способный обеспечивать агрегацию портов в режиме LACP между разными физическими коммутаторами. Пример — коммутаторы MES3124 со специализированной прошивкой.
Все 4 физических сетевых интерфейса также объединяются в 1 агрегированный линк (bond). Агрегация портов сервера настраивается в режиме 802.3ad. Создаются агрегированные группы сетевых карт с одинаковой скоростью и дуплексом. При таком объединении передача задействует все каналы в активной агрегации согласно стандарту IEEE 802.3ad. Выбор, через какой интерфейс отправлять пакет, определяется политикой. По умолчанию это XOR-политика, можно использовать «xmit_hash» политику. Подробнее в разделе Приложение Е. Netplan.
Требования:
- Поддержка Ethtool в драйвере для получения информации о скорости и дуплексе на каждом сетевом интерфейсе;
- Поддержка на коммутаторе стандарта IEEE 802.3ad;
Сетевые интерфейсы сервера также попарно включены в коммутаторы, на которых агрегация портов (port-channel) настраивается в режиме LACP. Например, eth1 и eth2 включаются в первый коммутатор (port-channel 1), а eth3 и eth4 — во второй (port-channel 2).
Настройка сети
Согласно параметрам, заданным в техническом задании, выполним сетевые настройки. В данном примере считается, что необходимая операционная система уже установлена. О том, как это сделать, смотрите в разделе Инсталляция системы.
Рекомендуется разделять трафик, используемый в разных целях. Например, трафик управления и трафик VoIP. Для этого создаются 2 или более vlan. При небольшой нагрузке для простоты можно обойтись и одним vlan, но это будет в будущем доставлять неудобства при снятии дампов трафика и его анализе. В соответствии с техническим заданием на vlan настраиваются IP-адреса самого хоста, шлюзы, DNS и маршрутизация в другие сети.
В данном примере согласно ТЗ будем использовать адреса:
- 10.0.10.10/24 — для управления, vlan 10;
- 10.0.20.10/24 — для VoIP.
Внутри серверной платформы существует адресная структура и используются внутренние адреса для взаимодействия между подсистемами (нодами) в кластере. Например, внутренний адрес для кластера на одном сервере 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 |
Все другие файлы из этого каталога нужно переместить в другое место или удалить.
В конфигурациях для каждого хоста в первую очередь мы объявляем секцию ethernets, в которой описываются существующие в системе ethernet-интерфейсы, используемые в дальнейшем. Для каждого интерфейса необходимо отключить использование динамического распределения адресов (DHCP).
Следующим разделом описываются агрегированные каналы — bonds. В зависимости от выбранного варианта включения в сеть настраивается режим режим резерва 1:1 (active - backup) или LACP (802.3ad).
Далее настраиваются vlan, на которых опционально определяются шлюзы для связи с внешним миром и адреса DNS-серверов, а также непосредственно IP-адреса для каждого интерфейса.
ВАЖНО
Обратите внимание, что во время редактирования netplan необходимо соблюдать правила разметки YAML:
- Обязательное наличие минимум двух пробелов перед каждой строкой (кроме network);
- Каждая подсекция дополнительно сдвигается на 2 пробела:
→ Секция |network
→ Подсекция |_'_'bonds:
→ Подсекция описания секции bonds |_'_'_'_'bonded_one:
→ и т.д. |_'_'_'_'...
- Перед знаком ":" нет пробела, после — один пробел;
- Перед знаком "-" количество пробелов такое, как будто начинается новый подраздел, после — один пробел.
Пример настройки файла ecss-netplan.yaml для варианта включения active-backup
# Netplan для хоста ecss1 программного коммутатора # Обратите внимание на обязательное наличие минимум двух пробелов в каждой строке и секции (кроме строки секции network) network: version: 2 # Версия netplan renderer: networkd # Исполнитель конфигураций netplan ethernets: # Раздел описания интерфейсов ethernet eth0: # Название интерфейса dhcp4: no # Отключаем на интерфейсах динамическое распределение IP-адреса eth1: dhcp4: no eth2: dhcp4: no eth3: dhcp4: no bonds: # Раздел описания связанных (bonding) интерфейсов. В имени не может быть более 15 символов! bond1: # Название bonding-интерфейса interfaces: # Секция определения связанного интерфейса - eth0 - eth1 - eth2 - eth3 parameters: # Раздел определения параметров связанного интерфейса mode: active-backup # Режим резервирования 1:1 mii-monitor-interval: 100 # интервал мониторинга интерфейса (мс) primary: eth0 # Секция определения основного интерфейса optional: false # Определение, является ли интерфейс обязательным при старте vlans: network.10: # Интерфейс управления id: 10 link: bond1 addresses: [10.0.10.10/24] gateway4: 10.0.10.1 # Адрес шлюза nameservers: addresses: [10.0.10.1, 8.8.8.8] # Адреса серверов DNS network.20: # Интерфейс для VoIP id: 20 link: bond1 addresses: [10.0.20.10/24]
Применим установленные параметры командой:
sudo netplan apply |
Обновление программного обеспечения операционной системы
Для установки системы ECSS-10 необходимо добавить репозиторий ELTEX:
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 apt update sudo apt upgrade
Установка и настройка программного обеспечения
ВАЖНО
Установку пакетов требуется делать НЕ из-под пользователя ssw.Устанавливаем все предложенные пакеты:
sudo apt install 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 |
Установка пакета ecss-mysql
Установка начинается с развертывания MySQL-сервера и интеграции базы данных ecss-mysql.
Для установки выполняем команду:
sudo apt install ecss-mysql |
Настройка пакета ecss-dns-env
Перед установкой пакета ecss-mysql будет предложено настроить переменные окружения для сервисов в dnsmasq. Настройщик предложит выбрать разделы для настройки, не выбираем ничего.
Настройка пакета 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:
sudo apt install ecss-node
Во время установки пакета создается пользователь ssw, от имени которого запускаются все сервисы ecss*. Создаются необходимые каталоги, выполняется настройка DNS, идет настройка SSL-сертификатов. В ходе инсталляции будут задаваться вопросы, необходимые для формирования конфигурационных файлов.
Вопросы | Ответы |
---|---|
Выключить ежедневные обновления (Do you want turn off apt-daily update ?) | Yes |
Установить настройки по умолчанию для БД (Set DB config to default ?) | Yes |
Взводить аварию ECSS-10 при заполнении раздела MySQL (Set alarm true when MYSQL DB overloads) | 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-серверу, например, 10.0.10.0|255.255.255.0 |
Установить утилиты для работы с cdr | No |
Для генерации сертификатов выбираем ручной (manual) способ. На все вопросы можно дать ответы, предложенные по умолчанию, нажимая кнопку "Enter" на каждый вопрос.
Установка пакетов ecss-media-server, ecss-media-resources, ecss-restf, ecss-web-conf
Далее устанавливаются пакеты ecss-media-server, ecss-media-resources, ecss-restf, ecss-web-conf и другие в любом порядке:
ecss-media-server, ecss-media-resources
sudo apt install ecss-media-server ecss-media-resources
Для медиасервера (ecss-media-server / MSR) возможно начальное конфигурирование с записью параметров в файл конфигурации, требуется провести конфигурацию, не выбирая никаких пунктов:
Вопросы ecss-media-server | Ответы для ecss1 |
---|---|
Установить настройки по умолчанию: | yes |
Введите имя (Enter) | msr.ecss1 |
Введите адрес (Entrer) | 127.0.0.1 |
Введите порт (Entrer) | 5000 |
После формирования конфигураций по умолчанию переходим в директорию, в которой находятся конфигурации и производим их проверку:
cd /etc/ecss/ecss-media-server/
cat config.xml
cat conf.d/default.xml
Внутри лежит конфигурация для msr: config.xml, в директории conf.d лежит конфигурация default.xml.
По своей сути default.xml — это дополнение config.xml, которое определяет секцию аккаунтов. Это сделано для того, чтобы после обновлений пакета данная конфигурация оставалась неизменной. Вид config.xml представлен здесь: файл конфигурации.
Рассмотрим секцию аккаунтов (файл default.xml):
Настройка msr для ecss1(/etc/ecss/ecss-media-server/conf.d/default.xml)
<?xml version="1.0"?>
<config>
<accounts>
<dynamic msr_name="msr.ecss1" realm="sip:127.0.0.1:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password"/>
</accounts>
</config>
В ней указаны текущие настройки, согласно которым происходит регистрация msr на core.
Основными параметрами здесь являются: msr_name и realm:
- msr_name — параметр, определяющий название msr. (рекомендуется задавать название msr. и к какому хосту он принадлежит, например msr.ecss1);
- realm — определяет адрес для регистрации на ядре. Точка входа по умолчанию: порт 5000, адрес: 127.0.0.1.
ecss-restfs
sudo apt install ecss-restfs
При его установке будет предложено настроить конфигурацию:
Вопросы | Ответы |
---|---|
Использование функции TTS (Use TTS service) | No |
Настройка телефонной книги (Configure phone book) | No |
Настроить сервис определения речи (Configure speech recognition service) | No |
Ничего не выбирать | Ok |
ecss-web-conf
sudo apt install ecss-web-conf
При его установке будет предложено настроить конфигурацию:
Вопросы | Ответы |
---|---|
Указать доменное имя или адрес для базы данных MySQL web-интерфейса (Input IP address or hostname of MySQL db for web-conf DB) | 127.0.0.1 |
Указать порт для базы данных MySQL web-интерфейса (Input port of MySQL db for web-conf DB | 3306 |
Указать доменное имя или адрес для подключения к web-интерфейсу (Input IP address or hostname for ECSS-10 with http_terminal) | 127.0.0.1 |
Указать порт для web-терминала программного коммутатора (Input port SSW http_terminal) | 9999 |
Указать логин для web-терминала (Input login for SSW http_terminal) | admin |
Указать пароль для web-терминала (Input password for SSW http_terminal) | password |
Настройка snpmd
Настройка SNMP описана здесь.
Настройка безопасности. SSH
Выполняем настройку сервера SSH:
sudo nano /etc/ssh/sshd_config |
Укажем в конфигурационном файле порт и адрес, по которому можно обратиться к серверу:
Настройка ssh для ecss1(/etc/ssh/sshd_config) |
---|
# This is the sshd server system-wide configuration file. See # 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
Настройка начальной конфигурации
Запускаем необходимые сервисы.
ВАЖНО
Перед началом работы проверьте наличие Token в системе.Запускаем пакеты ecss-mycelium и ecss-ds на первом хосте:
sudo systemctl start ecss-mycelium sudo systemctl start ecss-ds
Переходим в CLI:
ssh admin@localhost -p 8023 password: password
Проверяем состояние системы:
admin@mycelium1@ecss1$ system-status Checking... ┌─┬───────────────┬────────────────────────┬───────────────┬────────────┬──────┐ │ │ Node │ Release │ Erlang nodes │Mnesia nodes│Uptime│ ├─┼───────────────┼────────────────────────┼───────────────┼────────────┼──────┤ │ │ds1@ecss1 │ecss-ds-3.14.10.91 │ds1@ecss1 │ds1@ecss1 │8m 9s │ │ │mycelium1@ecss1│ecss-mycelium-3.14.10.91│mycelium1@ecss1│not running │8m 10s│ └─┴───────────────┴────────────────────────┴───────────────┴────────────┴──────┘ All services are started.
Далее необходимо установить паспорт и лицензии в систему:
admin@[mycelium1@ecss1]:/$ cluster/storage/ds1/licence/set-passport <passport> admin@[mycelium1@ecss1]:/$ cluster/storage/ds1/licence/add <license>
Выходим из СoСon, выполняем перезагрузку подсистем 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 bond1_ecss1_pa default local true
Для проверки выполняем команду system-status и видим вывод:
admin@mycelium1@ecss1$ system-status Checking... ┌─┬───────────────┬────────────────────────┬───────────────┬────────────┬──────┐ │ │ Node │ Release │ Erlang nodes │Mnesia nodes│Uptime│ ├─┼───────────────┼────────────────────────┼───────────────┼────────────┼──────┤ │ │core1@ecss1 │ecss-core-3.14.10.91 │core1@ecss1 │not running │1m 59s│ │ │ds1@ecss1 │ecss-ds-3.14.10.91 │ds1@ecss1 │ds1@ecss1 │4h │ │ │md1@ecss1 │ecss-mediator-3.14.10.91│md1@ecss1 │md1@ecss1 │1m 59s│ │ │mycelium1@ecss1│ecss-mycelium-3.14.10.91│mycelium1@ecss1│not running │4h │ │ │sip1@ecss1 │ecss-pa-sip-3.14.10.91 │sip1@ecss1 │sip1@ecss1 │1m 59s│ └─┴───────────────┴────────────────────────┴───────────────┴────────────┴──────┘ All services are started. Active media resource selected list specific: ┌─────────────┬───────────┬────────────┬───────────┬───────────┐ │ Node │ MSR │ MSR │ Cc-status │ Cc-uptime │ │ │ │ version │ │ │ ├─────────────┼───────────┼────────────┼───────────┼───────────┤ │ core1@ecss1 │ msr.ecss1 │ 3.14.10.42 │ connected │ 00:01:31 │ └─────────────┴───────────┴────────────┴───────────┴───────────┘
Производим настройку адаптера 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.20.11 Property "ip_set" successfully changed from: to test_set: no ports set test_set: sip1@ecss1 10.0.20.11 test_set: dscp 0.
Далее создаем домен и присваиваем ему созданную группу (IP-set) настроек SIP-адаптера:
admin@[mycelium1@ecss1]:/$ domain/declare test_domain --add-domain-admin-privileges --add-domain-user-privileges New domain test_domain is declared domain/test_domain/sip/network/set ip_set [test_set] Property "ip_set" successfully changed from: [] to ["test_set"].
После создания домена настраиваем:
Первоначальная установка системы с резервированием в кластере из двух серверов
Исходные данные
Исходные данные
В данном разделе использованы специфичные для данного продукта термины, ознакомиться с ними можно здесь.
Техническое задание:
Требуется интеграция программного коммутатора 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 | |
Характеристики системы | |||||
Максимальное количество абонентов | 3000 | 5000 | 10000 | 20000 | 40000 |
Максимальная нагрузка одновременных соединений class 5 | 500 | 800 | 1500 | 3000 | 6000 |
Максимальная нагрузка одновременных соединений class 4 | 1500 | 2400 | 4500 | 9000 | 20000 |
Характеристики сервера | |||||
Марка | HP (Lenovo) | HP (Lenovo) | HP (Lenovo) | HP (Lenovo) | HP (Lenovo) |
Серия | DL20 Gen10 (SR250) | DL20 Gen10 (SR250)/DL 360 Gen10 (SR530) | DL360 Gen10 (SR530/SR630) | DL360 Gen10 (SR630) | DL 360 Gen10 (SR630) |
Процессор | Intel Xeon E-2236 | Intel Xeon E-2276G/Intel Xeon 4214 | Intel Xeon 5220 | Intel Xeon 6240 | Intel Xeon 8268 |
Количество процессоров | 1 | 1 | 1 | 2 | 2 |
Объем ОЗУ | 8 ГБ | 12 ГБ | 16 ГБ | 24 ГБ | 64 ГБ |
HDD | От 3X500 SATA | От 3X500 SATA | От 3x300 ГБ SAS (от 10000 об/мин) | От 3x600 ГБ SAS | От 6x800 ГБ SSD, 2x300 ГБ M.2 SSD |
RAID | No raid board | No raid board | HW Raid, от 1 ГБ cache+battery | HW Raid, от 1 ГБ cache+battery | HW Raid, от 2 ГБ Flashcache, поддержка RAID-5 |
Дополнительные комплектующие сервера (в базовых комплект не входят) | |||||
Лицензия на удалённое управление | по желанию | по желанию | + | + | + |
Резервный источник питания | по желанию | по желанию | + | + | + |
Организация хранилища записей разговоров | Дополнительные 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 | 2000 | 15000 | Heavy |
Сервер 2 | Heavy |
После определения по требованиям проекта составляем предварительную сетевую карту.
Таблица 3. Пример разнесения составляющих по адресному пространству для одной ноды
Имя сервера (хоста) | Роль | Интерфейс | Адрес | Порт |
---|---|---|---|---|
Статические адреса программного коммутатора | ||||
ecss1 | Интерфейс управления сервером (порт 2000 ssh) | net.10 | 10.0.10.11/24 | 2000 |
ecss2 | Интерфейс управления сервером (порт 2000 ssh) | net.10 | 10.0.10.12/24 | 2000 |
ecss1 | Адрес ядра (ecss-core) | net.20 | 10.0.20.11/24 | 5000 |
ecss2 | Адрес ядра (ecss-core) | net.20 | 10.0.20.12/24 | 5000 |
ecss1, ecss2 | Адрес шлюза | net.10 | 10.0.10.1 | - |
ecss1, ecss2 | Адреса DNS-серверов | net.10 | 10.0.10.1, 8.8.8.8 | - |
ecss1, ecss2 | Адреса NTP-серверов | net.10 | 10.136.16.211, 10.136.16.212 | 123 |
Виртуальные адреса программного коммутатора | ||||
ecss1 | Виртуальный адрес программного адаптера хоста ecss1 | net.20:SIP1 | 10.0.20.31/24 | - |
ecss2 | Виртуальный адрес программного адаптера хоста ecss2 | net.20:SIP2 | 10.0.20.32/24 | - |
ecss1 | Запасной виртуальный адрес программного адаптера хоста ecss2 на хосте ecss1 | net.20:SIP2 | 10.0.20.32/24 | - |
ecss2 | Запасной виртуальный адрес программного адаптера хоста ecss1 на хосте ecss2 | net.20:SIP1 | 10.0.20.31/24 | - |
ecss1, ecss2 | Виртуальный адрес базы данных MySQL | net.10:MYSQL | 10.0.10.10/24 | 3306 |
Включение в сеть
Топологию включения сервера в сеть для обеспечения резервирования рекомендуется делать с использованием 2-х коммутаторов.
Рисунок 2 — Схема организации связи
Вариант 1. Схема active-backup
Коммутаторы связаны между собой в erps-кольцо.
Все 4 физических сетевых интерфейса каждого сервера объединяются в 1 агрегированный линк (bond). Агрегация портов сервера настраивается в режиме active-backup, т.е. в работе всегда находится только 1 сетевой интерфейс. Сетевые интерфейсы каждого сервера попарно включены в коммутаторы, на которых агрегация портов (port-channel) также настраивается в режиме active-backup. Например, eth0 и eth1 каждого сервера включаются в первый коммутатор (port-channel 1 и 2), а eth2 и eth3 (port-channel 3 и 4) — во второй.
Вариант 2. Схема LACP
Коммутаторы связаны между собой в стек. Стек должен логически работать как один коммутатор, способный обеспечивать агрегацию портов в режиме LACP между разными физическими коммутаторами. Пример — коммутаторы MES-3124 со специализированной прошивкой.
Все 4 физических сетевых интерфейса также объединяются в 1 агрегированный линк (bond). Агрегация портов сервера настраивается в режиме 802.3ad. Создаются агрегированные группы сетевых карт с одинаковой скоростью и дуплексом. При таком объединении передача задействует все каналы в активной агрегации согласно стандарту IEEE 802.3ad. Выбор того, через какой интерфейс необходимо отправлять пакет, определяется политикой. По умолчанию это XOR-политика, можно использовать «xmit_hash» политику. Подробнее — в разделе Приложение Е. Netplan.
Требования:
- Поддержка Ethtool в драйвере для получения информации о скорости и дуплексе на каждом сетевом интерфейсе;
- Поддержка на коммутаторе стандарта IEEE 802.3ad;
Сетевые интерфейсы сервера также попарно включены в коммутаторы, на которых агрегация портов (port-channel) тоже настраивается в режиме LACP. Например, eth0 и eth1 каждого сервера включаются в первый коммутатор (port-channel 1 и 2), а eth2 и eth3 (port-channel 3 и 4) — во второй.
Настройка сети
Согласно параметрам, заданным в техническом задании, выполним сетевые настройки. В данном примере считается, что уже установлена необходимая операционная система. О том, как это сделать, смотрите в разделе Инсталляция системы.
Рекомендуется разделять трафик, используемый в разных целях. Например, трафик управления и трафик VoIP. Для этого создаются 2 или более vlan. При небольшой нагрузке для простоты можно обойтись и одним vlan, но это может в будущем доставлять неудобства при снятии дампов трафика и его анализе. В соответствии с техническим заданием на vlan настраиваются IP-адреса самого хоста, шлюзы, DNS и маршрутизация в другие сети.
В данном примере согласно ТЗ будем использовать адреса (в скобках — различия для ecss2):
- 10.0.10.11(12)/24 — для управления, vlan 10;
- 10.0.20.21(22)/24 — core, vlan 20;
- 10.0.20.31(32)/24 — виртуальные (vrrp) для VoIP;
- 10.0.10.10 — виртуальный (vrrp) адрес сервера MySQL;
- 10.0.10.1 — шлюз и dns для доступа во внешнюю сеть;
- 10.0.20.1 — шлюз в подсеть 10.0.3.0/24;
- 10.136.16.211, 10.136.16.212 — адреса NTP-серверов, доступ до которых осуществляется через шлюз 10.0.10.1.
Внутри серверной платформы существует адресная структура и используются внутренние адреса для взаимодействия между подсистемами (нодами) в кластере. Например, внутренний адрес для кластера на одном сервере 10.0.20.21, при этом ядро (ecss-core) взаимодействует с сервером обработки мультимедиа-данных (ecss-media-server). Их взаимодействие происходит с использованием одного и того же адреса, но у каждой программной части свой транспортный порт: ecss-core — 5000, ecss-msr — 5040.
Для всех нод кластера определяется единый адрес для обращения к базе данных MySQL, например, адрес ecss-mysql 10.0.10.10. Таким образом, выполняется условие единообразия, при котором все ноды кластера имеют полностью одинаковые данные о текущем состоянии динамических составляющих программного коммутатора (например, история вызовов).
Сначала настраиваются сетевые интерфейсы. В Ubuntu18 для настройки используется утилита netplan:
sudo nano /etc/netplan/ecss_netplan.yaml |
В конфигурациях для каждого хоста в первую очередь мы объявляем секцию ethernets, в которой описываются существующие в системе ethernet-интерфейсы, используемые в дальнейшем. Для каждого интерфейса необходимо отключить использование динамического распределения адресов (DHCP).
Следующим разделом описываются агрегированные каналы — bonds. В зависимости от выбранного варианта включения в сеть настраивается режим режим резерва 1:1 (active - backup) или LACP (802.3ad).
Далее настраиваются vlan, на которых опционально определяются шлюзы для связи с внешним миром и адреса DNS-серверов, а также непосредственно IP-адреса для каждого интерфейса.
ВАЖНО
Обратите внимание, что во время редактирования netplan необходимо соблюдать правила разметки YAML:
- Обязательное наличие двух пробелов перед каждой строкой (кроме network);
- Каждая подсекция дополнительно сдвигается на 2 пробела:
→ Секция |network
→ Подсекция |_'_'bonds:
→ Подсекция описания секции bonds |_'_'_'_'bonded_one:
→ и т.д. |_'_'_'_'...
- Перед знаком ":" нет пробела, после — один пробел;
- Перед знаком "-" количество пробелов такое, как будто начинается новый подраздел, после — один пробел.
Пример netplan для режима active-backup
Netplan для интерфейсов сервера ecss1 (/etc/netplan/ecss_netplan.yaml) | Netplan для интерфейсов сервера ecss2 (/etc/netplan/ecss_netplan.yaml) |
---|---|
# Netplan для хоста ecss1 программного коммутатора # Обратите внимание на обязательное наличие минимум двух пробелов в каждой строке и секции (кроме строки секции network) network: version: 2 # Версия netplan renderer: networkd # Исполнитель конфигураций netplan ethernets: # Раздел описания интерфейсов ethernet eth0: # Название интерфейса dhcp4: no # Отключаем на интерфейсах динамическое распределение IP-адреса eth1: dhcp4: no eth2: dhcp4: no eth3: dhcp4: no bonds: # Раздел описания связанных (bonding) интерфейсов bond1: # Название bonding-интерфейса interfaces: # Секция определения связанного интерфейса - eth0 - eth1 - eth2 - eth3 parameters: # Раздел определения параметров связанного интерфейса mode: active-backup # Режим резервирования 1:1 mii-monitor-interval: 100 # интервал мониторинга интерфейса(мс) primary: eth0 # Секция определения основного интерфейса optional: false # Определение, является ли интерфейс обязательным при старте vlans: net.10: # Интерфейс управления id: 10 link: bond1 addresses: [10.0.10.11/24] gateway4: 10.0.10.1 # Адрес шлюза nameservers: addresses: [10.0.10.1, 8.8.8.8] # Адреса серверов DNS routes: # Маршрутизация в подсеть к NTP - to: 10.136.16.0/24 via: 10.0.10.1 # Адрес шлюза в данную подсеть on-link: true # Определяет, что указанные маршруты непосредственно связаны с интерфейсом net.20: # Интерфейс для VoIP id: 20 link: bond1 addresses: [10.0.20.11/24] routes: - to: 10.0.3.0/24 via: 10.0.20.1 on-link: true | # Netplan для хоста ecss2 программного коммутатора # Обратите внимание на обязательное наличие минимум двух пробелов в каждой строке и секции (кроме строки секции network) network: version: 2 # Версия netplan renderer: networkd # Исполнитель конфигураций netplan ethernets: # Раздел описания интерфейсов ethernet eth0: # Название интерфейса dhcp4: no # Отключаем на интерфейсах динамическое распределение IP-адреса eth1: dhcp4: no eth2: dhcp4: no eth3: dhcp4: no bonds: # Раздел описания связанных (bonding) интерфейсов bond1: # Название bonding-интерфейса interfaces: # Секция определения связанного интерфейса - eth0 - eth1 - eth2 - eth3 parameters: # Раздел определения параметров связанного интерфейса mode: active-backup # Режим резервирования 1:1 mii-monitor-interval: 100 # интервал мониторинга интерфейса(мс) primary: eth0 # Секция определения основного интерфейса optional: false # Определение, является ли интерфейс обязательным при старте vlans: network.10: # Интерфейс управления id: 10 link: bond1 addresses: [10.0.10.12/24] gateway4: 10.0.10.1 # Адрес шлюза nameservers: addresses: [10.0.10.1, 8.8.8.8] # Адреса серверов DNS routes: # Маршрутизация в подсеть к NTP - to: 10.136.16.0/24 via: 10.0.10.1 # Адрес шлюза в данную подсеть on-link: true # Определяет, что указанные маршруты непосредственно связаны с интерфейсом network.20: # Интерфейс для VoIP id: 20 link: bond1 addresses: [10.0.20.12/24] routes: - to: 10.0.3.0/24 via: 10.0.20.1 on-link: true |
Пример netplan для режима 802.3ad
Netplan для интерфейсов сервера ecss1 (/etc/netplan/ecss_netplan.yaml) | Netplan для интерфейсов сервера ecss2 (/etc/netplan/ecss_netplan.yaml) |
---|---|
# Netplan для хоста ecss1 программного коммутатора # Обратите внимание на обязательное наличие минимум двух пробелов в каждой строке и секции (кроме строки секции network) network: version: 2 # Версия netplan renderer: networkd # Исполнитель конфигураций netplan ethernets: # Раздел описания интерфейсов ethernet eth0: # Название интерфейса dhcp4: no # Отключаем на интерфейсах динамическое распределение IP-адреса eth1: dhcp4: no eth2: dhcp4: no eth3: dhcp4: no bonds: # Раздел описания связанных (bonding) интерфейсов bond1: # Название bonding-интерфейса interfaces: # Секция определения связанного интерфейса - eth0 - eth1 - eth2 - eth3 parameters: # Раздел определения параметров связанного интерфейса mode: 802.3ad # Режим LACP mii-monitor-interval: 100 # интервал мониторинга интерфейса(мс) primary: eth0 # Секция определения основного интерфейса optional: false # Определение, является ли интерфейс обязательным при старте vlans: net.10: # Интерфейс управления id: 10 link: bond1 addresses: [10.0.10.11/24] gateway4: 10.0.10.1 # Адрес шлюза nameservers: addresses: [10.0.10.1, 8.8.8.8] # Адреса серверов DNS routes: # Маршрутизация в подсеть к NTP - to: 10.136.16.0/24 via: 10.0.10.1 # Адрес шлюза в данную подсеть on-link: true # Определяет, что указанные маршруты непосредственно связаны с интерфейсом net.20: # Интерфейс для VoIP id: 20 link: bond1 addresses: [10.0.20.11/24] routes: - to: 10.0.3.0/24 via: 10.0.20.1 on-link: true | # Netplan для хоста ecss2 программного коммутатора # Обратите внимание на обязательное наличие минимум двух пробелов в каждой строке и секции (кроме строки секции network) network: version: 2 # Версия netplan renderer: networkd # Исполнитель конфигураций netplan ethernets: # Раздел описания интерфейсов ethernet eth0: # Название интерфейса dhcp4: no # Отключаем на интерфейсах динамическое распределение IP-адреса eth1: dhcp4: no eth2: dhcp4: no eth3: dhcp4: no bonds: # Раздел описания связанных (bonding) интерфейсов bond1: # Название bonding-интерфейса interfaces: # Секция определения связанного интерфейса - eth0 - eth1 - eth2 - eth3 parameters: # Раздел определения параметров связанного интерфейса mode: 802.3ad # Режим LACP mii-monitor-interval: 100 # интервал мониторинга интерфейса(мс) primary: eth0 # Секция определения основного интерфейса optional: false # Определение, является ли интерфейс обязательным при старте vlans: network.10: # Интерфейс управления id: 10 link: bond1 addresses: [10.0.10.12/24] gateway4: 10.0.10.1 # Адрес шлюза nameservers: addresses: [10.0.10.1, 8.8.8.8] # Адреса серверов DNS routes: # Маршрутизация в подсеть к NTP - to: 10.136.16.0/24 via: 10.0.10.1 # Адрес шлюза в данную подсеть on-link: true # Определяет, что указанные маршруты непосредственно связаны с интерфейсом network.20: # Интерфейс для VoIP id: 20 link: bond1 addresses: [10.0.20.12/24] routes: - to: 10.0.3.0/24 via: 10.0.20.1 on-link: true |
Применим установленные параметры командой:
sudo netplan apply |
Просмотреть получившиеся настройки можно при помощи команд ifconfig или ip a:
Настройка /etc/hosts
После настройки netplan необходимо указать, что внутренний адрес 192.168.1.Х принадлежит соответствующему серверу ecssX. Для этого настраиваем /etc/hosts:
Настройка hosts для ecss1 (/etc/hosts) | Настройка hosts для ecss2 (/etc/hosts) |
---|---|
sudo nano /etc/hosts 127.0.0.1 localhost # Адрес локальной петли, используется некоторыми сервисами ecss | sudo nano /etc/hosts |
Теперь, если вызвать утилиту ping на ecssX, можно обратиться к соседнему серверу.
Обращение к ecss2 с ecss1 | Обращение к ecss1 с ecss2 |
---|---|
sasha@ecss1:~$ ping ecss2 PING ecss2 (10.0.10.12) 56(84) bytes of data. 64 bytes from ecss2 (10.0.10.12): icmp_seq=1 ttl=64 time=0.047 ms | sasha@ecss1:~$ ping ecss1 PING ecss1 (10.0.10.11) 56(84) bytes of data. 64 bytes from ecss1 (10.0.10.11): icmp_seq=1 ttl=64 time=0.032 ms |
Обновление программного обеспечения операционной системы
Для установки системы 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"
Обратите внимание, что требуется указать верную версию операционной системы при добавлении репозитория ЭЛТЕКС:
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 apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 33CB2B750F8BB6A5
Для обновления ОС необходимо выполнить команды:
sudo apt update sudo apt upgrade
Установка и настройка программного обеспечения
Устанавливаем все предложенные пакеты:
sudo apt install ntp tcpdump vlan dnsmasq aptitude atop ethtool htop iotop mc minicom mtr-tiny nmap pptpd pv screen ssh tftpd vim sngrep tshark cpanminus gnuplot libgraph-easy-perl debconf-utils
Устанавливаем также пакеты для системы с резервированием:
sudo apt install ifenslave-2.6 keepalived attr
Установка пакета ecss-mysql
Для установки выполняем команду:
sudo apt install ecss-mysql
Настройка пакета ecss-dns-env
Перед установкой пакета ecss-mysql вам будет предложено настроить переменные окружения для сервисов в dnsmasq. Настройщик предложит выбрать разделы для настройки. Нужно выбрать broker и mysql.
Вопрос | Ответы для ecss1 | Ответы для ecss2 |
---|---|---|
Адрес первичного брокера ([Primary broker] Enter ip) | 10.0.10.11 | 10.0.10.11 |
Адрес вторичного брокера ([Secondary broker] Enter ip) | 10.0.10.12 | 10.0.10.12 |
Адрес mysql ([Mysql] Enter ip) | 10.0.10.10 | 10.0.10.10 |
ВАЖНО
Для изменения ip-адресов рекомендуется использовать команду:sudo dpkg-reconfigure ecss-dns-env
Настройка пакета ecss-mysql
Во время установки настройщик задаст вопросы, ответы указаны в таблице ниже. Обратите внимание, что пароль является одинаковым для обоих хостов, на которых устанавливается mysql.
Вопросы | Ответы для ecss1 | Ответы для ecss2 |
---|---|---|
Адресная маска для MySQL (IP pattern for MySQL permission) | 10.0.10.% | 10.0.10.% |
Логин пользователя (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/ total 36 drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:36 ecss_address_book drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:37 ecss_audit drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:36 ecss_calls_db drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:36 ecss_dialer_db drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:36 ecss_meeting_db drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:36 ecss_statistics drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:36 ecss_subscribers drwxr-xr-x 2 mysql mysql 4096 Sep 26 13:36 history_db drwxr-xr-x 2 mysql mysql 4096 Sep 26 14:32 web_conf
Проверяем, что сервер запущен:
systemctl status mysql.service ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Drop-In: /etc/systemd/system/mysql.service.d └─override.conf Active: active (running) since Sun 2022-02-06 15:25:15 +07; 3 days ago Process: 3766 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid (code=exited, status=0/SUCCESS) Process: 3736 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Main PID: 3783 (mysqld) Tasks: 87 (limit: 4915) CGroup: /system.slice/mysql.service └─3783 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid
Далее следует поддержать доступ между серверами с ecss-mysql через ssh по rsa-ключам без использования пароля.
На хосте ecss1 сгенерируем rsa-ключ следующий командой (выполняем команду без sudo, чтобы ключ сгенерировался для текущего пользователя):
ssh-keygen ssh-copy-id tester@ecss2
Таким же образом генерируем rsa-ключ на хосте ecss2, заменяя host-часть на ecss1.
ssh-keygen ssh-copy-id tester@ecss1
Далее следует запустить скрипт репликации БД mysql на ecss1:
sudo /usr/lib/ecss/ecss-scripts/mysql-replication/install_replication.sh
Перед выполнением скрипта необходимо определить некоторые параметры. Пример ответа на вопросы для разных хостов приведен ниже. Следует обратить внимание, что пароль PASSWORD — это тот же пароль, который задавался выше. Виртуальный адрес mysql задаем вручную. Причина приведена в разделе "Настройка виртуального адреса для MySQL".
Вопросы | Ответы для ecss1 |
---|---|
Логин для доступа к БД | root |
Пароль для доступа к БД | PASSWORD |
Логин для пользователя репликации | replica |
Пароль для пользователя репликации | replica |
Адрес первого хоста | 10.0.10.11 |
Адрес второго хоста | 10.0.10.12 |
Имя второго хоста | ecss2 |
Имя пользователя на втором хосте | tester |
Mediator IP | 127.0.0.1 |
Порт SNMP | 162 |
Создать конфигурацию keepalived | нет |
После работы скрипта можно проверить, что в MySQL создан пользователь replica@10.0.10.% и replica@% на обоих хостах:
mysql -uroot -ppassword mysql> SELECT user,host FROM mysql.user;
Среди всех пользователей можно увидеть такую запись:
+------------------+---------------+ |
Проверяем состояние реплики:
sudo mysql -uroot -p -e 'show slave status \G;' | grep -E "Slave_IO_Running:|Slave_SQL_Running:" |
Редактирование keepalived.conf
Следующий шаг — редактирование глобального конфигурационного файла keepalived.conf. На обоих хостах содержимое файла одинаковое:
sudo nano /etc/keepalived/keepalived.conf
global_defs {
vrrp_version 3 # версия протокола VRRP (2 или 3)
script_user nobody # ограниченный в правах системный пользователь, от которого будут запускаться скрипты проверки доступности
enable_script_security # не запускать скрипты от root, если часть пути к ним доступна на запись для обычных пользователей
}
include /etc/keepalived/sip.conf
include /etc/keepalived/mysql.conf
Поскольку при создании репликации не была задействована автоматическая генерация конфигурации для mysql, то в конфигурационном файле нужно сделать ссылку на mysql.conf:
include /etc/keepalived/mysql.conf
Далее на обоих хостах создаются файлы /etc/keepalived/mysql.conf
Создание VRRP для MySQL.
/etc/keepalived/mysql.conf для ecss1 | /etc/keepalived/mysql.conf для ecss2 |
---|---|
# Конфигурация mysql первой ноды: vrrp_script check_mysql { script "/usr/bin/mysql --defaults-file=/etc/mysql/debian.cnf -e 'SELECT 1;'" user root interval 2 fall 1 timeout 2 } vrrp_instance MySQL { state MASTER # Исходное состояние при старте interface net.10 # Имя сетевого интерфейса, на котором будет работать протокол VRRP virtual_router_id 10 # Уникальный идентификатор роутера (0..255) priority 100 # Приоритет (0..255) чем выше - тем больше advert_int 1 # Интервал рассылки уведомлений (с) preempt_delay 60 # Интервал ожидания мастера при старте демона (с) при исходном состоянии BACKUP unicast_src_ip 10.0.10.11 # Собственный реальный IP-адрес unicast_peer { 10.0.10.12 # Реальный IP-адрес соседа } virtual_ipaddress { # Виртуальный IP-адрес и маска # dev - сетевой интерфейс, на котором будет поднят виртуальный адрес # label - метка виртуального интерфейса (для удобства идентификации) 10.0.10.10/24 dev net.10 label net.10:mysql } track_script { check_mysql } } | # Конфигурация mysql второй ноды: vrrp_script check_mysql { script "/usr/bin/mysql --defaults-file=/etc/mysql/debian.cnf -e 'SELECT 1;'" user root interval 2 fall 1 timeout 2 } vrrp_instance MySQL { state BACKUP # Исходное состояние при старте interface net.10 # Имя сетевого интерфейса, на котором будет работать протокол VRRP virtual_router_id 10 # Уникальный идентификатор роутера (0..255) priority 50 # Приоритет (0..255) чем выше - тем больше advert_int 1 # Интервал рассылки уведомлений (с) preempt_delay 60 # Интервал ожидания мастера при старте демона (с) при исходном состоянии BACKUP unicast_src_ip 10.0.10.12 # Собственный реальный IP-адрес unicast_peer { 10.0.10.11 # Реальный IP-адрес соседа } virtual_ipaddress { # Виртуальный IP-адрес и маска # dev - сетевой интерфейс, на котором будет поднят виртуальный адрес # label - метка виртуального интерфейса (для удобства идентификации) 10.0.10.10/24 dev net.10 label net.10:mysql } track_script { check_mysql } } |
В данной конфигурации мы задаем ID для виртуального маршрутизатора, который будет являться балансером для своего хоста. Важно, чтобы virtual_router_id совпадали у обоих хостов.
После проверки необходимо перезапустить сервис keepalived:
sudo systemctl restart keepalived.service |
Установка ecss-node
Устанавливаем пакет ecss-node:
sudo apt install ecss-node
Во время установки будет предложено настроить некоторые параметры, пример ответов следует ниже.
Подробнее о настройке NTP в разделе "Синхронизация времени на серверах".
Вопросы | Ответы для ecss1 | Ответы для ecss2 |
---|---|---|
Выключить ежедневные обновления (Do you want turn off apt-daily update ?) | Yes | Yes |
Установить настройки по умолчанию для БД (Set DB config to default ?) | Yes | Yes |
Взводить аварию ECSS-10 при заполнении раздела MySQL (Set alarm true when MYSQL DB overloads) | Yes | Yes |
NTP: Вы хотите использовать настройки для кластера? (NTP: Do you want use settings for cluster ?) | Yes | Yes |
Установить приоритет NTP для кластера (NTP: Set stratum for cluster) | 7 | 7 |
Внешние NTP-серверы через пробел: (External NTP servers through a space) | 10.136.16.211 10.136.16.212 | |
NTP: Вы хотите использовать другие сервера для синхронизации времени? (NTP: Do you want to use other servers for time synchronization?) | Yes | Yes |
NTP: укажите локальные серверы для синхронизации через пробел: (NTP: Indicate local servers for synchronization separated a space:) | 10.0.10.12 | 10.0.10.11 |
NTP: Вы хотите определить сети, у которых должен быть доступ до ntp, вручную? (NTP: Do you want to define manually which networks should have access to ntp?) | Yes | Yes |
NTP: Сети, у которых должен быть доступ до ntp через пробел: Формат: <сетевой адрес>|маска (x.x.x.x|255.255.255.0) | 10.0.10.0|255.255.255.0 | 10.0.10.0|255.255.255.0 |
Установить утилиты для работы с cdr | No | No |
Установка остальных пакетов ecss и их настройка
Далее на обоих хостах выполняем установку всех необходимых пакетов (подробнее по установке необходимых и дополнительных пакетов в разделе "Инсталляция пакетов ECSS"):
sudo apt install ecss-media-server ecss-media-resources ecss-web-conf ecss-restfs
Для медиасервера (ecss-media-server/MSR) возможно начальное конфигурирование с записью параметров в файл конфигурации, для этого нужно провести конфигурацию transport-port, transport bind-addr,mcc bind-addres, mcc bind-port:
Вопросы ecss-media-server | Ответы для ecss1 | Ответы для ecss2 |
---|---|---|
Введите порт (Enter) | 5040 | 5040 |
Введите bind-ip адрес (Enter) | 10.0.20.11 | 10.0.20.12 |
Введите адрес контрольного канала (bind-addr) | 10.0.20.11 | 10.0.20.12 |
Введите порт контрольного канала | 5700 | 5700 |
Выберите режим конфигурации (Choose config mode) | auto | auto |
Установить настройки по умолчанию: | yes | yes |
Введите имя (Enter) | msr.ecss1 | msr.ecss2 |
Введите адрес (Entrer) | 10.0.20.11 | 10.0.20.12 |
Введите порт (Entrer) | 5000 | 5000 |
После формирования конфигураций по умолчанию переходим в директорию, в которой находятся файлы конфигурации и производим их проверку:
cd /etc/ecss/ecss-media-server/ |
Внутри лежит конфигурация для msr: config.xml, в директории conf.d лежит конфигурация default.xml.
По своей сути default.xml — это дополнение config.xml, которое определяет секцию аккаунтов. Это сделано для того, чтобы после обновлений пакета данная конфигурация оставалась неизменной. Вид config.xml представлен здесь: файл конфигурации.
Рассмотрим секцию аккаунтов (файл default.xml):
Настройка msr для ecss1 (/etc/ecss/ecss-media-server/conf.d/default.xml) | Настройка msr для ecss2 (/etc/ecss/ecss-media-server/conf.d/default.xml) |
---|---|
CODE
|
CODE
|
В ней указаны текущие настройки, согласно которым происходит регистрация msr на core.
Основными параметрами здесь являются: msr_name и realm:
- msr_name — параметр, определяющий название msr. (рекомендуется задавать msr. и к какому хосту он принадлежит, например msr.ecss1);
- realm — определяет адрес для регистрации на ядре. Точка входа по умолчанию — порт 5000.
Описание настройки остальных сервисов приведено в разделе "Инсталляция дополнительных необязательных пакетов".
Настройка VRRP для SIP-адаптера
Выполним настройку VRRP для SIP-адаптера, для этого на обоих хостах создаем файлы следующего содержания:
sudo nano /etc/keepalived/sip.conf |
etc/keepalived/sip.conf для ecss1 | etc/keepalived/sip.conf для ecss2 |
---|---|
vrrp_script check_sip { script "/usr/bin/ecss_pa_sip_port 65535" interval 2 timeout 2 } # Конфигурация адреса для первого виртуального адреса SIP-адаптера vrrp_instance SIP1 { state MASTER # Исходное состояние при старте interface net.20 # Имя сетевого интерфейса, на котором будет работать протокол VRRP virtual_router_id 31 # Уникальный идентификатор роутера (0..255) priority 100 # Приоритет (0..255) чем выше - тем больше advert_int 1 # Интервал рассылки уведомлений (с) preempt_delay 60 # Интервал ожидания мастера при старте демона (с) при исходном состоянии BACKUP unicast_src_ip 10.0.20.11 # Собственный реальный IP-адрес unicast_peer { 10.0.20.12 # Реальный IP-адрес соседа } virtual_ipaddress { # Виртуальный IP-адрес и маска # dev - сетевой интерфейс, на котором будет поднят виртуальный адрес # label - метка виртуального интерфейса (для удобства идентификации) 10.0.10.31/24 dev net.20 label net.20:SIP1 } | vrrp_script check_sip { script "/usr/bin/ecss_pa_sip_port 65535" interval 2 timeout 2 } # Конфигурация адреса для первого виртуального адреса SIP-адаптера vrrp_instance SIP1 { state BACKUP # Исходное состояние при старте interface net.20 # Имя сетевого интерфейса, на котором будет работать протокол VRRP virtual_router_id 31 # Уникальный идентификатор роутера (0..255) priority 50 # Приоритет (0..255) чем выше - тем больше advert_int 1 # Интервал рассылки уведомлений (с) preempt_delay 60 # Интервал ожидания мастера при старте демона (с) при исходном состоянии BACKUP unicast_src_ip 10.0.20.12 # Собственный реальный IP-адрес unicast_peer { 10.0.10.11 # Реальный IP-адрес соседа } virtual_ipaddress { # Виртуальный IP-адрес и маска # dev - сетевой интерфейс, на котором будет поднят виртуальный адрес # label - метка виртуального интерфейса (для удобства идентификации) 10.0.20.31/24 dev net.20 label net.20:SIP1 } |
В данном случае мы добавили поддержку виртуальных интерфейсов со связью Master - Backup. Для ecss1 основным будет являться net.20:SIP1, а запасным — net.20:SIP2 соответственно. Важно учесть, что в конфигурации учтено использование адресных переменных. В секции interface требуется указать, на каком интерфейсе будут слушаться VRRP-сообщения, а в секции virtual_ipaddress требуется указать интерфейс, на котором будет восстановлен виртуальный адрес.
Выполняем перезапуск keepalived:
sudo systemctl restart keepalived.service |
Дальнейшая настройка
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 -*- .... |
epmd
Выполняем настройку epmd:
systemctl edit epmd.service |
Создаем новый сервис и редактируем его:
Настройка epmd ecss1 | Настройка epmd ecss2 |
---|---|
[Service] Environment="ERL_EPMD_ADDRESS=127.0.1.1,10.0.10.11" | [Service] Environment="ERL_EPMD_ADDRESS=127.0.1.1,10.0.10.12" |
Перезапускаем сервисы:
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 10.0.10.12 |
Проверяем наличие созданной связи:
sudo gluster peer status |
Далее создаем кластер для репликации, запускаем репликацию и смотрим ее статус:
sudo gluster volume create ecss_volume replica 2 transport tcp 110.0.10.11:/var/lib/ecss/glusterfs 10.0.10.12:/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 <...> |
После настройки glusterfs необходимо переустановить пакет ecss-media-resources:
sudo apt install --reinstall ecss-media-resources
snpmd
Настройка SNMP описана в разделе "Управление и мониторинг по протоколу SNMP".
Настройка безопасности. SSH
Выполняем настройку сервера SSH:
sudo nano /etc/ssh/sshd_config
Укажем в конфигурационном файле порт и адрес, по которому можно обратиться к серверу:
Настройка ssh для ecss1 (/etc/ssh/sshd_config) | Настройка ssh для ecss2 (/etc/ssh/sshd_config) |
---|---|
# This is the sshd server system-wide configuration file. See # This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin # The strategy used for options in the default sshd_config shipped with Port 2000 <...> | # This is the sshd server system-wide configuration file. See # This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin # The strategy used for options in the default sshd_config shipped with Port 2000 <...> |
Перезапустим ssh:
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.10.222 │ds1@ecss1 │ds1@ecss1 │0h 9m │ │ │mycelium1@ecss1│ecss-mycelium-3.14.10.222 │mycelium1@ecss1│not running │0h 9m │ └─┴───────────────┴──────────────────────────┴───────────────┴─────────────┴──────┘
Далее необходимо загрузить паспорт и лицензии в систему:
cluster/storage/ds1/licence/set-passport <ssw passport> ok cluster/storage/ds1/licence/add <ssw licence> ok
Выходим и запускаем остальные сервисы на первом и втором хосте.
ecss1:
sudo systemctl start ecss-core ecss-pa-sip ecss-mediator ecss-media-server ecss-restfs ecss-web-conf
ecss2:
sudo systemctl start ecss-mycelium ecss-ds ecss-core ecss-pa-sip ecss-mediator ecss-media-server ecss-restfs ecss-web-conf
Возвращаемся в CLI:
ssh admin@localhost -p 8023 password: password
После устанавливается связь MSR- и Core-подсистем. Для этого прописывается команда:
admin@[mycelium1@ecss1]:/$ /system/media/resource/declare core1@ecss1 iface msr.ecss1 bond1_ecss1_pa default local true admin@[mycelium1@ecss1]:/$ /system/media/resource/declare core1@ecss2 iface msr.ecss2 bond1_ecss2_pa default local true
После того как все сервисы будут запущены, ноды какое-то время будут устанавливать связь. Как только все ноды загрузятся в system-status, последует вывод следующей информации:
admin@mycelium1@ecss1:/$ system-status Checking... ┌─┬───────────────┬──────────────────────────┬───────────────────────────────┬───────────────────────────┬───────┐ │ │ Node │ Release │ Erlang nodes │ Mnesia nodes │Uptime │ ├─┼───────────────┼──────────────────────────┼───────────────────────────────┼───────────────────────────┼───────┤ │ │core1@ecss1 │ecss-core-3.14.10.222 │core1@ecss1,core1@ecss2 │not running │34m 28s│ │ │core1@ecss2 │ecss-core-3.14.10.222 │core1@ecss1,core1@ecss2 │not running │6m │ │ │ds1@ecss1 │ecss-ds-3.14.10.222 │ds1@ecss1,ds1@ecss2 │ds1@ecss1,ds1@ecss2 │34m 29s│ │ │ds1@ecss2 │ecss-ds-3.14.10.222 │ds1@ecss1,ds1@ecss2 │ds1@ecss1,ds1@ecss2 │6m │ │ │md1@ecss1 │ecss-mediator-3.14.10.222 │md1@ecss1,md1@ecss2 │md1@ecss1,md1@ecss2 │33m 54s│ │ │md1@ecss2 │ecss-mediator-3.14.10.222 │md1@ecss1,md1@ecss2 │md1@ecss1,md1@ecss2 │6m │ │ │mycelium1@ecss1│ecss-mycelium-3.14.10.222 │mycelium1@ecss1,mycelium1@ecss2│not running │34m 49s│ │ │mycelium1@ecss2│ecss-mycelium-3.14.10.222 │mycelium1@ecss1,mycelium1@ecss2│not running │6m │ │ │sip1@ecss1 │ecss-pa-sip-3.14.10.222 │sip1@ecss1,sip1@ecss2 │sip1@ecss1,sip1@ecss2 │33m 54s│ │ │sip1@ecss2 │ecss-pa-sip-3.14.10.222 │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.10.67 │ connected │ 00:32:03 │ │ │ msr.ecss2 │ 3.14.10.67 │ connected │ 00:23:56 │ │ core1@ecss2 │ msr.ecss1 │ 3.14.10.67 │ connected │ 00:02:39 │ │ │ msr.ecss2 │ 3.14.10.67 │ 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.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: 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 = [5062] Property "ip_set" successfully changed from: ipset1: ipset1: sip1@ecss1 10.0.20.31 ipset1: sip1@ecss2 10.0.20.32 ipset1: dscp 0 to ipset1: 5062 ipset1: sip1@ecss1 10.0.20.31 ipset1: sip1@ecss2 10.0.20.32 ipset1: 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 — Вид приложения "Управление пользователями"
Нажмите кнопку "Добавить" . В открывшемся окне требуется определить новую учетную запись, для этого:
- В поле "Имя" введите логин учетной записи, например "test";
- В поле "Пароль" и "Подтверждение" введите пароль для пользователя, например "testpassword";
- Определите уровень прав доступа для пользователя через выбор текущих разрешений или с помощью ролей, например ecss-user. Описание можно посмотреть в разделе "Управление пользователями".
Рисунок 6 — Диалоговое окно создания учетной записи оператора
Рисунок 7 — Вид приложения с созданной учетной записью оператора
Для смены пароля рядом с названием пользователя нажмите на кнопку редактировать. В появившемся диалоговом окне введите:
1. Старый пароль (для пользователя "admin" по умолчанию паролем является "password");
2. Новый пароль;
3. Подтвердите новый пароль.
Рисунок 8 — Диалоговое окно редактирования учетной записи
Создание домена
Для создания домена необходимо войти в приложение "Домены" ("Domain"). В открывшемся окне требуется создать домен, для этого:
1. Нажмите кнопку "Добавить домен":
Рисунок 9 — Добавление домена в систему
2. В появившемся диалоговом окне доступны следующие настройки:
- Имя (Name) — индивидуальное имя виртуальной АТС;
- Профиль услуг (SS profile) — системный профиль дополнительных услуг. Этот профиль будет скопирован с тем же именем во вновь создаваемый домен и для всех услуг из этого профиля будет автоматически разрешён доступ через access-list;
- IVR профиль (IVR profile) — профиль IVR, заданный в приложении "Редактор IVR ограничений".
Введите название домена, например "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.20.10:
Рисунок 14 — Вид приложения "Кластеры/Транспорт"
Для системы с резервированием укажите 10.0.20.31 и 10.0.20.32:
Рисунок 15 — Вид приложения "Кластеры/Транспорт" для кластера
Нажмите кнопку "Сохранить" для применения настроек.
Для того чтобы привязать группу адресов к домену, необходимо вернуться в приложение "Домены" ("Domain"), выделить домен и перейти в настройки нажатием на кнопку "Свойства домена" или двойным нажатием левой кнопки мыши на домен.
В настройках списка откройте ветку "SIP", в ней "SIP транспорт", далее выберите в поле IP set созданную группу адресов. Нажмите кнопку "Сохранить" для применения настроек.
Рисунок 16 — Окно настройки для SIP транспорта
Создание абонентов
Для создания и редактирования параметров абонентов в системе используется приложение "Карточка абонента" ("Subscriber card").
Рисунок 17 — Вид приложения "Карточка абонента"
В конфигурации возможно создание SIP-абонентов и виртуальных абонентов.
Для пользователей, имеющих физическое окончание, используется функционал SIP-абонента, в то время как виртуальный абонент используется тогда, когда нужна функциональность без физических окончаний. Например, номер для обращения к ivr-скрипту.
Для создания новых абонентов нужно нажать на кнопку "Добавить".
В появившемся диалоговом окне укажите следующие параметры:
- Контекст — контекст маршрутизации, выбираем тот, который создали, например "test_name";
Имя интерфейса — номер или группа номеров, который присваивается абоненту, например {100-110};
- Алиас как пользователь — настройка, которая связывает номер сущности, алиас и пользователя одним и тем же названием, в примере настройка активирована;
- Авторизация — порядок проверки подлинности прав пользователя на доступ к данным, в примере используется always;
- Логин — использую настройку номер как логин для простоты;
- Пароль — можно задать или использовать сгенерированный системой.
Рисунок 18 — Пример определения абонентов в домене
Создание и применение контекстов маршрутизации для домена
Маршрутизация отвечает за поиск номера и последующую адресацию вызова. Для корректной работы системы должен быть настроен как минимум один контекст маршрутизации.
Настройка маршрутизации осуществляется в приложении "Менеджер маршрутизации" ("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_set";
- Регистрация — если используется транковая, то нужно включить данный параметр, в примере она не используется;
- Хост [:порт] — 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 и rule3 настроить соответствующие результаты маршрутизации, для этого:
- rule1: в разделе "Результат" выберите подпункт "внешний". В таблице "Направления" в поле "Значение" добавьте созданный ранее транк, после чего сохраните правило .
- rule3: В разделе "Результат" выберите подпункт "ivr" и в поле скрипт добавьте созданный ранее ivr-скрипт, после чего сохраните правило и контекст .
Рисунок 28 — Вид контекста маршрутизации
Настройка услуг
Для настройки услуг необходимо выполнить несколько действий:
- Установить услуги через СoСon;
- Добавить услуги для домена в список доступа (access-list) через СoСon;
- Далее любая услуга в списке доступа становится применимой на абоненте или транке.
Для входа в CLI "CoСon" можно воспользоваться терминалом или приложением "Командная консоль CoCon" ("CoCon").
После авторизации в Cocon пропишите следующие команды:
- Для установки услуг в систему:
cluster/storage/ds1/ss/install ds1@ecss1 *
- После успешной установки услуг пропишите следующую строку для добавления доступа к ним:
cluster/storage/ds1/ss/access-list add test_domain *
Символ "*" означает, что команда будет применена ко всем доступным элементам в системе. Если требуется установить конкретную услугу, вместо "*" вводится её название.
Для подключения услуг абоненту необходимо открыть карточку абонента, выбрать абонента из списка и перейти на вкладку "Дополнительные услуги".
Рисунок 29 — Пример настройки услуг
Для активации услуги абоненту необходимо подключить ее, нажав кнопку , затем активировать и настроить (прочитать подробнее можно в разделе приложения "Карточка абонента" ("Subscriber card")).