Using a single server for the SSD does not provide redundancy. Therefore, upgrading to a new version without interrupting traffic is not possible.
There are two ways to upgrade.
The first option is to stop traffic and update PostgreSQL and all ecss packages on the working SSD, then activate the service and start traffic. The advantage of this option is a simple upgrade process. The disadvantage is a longer traffic interruption.
The second option is to perform a complete fresh installation of the OS on a separate host (physical or virtual), and then install the SSD using temporary IP addresses. During the installation, you will also need to copy the databases (Mnesia + PostgreSQL) from the old host to the new one. Once the new SSD is installed, the temporary IP addresses are replaced with those of the old SSD (at this point, the old SSD is disabled) and the MSR files are configured. After this, the new SSD begins serving traffic. The advantage of this option is minimal traffic interruption. The disadvantage is a more complex and time-consuming update procedure.
Select the appropriate option.
ECSS-10 version 3.17 supports two licensing types: file-based licenses (with or without a token) and ELM licenses. Depending on the licensing type, different commands will be executed during the update. You can check which type is used on your SWS using the following command:
When using a file license, the output will be:
When using an ELM license, the output will be:
|
Before performing the update procedure, perform a full backup. |
If you need the latest billing data, you need to finalize the current CDR and download the CDR files to a remote server:
/domain/test_domain/cdr/make_finalize_cdr Created file(s): cdr_20260522_11_51_16_1_c.csv |
| Perform a full backup |
sudo systemctl mask --now ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm |
When the attached command is executed, a notification will be displayed.
These messages are not errors. Continue with the procedure. |
sudo sh -c "echo deb [arch=amd64] http://archive.eltex.org/ssw/jammy/3.18 stable main extras external > /etc/apt/sources.list.d/eltex-ecss10-stable.list" |
sudo apt update |
If you see this system message:
Run the following command:
|
sudo docker compose -f /srv/ecss/ecss-postgres-bdr-ssw/docker-compose.container.yml down |
sudo docker compose -f /srv/ecss/ecss-postgres-bdr-ssw/docker-compose.container.yml down [+] down 2/2 ✔ Container ecss-postgres-bdr-ssw-postgres-container-1 Removed ✔ Network ecss-postgres-bdr-ssw_default Removed |
sudo apt remove ecss-postgres-bdr-ssw |
Run remove, not purge, because remove preserves the volumes directory with our database tables. |
sudo apt remove ecss-postgres-bdr-ssw Reading package lists... Done . . . The following packages will be REMOVED: ecss-postgres-bdr-ssw . . . Do you want to continue? [Д/н] y Deleting ecss-postgres-bdr-ssw (17.1.0.59+ssw) … |
sudo apt install ecss-postgres-bdr-ssw |
During installation, you will be asked the same questions as during the initial installation: The answers must exactly match those specified in the procedure, otherwise an attempt will be made to create a new database and the installation will fail. |
|
sudo apt install ecss-postgres-bdr-ssw . . . ================== Create databases ================== Database ecss_storekeeper_db already exists, skipping... Database web_conf already exists, skipping... Extension btree_gist already exists, skipping... Extension bdr already exists, skipping... =================================== Creating Postgres Exporter Schema =================================== Node IP: localhost psql:/srv/ecss/ecss-postgres-bdr-ssw/schema.sql:1: NOTICE: schema "postgres_exporter" already exists, skipping CREATE SCHEMA GRANT CREATE FUNCTION CREATE VIEW GRANT CREATE FUNCTION CREATE VIEW GRANT psql:/srv/ecss/ecss-postgres-bdr-ssw/schema.sql:28: NOTICE: extension "pg_stat_statements" already exists, skipping CREATE EXTENSION CREATE FUNCTION CREATE VIEW GRANT . . . ======================================================= ======================================================= ecss-postgres-bdr-ssw successfully installed/updated! ======================================================= ======================================================= ┏┓┏┓┏┓┏┳┓┏┓┳┓┏┓┏┓ ┳┓┳┓┳┓ ┏┓┏┓┓ ┏ ┃┃┃┃┗┓ ┃ ┃┓┣┫┣ ┗┓ ┣┫┃┃┣┫ ┗┓┗┓┃┃┃ ┣┛┗┛┗┛ ┻ ┗┛┛┗┗┛┗┛ ┻┛┻┛┛┗ ┗┛┗┛┗┻┛ |
sudo docker ps |
sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bf73743d3e09 git.eltex.loc:4567/ecss/ecss-postgresbdr:3.18 "/docker-entrypoint.…" About a minute ago Up About a minute 0.0.0.0:5439->5432/tcp, [::]:5439->5432/tcp ecss-postgres-bdr-ssw-postgres-container-1 |
sudo apt install ecss-dns-env |
sudo dpkg-reconfigure ecss-dns-env |
When updating, you need to apply new configuration files (confirm with -Y). |
sudo apt install ecss-user |
sudo apt install ecss-utils |
Установить пакет License Provider:
При установке пакета ecss-license-provider будут заданы вопросы:
Данные сохраняются в файле /etc/ecss/ecss-license-provider/config.env:
Конфигурация License Provider (LP) Сервис ecss-license-provider использует два конфигурационных файла: /etc/ecss/ecss-license-provider/config.env и /etc/ecss/ecss-license-provider/config.yaml. В файл config.env информация сохраняется в момент установки пакета ecss-license-provider. Config.yaml файл содержит основные настройки для подключения к ELM-серверу, откуда брать лицензии, какие лицензии, и куда их потом передавать, все это нужно сконфигурировать вручную.
В поле elm_adresses нужно прописать список серверов ELM, к которым мы хотим подключаться для получения лицензий. Первый адрес в списке используется как основной. Дополнительные строки с адресами работают как резерв.
Блок ecss_nodes. В нем нужно задать данные сервисов, которые будут получать лицензию. Сервис задается тремя параметрами:
Выполнить перезагрузку сервиса ecss-license-provider.service для обновления конфигурации из файла /etc/ecss/ecss-license-provider/config.yaml следующей командой:
|
sudo apt install ecss-node |
Во время установки будет предложено настроить параметры, необходимые для формирования конфигурационных файлов, примеры ответов следует ниже.
| Вопросы ecss-node | Ответы для ecss1 | Пример | |
Cookie для ноды core: | ecss-core (значение по умолчанию)
|
| |
Cookie для ноды ds: | ecss-ds (значение по умолчанию)
|
| |
Cookie для ноды mediator: | ecss-mediator (значение по умолчанию)
|
| |
Cookie для ноды pa-sip: | ecss-pa-sip (значение по умолчанию)
|
| |
Cookie для ноды mycelium: | ecss-mycelium (значение по умолчанию)
|
| |
Cookie для ноды sorm: | ecss-sorm (значение по умолчанию)
|
| |
Использовать текущую версию файла настройки? | No (значение по умолчанию) |
| |
| |||
sudo systemctl unmask ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm |
sudo systemctl enable ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm |
sudo systemctl start ecss-mycelium |
sudo systemctl start ecss-ds |
sudo systemctl start ecss-core |
sudo systemctl start ecss-mediator |
Если лицензия поддерживает СОРМ3, то запустить также сервис ecss-sorm.
|
Пока не следует запускать PA-SIP! |
/system-status Checking... ┌─┬───────────────┬────────────────────────┬───────────────┬────────────┬──────┐ │ │ Node │ Release │ Erlang nodes │Mnesia nodes│Uptime│ ├─┼───────────────┼────────────────────────┼───────────────┼────────────┼──────┤ │ │core1@ecss1 │ecss-core-3.18.0.271 │core1@ecss1 │not running │14m 4s│ │ │ds1@ecss1 │ecss-ds-3.18.0.271 │ds1@ecss1 │ds1@ecss1 │14m 4s│ │ │md1@ecss1 │ecss-mediator-3.18.0.271│md1@ecss1 │md1@ecss1 │14m 4s│ │ │mycelium1@ecss1│ecss-mycelium-3.18.0.271│mycelium1@ecss1│not running │14m 4s│ │ │sorm1@ecss1 │ecss-sorm-3.18.0.271 │sorm1@ecss1 │not running │14m 5s│ └─┴───────────────┴────────────────────────┴───────────────┴────────────┴──────┘ All services are started. Active media resource selected list specific: ┌─────────────┬───────────┬────────────┬───────────┬───────────┐ │ Node │ MSR │ MSR │ Cc-status │ Cc-uptime │ │ │ │ version │ │ │ ├─────────────┼───────────┼────────────┼───────────┼───────────┤ │ core1@ecss1 │ msr.ecss1 │ 3.17.1.1.7 │ connected │ 00:43:03 │ └─────────────┴───────────┴────────────┴───────────┴───────────┘ |
|
Выполнить конфигурацию подключения SSW к License Provider следующей командой в CoCon, (в примере License Provider установлен на хосте ecss1, IPadd хостов 10.0.10.41. Значение порта из файла /etc/ecss/ecss-license-provider/config.env по умолчанию 4321):
После выполнения проверить статус подключения командой:
Хост должен иметь статус alive=true. И быть «current».
Если статус к одному из хостов License Provider показан current, можно посылать запрос на загрузку лицензии на SSW командой:
|
| Принять все новые конфигурационные файлы, выбирая Y. |
sudo apt install ecss-restfs |
Media Server анализирует конфигурацию в файлах находящихся в директории /etc/ecss/ecss-media-server/. В версии 3.17 реализована новая функция контроля приоритетности кодеков. Если по какой то причине в нескольких файлах присутствует секция "codec", в которой несколько раз прописывается один и тот же кодек, то после обновления возникнет конфликт, и Media Server работать не будет. Поэтому в конфигурационных файлах одного Media Server не должно быть конфликтов по приоритетам кодеков (запись об одном кодеке должна быть одна и не повторяться в других файлах). Решение, на какие именно фалы требуется сконфигурировать, остается на усмотрение администратора системы. |
Принять все новые конфигурационные файлы, выбирая Y. |
sudo apt install ecss-media-server |
sudo dpkg-reconfigure ecss-media-server |
sudo apt install ecss-media-resources |
sudo apt install ecss-web-conf |
Обновление пакета ecss-teleconference-ui
Обновление пакета ecss-crm-server
Обновление пакета ecss-cc-ui
Обновление пакета ecss-call-api
Обновление пакета ecss-peeper-client
|
sudo systemctl start ecss-pa-sip |
/system-status Checking... ┌─┬───────────────┬────────────────────────┬───────────────┬────────────┬───────┐ │ │ Node │ Release │ Erlang nodes │Mnesia nodes│Uptime │ ├─┼───────────────┼────────────────────────┼───────────────┼────────────┼───────┤ │ │core1@ecss1 │ecss-core-3.18.0.271 │core1@ecss1 │not running │54m 27s│ │ │ds1@ecss1 │ecss-ds-3.18.0.271 │ds1@ecss1 │ds1@ecss1 │54m 27s│ │ │md1@ecss1 │ecss-mediator-3.18.0.271│md1@ecss1 │md1@ecss1 │54m 27s│ │ │mycelium1@ecss1│ecss-mycelium-3.18.0.271│mycelium1@ecss1│not running │54m 27s│ │ │sip1@ecss1 │ecss-pa-sip-3.18.0.271 │sip1@ecss1 │sip1@ecss1 │54m 27s│ │ │sorm1@ecss1 │ecss-sorm-3.18.0.271 │sorm1@ecss1 │not running │54m 27s│ └─┴───────────────┴────────────────────────┴───────────────┴────────────┴───────┘ All services are started. Active media resource selected list specific: ┌─────────────┬───────────┬──────────┬───────────┬───────────┐ │ Node │ MSR │ MSR │ Cc-status │ Cc-uptime │ │ │ │ version │ │ │ ├─────────────┼───────────┼──────────┼───────────┼───────────┤ │ core1@ecss1 │ msr.ecss1 │ 3.18.0.7 │ connected │ 00:01:17 │ └─────────────┴───────────┴──────────┴───────────┴───────────┘ |
/domain/test_domain/sip/user/registered sip * 450 make users list ... [**********************************************************************] 28mks 450 users information read ... [**********************************************************************] 1ms Executed on the sip1@ecss1 ┌───────────────┐ │ elements: 436 │ └───────────────┘ |
Исходные данные
На момент установки использовать временные IP адреса (в примере 10.0.10.51/10.0.20.51). На последних шагах временные адреса будут заменены на реальные IP адреса SSW версии 3.17 (в примере 10.0.10.41/10.0.20.41).
По техническому заданию требуется определить аппаратную платформу.
Включение в сеть Топологию включения сервера в сеть для обеспечения резервирования рекомендуется делать с использованием 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. Требования:
Сетевые интерфейсы сервера также попарно включены в коммутаторы, на которых агрегация портов (port-channel) настраивается в режиме LACP. Например, eth1 и eth2 включаются в первый коммутатор (port-channel 1), а eth3 и eth4 — во второй (port-channel 2). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Установка SSW ECSS10 состоит из 2-х основных частей :
Подготовительный этапВ этом разделе приведено описание инсталляции операционной системы, а также необходимых и дополнительных пакетов. Система ECSS-10 версии 3.17 работает под управлением ОС Ubuntu 22.04. Предварительные требования
Для установки ОС необходимо выполнить следующее:
Для работы системы необходимо как минимум 256 Gb свободного пространства. На серверах системы необходимо настроить параметр "hostname". На всех серверах системы желательно указать одинаковое имя пользователя (любое, кроме ssw). Лицензия ECSS-10 привязывается к ключу eToken/ruToken и к имени компьютера (hostname). Системный пользователь ssw создается при инсталляции пакета ecss-user.
|
Настройка сети Согласно параметрам, заданным в техническом задании, выполним сетевые настройки. В данном примере считается, что необходимая операционная система уже установлена. Рекомендуется разделять трафик, используемый в разных целях. Например, трафик управления и трафик VoIP. Для этого создаются 2 или более vlan. При небольшой нагрузке для простоты можно обойтись и одним vlan, но это будет в будущем доставлять неудобства при снятии дампов трафика и его анализе. В соответствии с техническим заданием на vlan настраиваются IP-адреса самого хоста, шлюзы, DNS и маршрутизация в другие сети. В данном примере согласно ТЗ будем использовать адреса:
Внутри серверной платформы существует адресная структура и используются внутренние адреса для взаимодействия между подсистемами (нодами) в кластере. Например, внутренний адрес для кластера на одном сервере 127.0.0.1, при этом ядро (ecss-core) взаимодействует с сервером обработки мультимедиа-данных (ecss-media-server). Их взаимодействие происходит с использованием одного и того же адреса, но у каждой программной части свой транспортный порт: ecss-core — 5000, ecss-msr — 5040. Для всех нод кластера определяется единый адрес для обращения к базе данных, например адрес 127.0.0.1. Таким образом, выполняется условие единообразия, при котором все ноды кластера имеют полностью одинаковые данные о текущем состоянии динамических составляющих программного коммутатора (например, история вызовов). Подготовка сетевых интерфейсов системыСогласно ТЗ, система имеет 4 сетевых интерфейса. Информацию об их состоянии можно посмотреть с помощью команды ifconfig или ip a:
Сначала настраиваются сетевые интерфейсы. В Ubuntu 22 для их настройки используется утилита netplan. Данная утилита позволяет настроить сетевую конфигурацию и затем загрузить ее в систему с помощью сетевого менеджера networkd или NetworkManager.
В конфигурациях для каждого хоста в первую очередь мы объявляем секцию ethernets, в которой описываются существующие в системе ethernet-интерфейсы, используемые в дальнейшем. Для каждого интерфейса необходимо отключить использование динамического распределения адресов (DHCP). Далее настраиваются vlan, на которых опционально определяются шлюзы для связи с внешним миром и адреса DNS-серверов, а также непосредственно IP-адреса для каждого интерфейса.
Пример настройки файла ecss_netplan.yaml для варианта включения active-backup
Следующие настройки bonds обязательны для сервера ECSS, чтобы схема работала верно: mode: active-backup - задаёт режим работы, когда один из линков выбирается активным, а остальные остаются в резерве;
Применим установленные параметры командой:
На серверах системы необходимо настроить параметр "hostname". На всех серверах системы желательно указать одинаковое имя пользователя (любое, кроме ssw). Лицензия ECSS-10 привязывается к ключу eToken/ruToken и к имени компьютера (hostname), поэтому необходимо использовать стандартные значения. Системный пользователь ssw создается при инсталляции пакета ecss-user.
Указать имя хоста: ecss1 в файле /etc/hostname:
Указать реальный Ipadd и имя хоста используемое в настоящий момент (для примера 10.0.10.51 ecss1) в файле /etc/hosts:
|
Используем утилиту cpufrequtils.
sudo apt install cpufrequtils |
по умолчанию после установки Ubuntu используется режим "ondemand" - "по запросу" (производительность CPU по запросу приложений, экономит электроэнергию, но снижает производительность):
cat /etc/init.d/cpufrequtils | grep GOVERNOR= |
в выходном сообщении системы режим работы по умолчанию после установки - "ondemand" :
GOVERNOR="ondemand" |
Установить режим результативности/производительности - в файле /etc/init.d/cpufrequtils значение "ondemand" заменить на "performance"
sudo sed -i 's/GOVERNOR="ondemand"/GOVERNOR="performance"/g' /etc/init.d/cpufrequtils |
Перезапустить утилиту:
sudo /etc/init.d/cpufrequtils restart |
Затем выполнить команду:
sudo systemctl daemon-reload |
Ubuntu сервер SSW работает в реальном масштабе времени , поэтому все необходимые данные должны находится в оперативной памяти, использование файла подкачки (swap-файл - /swap. img) может привести к увеличению времени обработки вызовов приложения SSW ECSS10 , что недопустимо. Swap - отключаем.
Выполнить последовательно три команды:
Отключение Swap:
sudo swapoff -a |
Удалить файл swap.img.
sudo rm /swap.img |
Закомментировать строку - /swap.img none swap sw 0 0 - в файле /etc/fstab - выполнив команду "sudo nano /etc/fstab"
привести её к виду # /swap.img none swap sw 0 0
либо удалить эту строчку (/swap.img none swap sw 0 0)
sudo nano /etc/fstab |
Для проверки выполните команду free -h:
free -h |
Размер Swap равен 0 — значит, он выключен
free -h
total used free shared buff/cache available
Mem: 3,9G 110M 3,2G 820K 535M 3,5G
Swap: 0B 0B 0B
|
При инсталляции Ubuntu-22 не предлагается установить часовой пояс (по умолчанию — UTC). Его нужно установить вручную (для корректной работы системы тарификации, работ по расписанию и т. д.), например:
sudo timedatectl set-timezone Asia/Novosibirsk |
Улучшить работу высоконагруженных серверов можно увеличив лимит открытых файлов.
Для установки лимита открытых файлов необходимо:
Проверить текущий лимит командой:
ulimit -a |
результат :
eltex@ecss1:~$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 15515 max locked memory (kbytes, -l) 65536 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 15515 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited |
Данного лимита (open files 1024 ) недостаточно для нормальной работы высоконагруженных серверов.
Установить лимит открытых файлов для каждого пользователя:
sudo sed -i '55i\* soft nproc 65536\n* hard nproc 131072\n* soft nofile 65536\n* hard nofile 131072\nroot - memlock unlimited' /etc/security/limits.conf |
|
| Установку пакетов требуется делать НЕ из-под пользователя ssw. |
sudo sh -c "echo 'deb [arch=amd64] http://archive.eltex.org/ssw/jammy/3.18 stable main extras external' > /etc/apt/sources.list.d/eltex-ecss10-stable.list" |
Далее необходимо выполнить импорт ключа командой:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 33CB2B750F8BB6A5 |
Перед началом установки необходимо обновить ОС:
sudo apt update |
Если вы видите такое сообщение системы:
Выполните следующую команду:
|
sudo apt upgrade |
┌ версия ПО ECSS. Сейчас в заявке на сертификацию она заявлена как 3. | Мы её менять не будем до следующей сертификации или │ выпуска принципиально новой версии системы. │ │ ┌ версия System Release. Общая версия для всех компонент входящих в конкретный релиз. | | Меняем её централизовано, когда
│ │ принимаем решение о выпуске нового релиза. Релизы между собой обычно не совместимы.
┌─┴┐ ┌──┴─┐
ECSS.SysRel.SubMaj.SubMin
└──┬─┘ └──┬─┘
│ └ версия Subsystem minor. Минорную версию подсистемы устанавливает разработчик подсистемы. | Минорную версию
│ меняем при добавлении патча. Как правило, минорные версии в рамках одной мажорной версии
│ совместимы между собой и отличаются в рамках конкретных патчей.
│
└ версия Subsystem major. Мажорная версия устанавливается разработчиком подсистемы. Мажорную версию подсистемы необходимо менять при внесении в подсистему существенных изменений. Утилита установки пакетов APT анализирует версию пакета слева направо, для примера мы имеем пакет 14.14.7.7 , В случае если для конкретной ситуации требуется перейти с версии 14.14.7.7 на версию 14.14.7.9 , стандартная команда → sudo apt upgrade , нам не поможет, так как будет выбран самый новый пакет, в данной ситуации нам необходимо в явном виде указать какую версию пакета мы хотим установить, в данном примере мы должны выбрать команду → sudo apt install имя пакета=14.14.7.9 . Обычно это необходимо для тестирования определенного патча, для стандартных обновлений достаточно выбора привычной команды установки /обновления пакета |
Устанавливаем все предложенные пакеты:
sudo apt install ntp ntpdate tcpdump vlan dnsmasq aptitude atop ethtool htop iotop mc minicom mtr-tiny nmap pptpd pv screen ssh tftpd vim sngrep tshark cpanminus gnuplot libgraph-easy-perl debconf-utils wget rsync ncdu |
Список обязательного сервисного программного обеспечения:
Список рекомендуемого диагностического и вспомогательного программного обеспечения:
|
Перед началом установки пакетов ecss , нужно убедиться в соответствии полосы пропускания СПД необходимым требованиям.
Проверить значение следующих параметров: |
Выполнить следующую команду:
sudo apt install -y ecss-dns-env |
Настройщик предложит выбрать разделы для настройки по вопросам ниже. Нужно выбрать broker. (для примера 10.0.10.51)
| Вопрос ecss-dns-env | Ответы для ecss1 | |
|---|---|---|
| [Primary broker] Введите адрес ([Primary broker] Enter ip) | 10.0.10.51 (необходимо ввести) |
|
| [Secondary broker] Введите адрес ([Secondary broker] Enter ip) | 10.0.10.51 (необходимо ввести) |
|
В случае последующей коррекции IP-адресов следует использовать команду:
|
Перед установкой
|
Установка пакета ecss-postgres-bdr-ssw
Выполнить установку пакета ecss-postgres-bdr-ssw:
sudo apt install ecss-postgres-bdr-ssw |
При конфигурации пакета ecss-postgres-bdr-ssw будут заданы вопросы:
| Вопросы ecss-postgres-bdr-ssw | Ответы для ecss1 | Пример |
|---|---|---|
| Текущий IP-адрес сетевого интерфейса (Выбрать адрес ранее используемый MySQL). | Выбрать из списка IP-адрес для работы с Postgres |
|
| Установка в кластере? | No (необходимо выбрать) |
|
. . . ================== Create databases ================== CREATE DATABASE CREATE DATABASE CREATE EXTENSION CREATE EXTENSION =================================== Creating Postgres Exporter Schema =================================== Node IP: localhost CREATE SCHEMA GRANT CREATE FUNCTION CREATE VIEW GRANT CREATE FUNCTION CREATE VIEW GRANT CREATE EXTENSION CREATE FUNCTION CREATE VIEW GRANT ======================================================= ======================================================= ecss-postgres-bdr-ssw successfully installed/updated! ======================================================= ======================================================= ┏┓┏┓┏┓┏┳┓┏┓┳┓┏┓┏┓ ┳┓┳┓┳┓ ┏┓┏┓┓ ┏ ┃┃┃┃┗┓ ┃ ┃┓┣┫┣ ┗┓ ┣┫┃┃┣┫ ┗┓┗┓┃┃┃ ┣┛┗┛┗┛ ┻ ┗┛┛┗┗┛┗┛ ┻┛┻┛┛┗ ┗┛┗┛┗┻┛ |
|
Установить пакет License Provider:
При установке пакета ecss-license-provider будут заданы вопросы:
Данные сохраняются в файле /etc/ecss/ecss-license-provider/config.env:
Конфигурация License Provider (LP) Сервис ecss-license-provider использует два конфигурационных файла: /etc/ecss/ecss-license-provider/config.env и /etc/ecss/ecss-license-provider/config.yaml. В файл config.env информация сохраняется в момент установки пакета ecss-license-provider. Config.yaml файл содержит основные настройки для подключения к ELM-серверу, откуда брать лицензии, какие лицензии, и куда их потом передавать, все это нужно сконфигурировать вручную.
В поле elm_adresses нужно прописать список серверов ELM, к которым мы хотим подключаться для получения лицензий. Первый адрес в списке используется как основной. Дополнительные строки с адресами работают как резерв.
Блок ecss_nodes. В нем нужно задать данные сервисов, которые будут получать лицензию. Сервис задается тремя параметрами:
Выполнить перезагрузку сервиса ecss-license-provider.service для обновления конфигурации из файла /etc/ecss/ecss-license-provider/config.yaml следующей командой:
|
Установка обязательного пакета ecss-node включает в себя установку и первоначальную настройку основных подсистем.
В системе уже должен быть установлен пакет ecss-postgres-bdr-ssw |
Для установки пакета ecss-node выполните команду:
sudo apt install -y ecss-node |
Во время установки пакета создается пользователь ssw, от имени которого запускаются все сервисы ecss*. Создаются необходимые каталоги, выполняется настройка DNS, идет настройка SSL-сертификатов.
При установке также будет установлен пакет ecss-user |
Во время установки будет предложено настроить параметры, необходимые для формирования конфигурационных файлов, примеры ответов следует ниже.
| Вопросы ecss-user | Ответы для ecss1 | Пример | ||||
|---|---|---|---|---|---|---|
Хотите ли вы использовать стандартные настройки? | Yes (значение по умолчанию) |
| ||||
| Вопросы ecss-node | Ответы для ecss1 | Пример | ||||
| test.update (необходимо ввести)
|
| ||||
| Хотите ли вы использовать стандартные настройки? | Yes (значение по умолчанию) |
| ||||
| Вопросы ecss-user | Ответы для ecss1 | Пример | ||||
| Максимальный размер несжатого дампа в байтах. | 8G (значение по умолчанию) |
| ||||
| Максимальный размер сжатого дампа в байтах. | 2G (значение по умолчанию) |
| ||||
| Максимальный размер, который может занять каталог /var/lib/systemd/coredump: | default (значение по умолчанию) |
| ||||
| Минимальный объем свободного дискового пространства в байтах. | 30G (значение по умолчанию) |
| ||||
Сохраните в безопасное место и удалите файл /etc/ecss/ssl/ecss10root.key! | Ok (значение по умолчанию) |
| ||||
Cookie для ноды core: | ecss-core (необходимо ввести) |
| ||||
Cookie для ноды ds: | ecss-ds (необходимо ввести) |
| ||||
Cookie для ноды mediator: | ecss-mediator (необходимо ввести) |
| ||||
Cookie для ноды pa-sip: | ecss-pa-sip (необходимо ввести) |
| ||||
Cookie для ноды mycelium: | ecss-mycelium (необходимо ввести) |
| ||||
Cookie для ноды sorm: | ecss-sorm (необходимо ввести) |
| ||||
Проверить информацию о состоянии синхронизации c NTP, используется команда ntpq –p . Если использовать дополнительный ключ –n, вместо имени сервера будет указан IP-адрес:
ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*185.125.190.56 17.253.28.253 2 u 45 64 1 83.893 +0.470 2.177 |
Остановить сервисы:
sudo systemctl stop ecss-core ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium |
Создать backup для oasys (скопировать БД Mnesia со старого на новый ecss1), выполнить следующие команды:
cd /var/lib/ecss/oasys/ |
sudo rsync -a <Ваш_пользователь>@<IP_add_старого_сервера>:/var/lib/ecss/oasys/Mnesia.ds1@ecss1/ Mnesia.ds1@ecss1/ |
sudo rsync -a <Ваш_пользователь>@<IP_add_старого_сервера>:/var/lib/ecss/oasys/Mnesia.md1@ecss1/ Mnesia.md1@ecss1/ |
cd ~ |
Перезапустить сервисы SSW:
sudo systemctl restart ecss-core ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium |
Если лицензия поддерживает СОРМ3, то запустить также сервис ecss-sorm.
sudo systemctl start ecss-sorm |
Проверить статус сервисов, для этого выполнить в CoCon команду system-status:
/system-status Checking... ┌─┬───────────────┬─────────────────────────┬───────────────┬────────────┬──────┐ │ │ Node │ Release │ Erlang nodes │Mnesia nodes│Uptime│ ├─┼───────────────┼─────────────────────────┼───────────────┼────────────┼──────┤ │ │core1@ecss1 │ecss-core-3.18.0.271 │core1@ecss1 │not running │3m 55s│ │ │ds1@ecss1 │ecss-ds-3.18.0.271 │ds1@ecss1 │ds1@ecss1 │4m 40s│ │ │md1@ecss1 │ecss-mediator-3.18.0.271 │md1@ecss1 │md1@ecss1 │3m 50s│ │ │mycelium1@ecss1│ecss-mycelium-3.18.0.271 │mycelium1@ecss1│not running │5m 28s│ │ │sip1@ecss1 │ecss-pa-sip-3.18.0.271 │sip1@ecss1 │sip1@ecss1 │3m 45s│ │ │sorm1@ecss1 │ecss-sorm-3.18.0.271 │sorm1@ecss1 │not running │1m 55s│ └─┴───────────────┴─────────────────────────┴───────────────┴────────────┴──────┘ |
|
Выполнить конфигурацию подключения SSW к License Provider следующей командой в CoCon, (в примере License Provider установлен на хосте ecss1, IPadd хостов 10.0.10.51. Значение порта из файла /etc/ecss/ecss-license-provider/config.env по умолчанию 4321):
После выполнения проверить статус подключения командой:
Хост должен иметь статус alive=true. И быть «current».
Если статус к одному из хостов License Provider показан current, можно посылать запрос на загрузку лицензии на SSW командой:
|
Далее устанавливаются пакеты ecss-restf затем ecss-media-server, ecss-media-resources, , ecss-web-conf и другие в любом порядке:
sudo apt install -y ecss-restfs |
Установка ecss-restfs.
При установке пакета ecss-restfs будет предложено задать параметры конфигурации. Ответы на вопросы приведены ниже. Также инсталлятор предложит установить и настроить пакет Text2speech от Yandex.
| Вопросы ecss-restfs | Ответы |
|---|---|
Использование функции TTS (Use TTS service) | No (значение по умолчанию) |
Настройка телефонной книги (Configure phone book) | No (значение по умолчанию) |
Настроить сервис определения речи (Configure speech recognition service) | No (значение по умолчанию) |
Ничего не выбирать | Ok |
после установки пакета ecss-restfs проверьте наличие wav файлов автоинформатора в директории /var/lib/ecss/restfs/system/sounds/ командой :
ll /var/lib/ecss/restfs/system/sounds/ |
наличие wav-файлов в указанной выше директории говорит о корректности установки пакета ecss-restfs
Отсутствия wav файлов в указанной выше директории, директории свидетельствует о проблеме при установке пакета ecss-restfs. Для ее решения выполните команду:
и повторите команду проверки:
|
осталось проверить доступность этих файлов извне. Для проверки выполните команду:
wget http://ecss1:9990/system/sounds/ai_you.wav |
wget http://ecss1:9990/system/sounds/ai_you.wav --2026-04-18 17:43:29-- http://ecss1:9990/system/sounds/ai_you.wav Resolving ecss1 (ecss1)... 127.0.1.1, 10.0.10.51 Connecting to ecss1 (ecss1)|127.0.1.1|:9990... connected. HTTP request sent, awaiting response... 200 OK Length: 11670 (11K) [audio/x-wav] Saving to: ‘ai_you.wav’ ai_you.wav 100%[========================================================================================>] 11,40K --.-KB/s in 0s 2026-04-18 17:43:29 (301 MB/s) - ‘ai_you.wav’ saved [11670/11670] |
проверочный файл можно удалить
rm ai_you.wav |
Перенести записи разговоров со старого сервера на новый, выполнив следующую команду:
sudo rsync -a <ваш_пользователь>@<IP_add_старого_ecss1>:/var/lib/ecss/restfs/domain/ /var/lib/ecss/restfs/domain/ |
abf@ecss1:/var/lib/ecss/restfs/domain$ ls -la /var/lib/ecss/restfs/domain итого 8 drwxr-xr-x 2 www-data www-data 4096 апр 22 18:21 . drwxr-xr-x 7 www-data www-data 4096 мая 28 15:07 .. abf@ecss1:/var/lib/ecss/restfs/domain$ sudo rsync -a abf@10.0.10.10:/var/lib/ecss/restfs/domain/ /var/lib/ecss/restfs/domain/ abf@ecss1:/var/lib/ecss/restfs/domain$ ls -la test_domain/records/2026_05_28 итого 610 drwxrwxrwx 2 www-data www-data 4096 мая 28 14:56 . drwxrwxrwx 3 www-data www-data 4096 мая 28 14:27 .. -rw-r--r-- 1 www-data www-data 71892 мая 28 14:27 2026-05-28_14-27-02_t_42009-42007.pcm -rw-rw-rw- 1 www-data www-data 86 мая 28 14:27 2026-05-28_14-27-02_t_42009-42007.pcm.meta -rw-r--r-- 1 www-data www-data 71892 мая 28 14:31 2026-05-28_14-31-19_o_42007-42009.pcm -rw-rw-rw- 1 www-data www-data 86 мая 28 14:31 2026-05-28_14-31-19_o_42007-42009.pcm.meta -rw-r--r-- 1 www-data www-data 63904 мая 28 14:55 2026-05-28_14-55-24_o_42007-42009.pcm -rw-rw-rw- 1 www-data www-data 86 мая 28 14:55 2026-05-28_14-55-24_o_42007-42009.pcm.meta -rw-r--r-- 1 www-data www-data 39940 мая 28 14:55 2026-05-28_14-55-31_o_42007-42009.pcm -rw-rw-rw- 1 www-data www-data 86 мая 28 14:55 2026-05-28_14-55-31_o_42007-42009.pcm.meta -rw-r--r-- 1 www-data www-data 15976 мая 28 14:55 2026-05-28_14-55-37_o_42007-42009.pcm -rw-rw-rw- 1 www-data www-data 86 мая 28 14:55 2026-05-28_14-55-37_o_42007-42009.pcm.meta -rw-r--r-- 1 www-data www-data 79880 мая 28 14:55 2026-05-28_14-55-48_o_42007-42009.pcm -rw-rw-rw- 1 www-data www-data 86 мая 28 14:55 2026-05-28_14-55-48_o_42007-42009.pcm.meta -rw-r--r-- 1 www-data www-data 55916 мая 28 14:56 2026-05-28_14-55-59_o_42007-42009.pcm -rw-rw-rw- 1 www-data www-data 86 мая 28 14:55 2026-05-28_14-55-59_o_42007-42009.pcm.meta -rw-r--r-- 1 www-data www-data 47928 мая 28 14:56 2026-05-28_14-56-04_o_42007-42009.pcm -rw-rw-rw- 1 www-data www-data 86 мая 28 14:56 2026-05-28_14-56-04_o_42007-42009.pcm.meta -rw-r--r-- 1 www-data www-data 31952 мая 28 14:56 2026-05-28_14-56-28_t_42009-42007.pcm -rw-rw-rw- 1 www-data www-data 86 мая 28 14:56 2026-05-28_14-56-28_t_42009-42007.pcm.meta -rw-r--r-- 1 www-data www-data 31952 мая 28 14:56 2026-05-28_14-56-37_t_42009-42007.pcm -rw-rw-rw- 1 www-data www-data 86 мая 28 14:56 2026-05-28_14-56-37_t_42009-42007.pcm.meta -rw-r--r-- 1 www-data www-data 95856 мая 28 14:56 2026-05-28_14-56-42_t_42009-42007.pcm -rw-rw-rw- 1 www-data www-data 86 мая 28 14:56 2026-05-28_14-56-42_t_42009-42007.pcm.meta |
sudo apt install -y ecss-media-server |
Для медиасервера (ecss-media-server/MSR) можно выполнить начальную настройку с записью параметров в файл конфигурации,
для этого нужно провести конфигурацию transport bind-addr,mcc bind-addres:
Укажите IP-адреса старого SSW версии 3.17 (в примере 10.0.20.41).
| Вопросы ecss-media-server | Ответы для ecss1 |
|---|---|
| [ MSR SIP ] Введите bind-ip адрес (Enter) | 10.0.20.41 (необходимо ввести) |
| [MSR Control-Channel] Введите bind-ip-адрес | 10.0.20.41 (необходимо ввести) |
После формирования конфигураций по умолчанию выполните проверку:
cat /etc/ecss/ecss-media-server/config.xml |
Внутри лежит конфигурация для msr: config.xml, в директории conf.d лежит конфигурация default.xml.
По своей сути default.xml — это дополнение config.xml, которое определяет секцию аккаунтов. Это сделано для того, чтобы после обновлений пакета данная конфигурация оставалась неизменной. Вид config.xml представлен здесь: файл конфигурации.
<?xml version="1.0" encoding="utf-8"?>
<config date="09:24:23 03.12.2025">
<general log-level="3" log-rotate="yes" max-calls="2148" max-vid-calls="100" max-in-group="512" load-sensor="media" load-delta="10" calls-delta="100" spool-dir-size="100M" log-name="msr.log" log-path="/var/log/ecss/media-server" use-srtp="disabled" enable-ice-transport="no" ice-update="no" aggressive-ice="yes" stun-server="" suspicious-mode="no"/>
<transport bind-addr="10.0.20.41" port="5040" transport="udp+tcp"/>
<!-- By default configured public TURN-server -->
<turn-server use-turn="no" host="numb.viagenie.ca" user="webrtc@live.com" password="muazkh"/>
<media mixer-clock-rate="8000" use-vad="no" cng-level="0" jb-size="60" rtcp-timeout="0" rtp-timeout="350" udp-src-check="no" cn-multiplier="3" port-start="12000" port-range="4496" tias-in-sdp="no" thread-cnt="2" vid-enc-threads="2" vid-dec-threads="2" video-conf-layout="evenly" keyframe-interval="1000" vid-decode-delay="100" silent-codec-switch="yes" silence-threshold="-30" dtmf-flash-disable="no" video-dscp="0" other-dscp="0" dummy-video-src="/usr/share/ecss-media-server/video/dummy_video.yuv" video-enc-width="640" video-enc-height="360" finalsilence="1000" rtcp-stat-dump="yes" dtmf-tg-fpc-loop="10" dtmf-tg-fit="1" dtmf-tg-fot="2" dtmf-tg-volume="12288"/>
<codec pcma="1" pcmu="2" ilbc="0" gsm="0" g722="3" g726="0" g729="0" speex="0" l16="0" g7221="0" opus="0" h264="1" h263-1998="2" t38="1" tel-event-pt="0"/>
<accounts>
<!-- <dynamic msr_name="msr.name"
realm="sip:127.0.0.1:5000"
dtmf_mode="rfc+inband+info"
auth_name="user"
auth_password="password" /> -->
</accounts>
<pbyte>
<mcc bind-addr="10.0.20.41" port="5700"/>
</pbyte>
<conf_dir path="/etc/ecss/ecss-media-server/conf.d"/>
<metrics enable="yes" use-pushgateway="yes" pushgateway-addr="127.0.0.1:9091" push-interval="5" port="8100" msr_name="msr2"/>
<rtp>
<auto addr-v4=""/>
</rtp>
</config>
|
по умолчанию , после инсталляции ECSS-10 активизирует только кодеки - pcma, pcmu, g722, h264, h263-1998, t38. Остальные имеют статус =0 = выкл. Если хотите активизировать остальные кодеки, в редакторе nano измените приоритет с 0 на цифру приоритета (уровень приоритета не должен повторятся для сервиса audio/video/fax)
sudo nano /etc/ecss/ecss-media-server/config.xml
| чтобы активизировать все кодеки строчку - <codec pcma="1" pcmu="2" ilbc="0" gsm="0" g722="3" g726="0" g729="0" speex="0" l16="0" g7221="0" opus="0" h264="1" h263-1998="2" t38="1" tel-event-pt="0"/> привести к виду - <codec pcma="1" pcmu="2" ilbc="6" gsm="4" g722="3" g726="11" g729="5" speex="7" l16="8" g7221="9" opus="10" h264="1" h263-1998="2" t38="1" tel-event-pt="0"/> |
Недопустимо указывать у разных кодеков одинаковый приоритет, для примера g722="5" g729="5". В этом случае они будут работать некорректно/игнорироваться. |
Рассмотрим секцию аккаунтов (файл default.xml):
cat /etc/ecss/ecss-media-server/conf.d/default.xml |
Проверить корректность данных.
<?xml version="1.0"?>
<config>
<accounts>
<dynamic msr_name="msr.ecss1" realm="sip:10.0.20.41:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password">
<via dynamic-ifaces="no">
<iface name="net.20" ip="10.0.20.41"/>
</via>
</dynamic>
</accounts>
</config> |
В ней указаны текущие настройки, согласно которым происходит регистрация msr на core.
Основными параметрами здесь являются: msr_name и realm:
После изменения конфигурации файлов /etc/ecss/ecss-media-server/config.xml и /etc/ecss/ecss-media-server/conf.d/default.xml необходимо выполнить перезапуск сервиса ecss-media-server, чтобы изменения вступили в силу, следующей командой:
sudo systemctl restart ecss-media-server |
Вы увидите сообщение:
Мы указали рабочие IP адреса для media сервиса, а они пока закреплены за старым ecss1. После переключения IP адресов сервис запустится автоматически. |
sudo apt install ecss-web-conf |
Web-конфигуратор позволяет сделать управление системой более наглядным и комфортным. Установка web-конфигуратора не является обязательной, но рекомендуется.
Также при установке пакета ecss-web-conf автоматически устанавливается пакет ecss-subscriber-portal-ui. Приложение "Портал абонента" системы ECSS-10 позволяет абонентам системы самостоятельно управлять услугами, просматривать информацию по совершенным вызовам, активным конференциям, а также настраивать собственные IVR-скрипты для входящих вызовов. Описание работы веб-конфигуратора приведено в разделе "Портал абонента".
| Вопросы ecss-web-conf | Ответы для ecss1 | Пример |
|---|---|---|
| Хотите ли вы использовать стандартные настройки? | Yes (значение по умолчанию) |
|
Проверьте возможность подключения к веб-интерфейсу http://10.0.10.51, пользователь/пароль — admin/password. В настоящий момент не все функции будут доступны, но веб-интерфейс должен работать, а вход в систему — быть успешным.
sudo systemctl mask --now ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm |
Скопировать БД Postgres со старого ecss1, для этого выполнить команду:
sudo tar -Pcvf /tmp/postgres.tar /srv/ecss/ecss-postgres-bdr-ssw/volumes/ |
Скопировать postgres.tar на новый сервер, выполнив команду:
scp /tmp/postgres.tar <ваш_пользователь>@<IP_адрес_новый_ecss1>:/tmp/postgres.tar |
Остановить docker БД Postgres командой:
sudo docker compose -f /srv/ecss/ecss-postgres-bdr-ssw/docker-compose.container.yml stop |
Очистить подкаталог /srv/ecss/ecss-postgres-bdr-ssw/volumes:
sudo rm -R /srv/ecss/ecss-postgres-bdr-ssw/volumes/* |
Распаковать БД Postgres на новом сервере ecss1.
sudo tar xvf /tmp/postgres.tar -C / |
Запустить docker БД Postgres командой:
sudo docker compose -f /srv/ecss/ecss-postgres-bdr-ssw/docker-compose.container.yml start |
Изменить IP адреса 10.0.10.41/10.0.20.41 на неиспользуемые на сети (для примера на 10.0.10.61/10.0.20.61):
sudo nano /etc/netplan/ecss.yaml |
|
|
sudo netplan apply |
После освобождения рабочих IP адресов со старого SSW можно подключить их к новому SSW. Выполнить команду:
sudo nano /etc/netplan/ecss.yaml |
Изменить IP адреса 10.0.10.51/10.0.20.51 на используемые на сети для SSW (в примере 10.0.10.41/10.0.20.41):
|
|
sudo netplan apply |
Обновить IP адрес в файле /etc/hosts:
sudo nano /etc/hosts |
Обновить IP адрес в файле /etc/dnsmasq.d/ecss-broker:
sudo dpkg-reconfigure ecss-dns-env |
/system/licence/manager/set --hosts [https://10.0.10.41:4321] |
sudo systemctl restart ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-media-server |
После выполнения обновления проверьте работу всех сервисов SSW.