Обновление с версии 3.17.1 на 3.18
1 Подготовка хостов к обновлению
ECSS-10 в версии 3.17 поддерживает два типа лицензирования – файловая лицензия (с использованием токена или без него) и ELM-лицензия. В зависимости от типа лицензирования при обновлении будут выполняться разные команды.
Проверить, какой тип используется на вашем ssw, можно следующей командой:
выполняется в CoCon
/cluster/storage/ds1/licence/list-licenceCODEПри использовании файловой лицензии вывод будет:
файловая лицензия
/cluster/storage/ds1/licence/list-licence ┌──┬───────────────────┬────────────┬──────┬───────────────────┬────────────────────┬────────────┐ │Id│Creation date(UTC) │ SSW ID │Active│ Description │Expiration date(UTC)│ Time left │ ├──┼───────────────────┼────────────┼──────┼───────────────────┼────────────────────┼────────────┤ │1 │31.10.2025 14:16:00│ECSS 010070 │* │Eltex SC softswitc │31.12.2026 23:59:59 │112d 21h 31m│ │0 │ │ECSS DEFAULT│ │Default licence │ │ │ └──┴───────────────────┴────────────┴──────┴───────────────────┴────────────────────┴────────────┘CODEПри использовании ELM-лицензии вывод будет:
ELM лицензия
/cluster/storage/ds1/licence/list-licence ┌──┬───────────────────┬────────────┬──────┬────────────────┬────────────────────┬────────────┐ │Id│Creation date(UTC) │ SSW ID │Active│ Description │Expiration date(UTC)│ Time left │ ├──┼───────────────────┼────────────┼──────┼────────────────┼────────────────────┼────────────┤ │1 │02.12.2025 13:51:39│ECSS2000000 │* │ECSS ELM License│02.12.2026 13:51:39 │364d 11h 47m│ │0 │01.01.1990 00:00:00│ECSS DEFAULT│ │Default licence │ │ │ └──┴───────────────────┴────────────┴──────┴────────────────┴────────────────────┴────────────┘CODE- Подготовка gluster volume к процедуре обновления.
В случае недоступности одной из нод кластера могут возникнуть проблемы с файлами. После восстановления работы они будут находиться в сплите, из-за чего собственноручно придется запускать синхронизацию между нодами.
Для того чтобы решить данную проблему, потребуется воспользоваться ключом cluster.favorite-child-policy.
При его включении все файлы, находящиеся в сплите, будут автоматически синхронизированы между собой по заданному правилу.
Включение данного параметра производится командой:на ecss1
sudo gluster volume set ecss_volume cluster.favorite-child-policy sizeCODEРезультат:sudo gluster volume set ecss_volume cluster.favorite-child-policy size volume set: success
Результат:sudo gluster volume info Volume Name: ecss_volume Type: Replicate Volume ID: 4bc875b1-f966-44e2-9b3f-04f3a7af83f3 Status: Started Snapshot Count: 0 Number of Bricks: 1 x 2 = 2 Transport-type: tcp Bricks: Brick1: 10.0.10.51:/var/lib/ecss/glusterfs Brick2: 10.0.10.52:/var/lib/ecss/glusterfs Options Reconfigured: cluster.favorite-child-policy: size performance.client-io-threads: off nfs.disable: on transport.address-family: inet storage.fips-mode-rchecksum: on cluster.granular-entry-heal: on
- При обновлении кластера следует обновлять сервера по очереди. Таким образом, при обновлении один из серверов будет всегда запущен и работа сервисов не будет прервана. Для разделения кластера следует использовать инструмент ecss-control на обоих серверах (описание команд утилиты приведено в «Приложении Н»).
Обмен SIP-сигнализацией происходит через SIP-VRRP IP-адрес. Этот функционал реализован для возможности миграции IP-адреса на другой хост в случае падения/отключения/техобслуживания основного хоста. Контроль миграции IP-адресов осуществляется сервисом keepalive на каждом хосте.
Для перевода трафика на первый сервер (ecss1) необходимо выключить keepalive на втором хосте (ecss2). В этом случае оба SIP-VRRP IP-адреса будут находиться на первом хосте (ecss1). Выполнить следующую команду:на ecss2
sudo systemctl disable --now keepalived.serviceCODE - Командой ifconfig проверить, что все VRRP IP-адреса находятся на ecss1 (VRRP-SIP1/VRRP-SIP2):
на ecss1
ifconfigCODE - Необходимо замаскировать все ноды на сервере, который будет обновляться первым, отключаем автозапуск нод:
на ecss2
sudo systemctl mask --now ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sormCODEПри выполнении приложенной команды будет уведомление.
Warning: The unit file, source configuration file or drop-ins of ecss-ds.service changed on disk. Run 'systemctl daemon-reload' to reload units. Warning: The unit file, source configuration file or drop-ins of ecss-mycelium.service changed on disk. Run 'systemctl daemon-reload' to reload units. Warning: The unit file, source configuration file or drop-ins of ecss-mediator.service changed on disk. Run 'systemctl daemon-reload' to reload units. Warning: The unit file, source configuration file or drop-ins of ecss-core.service changed on disk. Run 'systemctl daemon-reload' to reload units. Warning: The unit file, source configuration file or drop-ins of ecss-pa-sip.service changed on disk. Run 'systemctl daemon-reload' to reload units.
Данные сообщения не является ошибкой. Продолжать выполнение процедуры.
- На ecss1 выполнить разделение SSW на два независимых сервера следующей командой:
Команда ecss-control работает со стандартными именами хостов : ecss1/ecss2.
Проверить статус:на ecss1
sudo ecss-control detachCODEна ecss1
sudo ecss-control statusCODEРезультат:sudo ecss-control detach detach host: ecss2, ip: 10.0.10.52 complete sudo ecss-control status locked ip: 10.0.10.52
Нода sorm идет одна на кластер. В случае её работы на ecss1 при выполнении приложенной команды появится уведомление.
Unit /etc/systemd/system/ecss-sorm.service is masked, ignoring.
Данное сообщение не является ошибкой. Продолжать выполнение процедуры.
- На ecss1 отключить сервис ecss-elm-adapter, выполнив команду:
на ecss1
sudo systemctl stop ecss-elm-adapter.serviceCODE
2 Подготовка к обновлению сервисов SSW
- Актуализировать репозиторий 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"CODE - Выполнить обновление пакетов:
на обоих хостах
sudo apt updateCODE
3 Обновление сервисов SSW на ecss2
- Обновление PostgreSQL:
- Проверить на каких адресах подключена БД Postgres, выполнить команду:
на ecss2
psql -Upostgres -decss_storekeeper_db -h localhost -p5439 -c "SELECT node_local_dsn FROM bdr.bdr_nodes;"CODEПример: пароль по умолчанию "postgres1"
psql -Upostgres -decss_storekeeper_db -h localhost -p5439 -c "SELECT node_local_dsn FROM bdr.bdr_nodes;" Password for user postgres: node_local_dsn --------------------------------------------------------------------------------------- host=10.0.10.51 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1 host=10.0.10.52 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1 (2 rows)CODE - Выключить docker-контейнер:
на ecss2
sudo docker compose -f /srv/ecss/ecss-postgres-bdr-ssw/docker-compose.container.yml downCODEПример: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
- Удалить старый deb-пакет, т. к опция upgrade не поддержана:
на ecss2
sudo apt remove ecss-postgres-bdr-sswCODE!!Важно!!
Выполнить именно remove, а не purge, т. к remove сохраняет директорию volumes c таблицами нашей БД.
Пример:sudo apt remove ecss-postgres-bdr-ssw Чтение списков пакетов… Готово . . . Следующие пакеты будут УДАЛЕНЫ: ecss-postgres-bdr-ssw . . . Хотите продолжить? [Д/н] y Удаляется ecss-postgres-bdr-ssw (17.1.0.59+ssw) …
- Установить новый deb-пакет:
на ecss2
sudo apt install ecss-postgres-bdr-sswCODE!!Важно!!
Во время установки будут заданы вопросы как при первоначальной установке:
Ответы должны точно соответствовать указанным в процедуре, иначе будет выполнена попытка создать новую базу данных и установка завершится ошибкой.Вопрос Ответ Пример Текущий IP-адрес сетевого интерфейса.
Выберите IP: Такой-же как и при первоначальной установке,
т. к репликация завязана на конкретные IP.(проверили в пункте "а", в примере 10.0.10.52).
10.0.10.52 (необходимо выбрать) 
Установка в кластере?
Выберите <Да>, если пакет устанавливается на узле кластера.Да (значение по умолчанию) 
Является ли этот узел мастером?
Важно!
НЕТ! Иначе он попытается создать новую bdr,
чего сделать не сможет и установка завершиться с ошибкой).Нет (значение по умолчанию) 
IP-адрес, используемый для подключения к кластеру:
Важно!
IP соседней ноды (который указывали при её установке, проверяли в пункте "а", в примере 10.0.10.51).
10.0.10.51 (необходимо указать) 
При успешной установке на этапе поднятия репликации увидим:
sudo apt install ecss-postgres-bdr-ssw . . . ============================= Checking replication status ============================= Репликация BDR настроена корректно: данные совпадают. . . . ======================================================= ======================================================= ecss-postgres-bdr-ssw successfully installed/updated! ======================================================= ======================================================= ┏┓┏┓┏┓┏┳┓┏┓┳┓┏┓┏┓ ┳┓┳┓┳┓ ┏┓┏┓┓ ┏ ┃┃┃┃┗┓ ┃ ┃┓┣┫┣ ┗┓ ┣┫┃┃┣┫ ┗┓┗┓┃┃┃ ┣┛┗┛┗┛ ┻ ┗┛┛┗┗┛┗┛ ┻┛┻┛┛┗ ┗┛┗┛┗┻┛CODE - После установки проверить, что подтянулся новый image и стартовал docker, выполнить команду:
на ecss2
docker psCODEПример:
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 80ef72d3b125 git.eltex.loc:4567/ecss/ecss-postgresbdr:3.18 "/docker-entrypoint.…" 8 minutes ago Up 8 minutes 0.0.0.0:5439->5432/tcp, [::]:5439->5432/tcp ecss-postgres-bdr-ssw-postgres-container-1CODE
- Проверить на каких адресах подключена БД Postgres, выполнить команду:
- Обновление SSW.
- Обновление пакета ecss-dns-env:
на ecss2
sudo apt install ecss-dns-envCODE
После обновления нужно актуализировать конфигурацию, выполнив команду. Ответы на вопросы аналогичны процедуре инсталляции:на ecss2
sudo dpkg-reconfigure ecss-dns-envCODE - Выполнить обновление пакета ecss-user:
на ecss2
sudo apt install ecss-userCODE - Выполнить обновление пакета ecss-utils:
на ecss2
sudo apt install ecss-utilsCODE Установить пакет LO:
на ecss2
sudo apt install ecss-license-officerCODEПри установке пакета ecss-license-officer будут заданы вопросы:
Вопросы Ответы Примеры Адрес для соединения c License Officer:
License Officer listen ip:0.0.0.0 (значение по умолчанию) 
Порт для соединения c License Officer:
License Officer listen port:4321 (значение по умолчанию) 
Выберите уровень логирования:
Log level:info (значение по умолчанию),
возможные варианты: debug, error, info
Ключ-имя кластера резервирования:
License Officer cluster key:указать уникальное имя
ecss-lm-cluster (значение по умолчанию)Менеджеры с одинаковыми именами попытаются собраться в кластер и резервировать друг друга.
Данные сохраняются в файле - /etc/ecss/ecss-license-officer/config.env:
ECSS_LM_HOST=0.0.0.0 ECSS_LM_PORT=4321 ECSS_LM_LOG_LEVEL=info RELEASE_COOKIE=ecss-abf-lm-cluster
Конфигурация License Officer (LO)
Сервис ecss-license-officer использует два конфигурационных файла: /etc/ecss/ecss-license-officer/config.env и /etc/ecss/ecss-license-officer/config.yaml.
В файл config.env информация сохраняется в момент установки пакета ecss-license-officer.
Сonfig.yaml файл содержит основные настройки для подключения к ELM-серверу, откуда брать лицензии, какие лицензии, и куда их потом передавать, все это нужно сконфигурировать вручную.
Для заполнения данных полей откройте файл конфигурации ecss-elm-adapter используемого в версии 3.17 /etc/ecss/ecss-elm-adapter/config.env:информация в файле после установки
elm_addresses: [] licenses: [] ecss_nodes: []CODEна ecss2
сat /etc/ecss/ecss-elm-adapter/config.env ELM_HOST=192.168.83.220 ELM_PORT=8099 ECSS_PRODUCT_ID=ECSS2000000 ECSS_LICENSE_KEY=ssw987654 LOG_LEVEL=info LICENCE_FAIL_TIMER_SECONDS=10 LICENCE_PULL_TIMER_SECONDS=360CODEВ поле elm_adresses нужно прописать список серверов ELM, к которым мы хотим подключаться для получения лицензий. Первый адрес в списке используется как основной. Дополнительные строки с адресами работают как резерв.
пример:
- "elm-1.eltex.loc:8099"
- "192.168.111.22:8099"
- "elm-3.eltex.loc:8099"
Дальше задаются сами лицензии в поле licenses.- id может быть любой, главное чтоб был уникальный у каждой лицензии. Влияет только на адрес лицензии на самом LO (например 0, 1, 2, 3).
- kind. Для SSW поддерживается только SSW (заглавными буквами).
- type выбирается как elm, если запрашивать данную лицензию нужно с ELM-сервера. Если нужно использовать файловую лицензию SSW, то тип выбирается как ecss_license.
- при elm типе необходимо задать поля license_key и product_id для идентификации лицензии.
- при ecss_license типе задается поле license, содержащее ключ статичной лицензии.
Параметры license_key = ECSS_LICENSE_KEY и product_id = ECSS_PRODUCT_ID должны быть согласованы с данными, ранее загруженными на ELM-сервере.
Блок ecss_nodes.
В нем нужно задать данные сервисов, которые будут получать лицензию. Сервис задается тремя параметрами:
- id - идентификатор сервиса. В случае с SSW должен совпадать с ECSS_ID лицензируемого SSW.
- kind - тип лицензируемого сервиса. по аналогии с блоком лицензий, поддерживаются типы SSW и AUP. Для SSW поддерживается только SSW.
- license_id - идентификатор лицензии, которая будет отправляться на данный сервис. Соответствует идентификаторам лицензии из блока licenses.
Два SSW с разными ECSS_ID не могут получить одну и ту же лицензию, конфигурация с таким распределением будет помечена некорректной.
Кроме того, два SSW с одинаковыми ECSS_ID не смогут одновременно получать одну и ту же лицензию с одного LO, поэтому крайне важно корректно устанавливать свой ECSS_ID и делать его уникальным как минимум в зоне видимости используемого LO.Формат ECSS_ID.
Начинается и заканчивается обязательно латинской буквой или цифрой, в теле же могут использоваться точки и тире.[A-Za-z0-9][A-Za-z0-9.-][A-Za-z0-9]
Для SSW работающего в кластере указываем только одну запись в блок ecss_nodes на кластер, индивидуально для каждого хоста указывать нельзя. Иначе будут генерироваться два запроса с одинаковым ECSS_ID что недопустимо.
Пример: файла config.yaml на основе данных из файла /etc/ecss/ecss-elm-adapter/config.env
elm_addresses: - "192.168.83.220:8099" licenses: - id: 0 kind: SSW type: elm license_key: "ssw987654" product_id: "ECSS2000000" ecss_nodes: - id: eltex1.test kind: SSW license_id: 0CODEВыполнить перезагрузку сервиса ecss-license-officer.service для обновления конфигурации из файла /etc/ecss/ecss-license-officer/config.yaml следующей командой:
если кластер, то на обоих хостах
sudo systemctl restart ecss-license-officer.serviceCODEНикаких дополнительных действий выполнять не требуется.
- Выполнить обновление пакета ecss-node:
на ecss2
sudo apt install ecss-nodeCODEВОПРОСЫ НА УСТАНОВКУ ecss-node:
Вопрос Ответ Пример Cookie для ноды core: (указать уникальный cookie для core, в примере ecss-core-example)
В кластерной конфигурации cookie должны быть одинаковые для нод одного типа.
ecss-core-example (необходимо ввести) 
Cookie для ноды ds: (указать уникальный cookie для ds, в примере ecss-ds-example)
В кластерной конфигурации cookie должны быть одинаковые для нод одного типа.
ecss-ds-example (необходимо ввести) 
Cookie для ноды mediator: (указать уникальный cookie для mediator, в примере ecss-mediator-example)
В кластерной конфигурации cookie должны быть одинаковые для нод одного типа.
ecss-mediator-example (необходимо ввести) 
Cookie для ноды pa-sip: (указать уникальный cookie для pa-sip, в примере ecss-pa-sip-example)
В кластерной конфигурации cookie должны быть одинаковые для нод одного типа.
ecss-pa-sip-example (необходимо ввести) 
Cookie для ноды mycelium: (указать уникальный cookie для mycelium, в примере ecss-mycelium-example)
В кластерной конфигурации cookie должны быть одинаковые для нод одного типа.
ecss-mycelium-example (необходимо ввести) 
Cookie для ноды sorm: (указать уникальный cookie для sorm, в примере ecss-sorm-example)
В кластерной конфигурации cookie должны быть одинаковые для нод одного типа.
ecss-sorm-example (необходимо ввести) 
!!!Принимаем все изменения файлов конфигурации!!!
- Обновление пакета ecss-dns-env:
- Включаем ноды.
Включить сервисы ssw следующими командами:на ecss2
sudo systemctl unmask ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sormCODEна ecss2
sudo systemctl enable ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sormCODEВнимание
Перед запуском нод SSW изменяем имя кластера (на любое другое, главное чтобы оно не совпадало с соседом (ecss1)/любой другой потенциальной АТС в вашей сети, иначе он попробует к ней подключится). Для этого правим в файле /etc/ecss/ecss-mycelium/mycelium.config строчку "{cluster_name, 'eltex.test'}," для примера на "{cluster_name, 'eltex1.test'},"
на ecss2
sudo nano /etc/ecss/ecss-mycelium/mycelium1.configCODEПример:[ {mycelium_broker, [ {cluster_name, 'eltex1.test'}, {compress_module, elx_data_nif}, {session_gc_timeout, 3000}, {queue_gc_timeout, infinity} . . . - Запуск SSW на ecss2. Запустить следующие сервисы:
ecss-myceliumecss-dsна ecss2
sudo systemctl start ecss-myceliumCODEecss-coreна ecss2
sudo systemctl start ecss-dsCODEecss-mediatorна ecss2
sudo systemctl start ecss-coreCODEна ecss2
sudo systemctl start ecss-mediatorCODEЕсли лицензия поддерживает СОРМ3, то запустить также сервис ecss-sorm.
на ecss2
sudo systemctl start ecss-sormCODEЕсли сервис ecss-sorm оказался замаскирован, то выполнить следующие команды:
на ecss2
sudo systemctl unmask ecss-sorm sudo systemctl start ecss-sormCODEДля корректной работы SORM3 необходимо выполнить коррекцию команды для sorm экстрактора. Данную команду необходимо выполнить для каждого домена в SSW.
выполняется в CoCon
/domain/<Имя_домена>/sorm3/set extractor_node sorm1@ecss2CODEДля примера:/domain/test_domain/sorm3/info┌──────────────────┬───────────┬───────────┐│ Property │ Domain │ Value │├──────────────────┼───────────┼───────────┤│adaptation │test_domain│undefined ││enabled │test_domain│false ││entrypoint_profile│test_domain│ ││extractor_ip │test_domain│127.0.0.1 ││extractor_node │test_domain│sorm1@ecss1│└──────────────────┴───────────┴───────────┘/domain/test_domain/sorm3/set extractor_node sorm1@ecss2Property "extractor_node" successfully changed from:sorm1@ecss1tosorm1@ecss2./domain/test_domain/sorm3/info┌──────────────────┬───────────┬───────────┐│ Property │ Domain │ Value │├──────────────────┼───────────┼───────────┤│adaptation │test_domain│undefined ││enabled │test_domain│false ││entrypoint_profile│test_domain│ ││extractor_ip │test_domain│127.0.0.1 ││extractor_node │test_domain│sorm1@ecss2│└──────────────────┴───────────┴───────────┘Команду повторить для всех доменов в SSW
!!!ПОКА НЕ ЗАПУСКАЕМ PA-SIP!!!
- Проверить статус сервисов, для этого выполнить в CoCon команду system-status:выполняется в CoCon
/system-status Checking... ┌─┬───────────────┬────────────────────────┬───────────────┬────────────┬──────┐ │ │ Node │ Release │ Erlang nodes │Mnesia nodes│Uptime│ ├─┼───────────────┼────────────────────────┼───────────────┼────────────┼──────┤ │ │core1@ecss2 │ecss-core-3.18.0.217 │core1@ecss2 │not running │1m 28s│ │ │ds1@ecss2 │ecss-ds-3.18.0.217 │ds1@ecss2 │ds1@ecss2 │1m 32s│ │ │md1@ecss2 │ecss-mediator-3.18.0.217│md1@ecss2 │md1@ecss2 │1m 23s│ │ │mycelium1@ecss2│ecss-mycelium-3.18.0.217│mycelium1@ecss2│not running │1m 37s│ │ │sorm1@ecss2 │ecss-sorm-3.18.0.217 │sorm1@ecss2 │not running │1m 56s│ └─┴───────────────┴────────────────────────┴───────────────┴────────────┴──────┘ All services are started. Active media resource selected list specific: ┌─────────────┬───────────┬─────────────┬───────────┬───────────┐ │ Node │ MSR │ MSR │ Cc-status │ Cc-uptime │ │ │ │ version │ │ │ ├─────────────┼───────────┼─────────────┼───────────┼───────────┤ │ core1@ecss2 │ msr.ecss1 │ 3.17.1.0.27 │ connected │ 00:00:14 │ │ │ msr.ecss2 │ 3.17.1.0.27 │ connected │ 00:00:16 │ └─────────────┴───────────┴─────────────┴───────────┴───────────┘
Выполнить конфигурацию подключения SSW к LO следующей командой в CoCon, (в примере LO установлен в кластере, IPadd хостов 10.0.10.51 и 10.0.10.52. Значение порта из файла /etc/ecss/ecss-license-officer/config.env по умолчанию 4321):
выполняется в CoCon
/system/licence/manager/set --hosts [https://10.0.10.51:4321, https://10.0.10.52:4321]CODEВ случае установки LO на хостах SSW указывать IPadd OAM.
После выполнения проверить статус подключения командой:
выполняется в CoCon
/system/licence/manager/show-status ┌───────────────────────┬───────┬─────┐ │ Host │Current│Alive│ ├───────────────────────┼───────┼─────┤ │https://10.0.10.51:4321│* │true │ │https://10.0.10.52:4321│ │true │ └───────────────────────┴───────┴─────┘CODEВсе хосты должны иметь статус alive=true. Один должен быть "current".
- Current - отображает к какому хосту подключён SSW. Если есть подключение, указывается *, если нет - ничего не указано.
- Alive - отображает статус доступности хоста (healthcheck).
Подключение к License Manager
Отсутствие подключения к License Office \ ELM будет равноценно отсутствию доступа к токену, что приведёт к критическим авариям, переходу в аварийный режим по истечению которого, если связь не будет восстановлена, система перейдёт на Default-лицензию.
Данное поведение применимо только при работе в elm-режиме.
Если статус к одному из хостов LO показан current, можно посылать запрос на загрузку лицензии на SSW командой:
выполняется в CoCon
/cluster/storage/ds1/licence/requestCODEtype=elm
/cluster/storage/ds1/licence/request Licence received [******* ] 6s 2ms Success: Licence parameters appliedCODEtype=elm
/cluster/storage/ds1/licence/list-licence ┌──┬───────────────────┬────────────┬──────┬────────────────┬────────────────────┬────────────────────┬─────────┐ │Id│Creation date(UTC) │ SSW ID │Active│ Description │Comm. Exp. Date(UTC)│Expiration date(UTC)│Time left│ ├──┼───────────────────┼────────────┼──────┼────────────────┼────────────────────┼────────────────────┼─────────┤ │1 │03.02.2026 16:26:34│ECSS2000000 │* │ECSS ELM License│03.02.2027 16:26:34 │14.03.2026 10:49:12 │1d 6h 59m│ │0 │01.01.1990 00:00:00│ECSS DEFAULT│ │Default licence │ │ │ │ └──┴───────────────────┴────────────┴──────┴────────────────┴────────────────────┴────────────────────┴─────────┘CODEНикаких дополнительных действий выполнять не требуется.
- Обновление пакета ecss-restfs.Принять все новые конфигурационные файлы, выбирая Y.
на ecss2
sudo apt install ecss-restfsCODE - Обновление пакета ecss-media-server.
Если использовались не дефолтные имена файлов конфигурации, то при установке создадутся (при отсутствии) новые файлы с дефолтными именами и при запуске media-server будет использовать именно их.
В случае использования дефолтных имен в процессе установки ecss-media-server выполнит backup конфигурационных файлов, создав файлы с расширением .dpkg-old. Во вновь созданных файлах конфигурации часть конфигураций окажется удаленной/измененной на дефолтные значения (например, ice-параметры необходимые для elph, stun-сервер, адрес сервера с метриками).
Поэтому при необходимости скорректировать параметры перед вводом media-server в эксплуатацию, добавив из backup config-файлов *.dpkg-old нужные данные.
Если использовались не дефолтные имена файлов конфигурации, новосозданные дефолтные файлы нужно в обязательно порядке удалить.
Выполнить обновление:на ecss2
sudo apt install ecss-media-serverCODEПринимаем все новые файлы конфигурации.
Актуализировать конфигурацию:на ecss2
sudo dpkg-reconfigure ecss-media-serverCODE - Обновление пакета ecss-media-resources:
на ecss2
sudo apt install ecss-media-resourcesCODE - Обновление пакета ecss-web-conf
на ecss2
sudo apt install ecss-web-confCODE Проверить список установленных сервисов командой:
на ecss2
sudo dpkg -l | grep ecssCODEПример:sudo dpkg -l | grep ecss ii ecss-cc-ui 17.1.0.36+cc-ui amd64 Eltex/ECSS-10 UI and API for call center ii ecss-dns-env 18.0.0 amd64 Eltex/ECSS-10 Configuration settings for domain service ii ecss-media-resources 18.0.0 amd64 Eltex/ECSS-10 Media resources ii ecss-media-server 18.0.7 amd64 Eltex/ECSS-10 Media server ii ecss-node 18.0.217 amd64 Eltex/ECSS-10 Node services ii ecss-peeper-client 17.1.0.23 amd64 Eltex/ECSS-10 peeper client ii ecss-postgres-bdr-ssw 18.0.0+ssw amd64 Eltex/Postgres BDR ii ecss-restfs 18.0.21 amd64 Eltex/ECSS-10 RestFS API interface for filesystem ii ecss-teleconference-ui 17.1.0.23 amd64 Eltex/ECSS-10 UI and API for Teleconference ii ecss-user 18.0.0 amd64 Eltex/ECSS-10 SSW user environment ii ecss-utils 18.0.0 amd64 Eltex/ECSS-10 Utilities for reading binary logs ii ecss-web-conf 18.0.31 amd64 Eltex/ECSS-10 Web configurator
По результатам выполнения команды переустановить пакеты имеющие версию 17.1.* . В данном примере – ecss-cc-ui/ecss-peeper-client/ecss-teleconference-ui.
Обновление пакета ecss-teleconference-ui
на ecss2
sudo apt install ecss-teleconference-uiCODEОбновление пакета ecss-crm-server
на ecss2
sudo apt install ecss-crm-serverCODEОбновление пакета ecss-cc-ui
на ecss2
sudo apt install ecss-cc-uiCODEОбновление пакета ecss-call-api
на ecss2
sudo apt install ecss-call-apiCODEОбновление пакета ecss-peeper-client
на ecss2
sudo apt install ecss-peeper-clientCODE- Запуск сервиса keepalived
Перед запуском сервиса keepalived необходимо стартовать сервис ecss-pa-sip:на ecss2
sudo systemctl start ecss-pa-sipCODEна ecss2
sudo systemctl enable --now keepalivedCODE - Удалить более неиспользуемый пакет ecss-elm-adapter командой:
на ecss2
sudo apt purge ecss-elm-adapterCODEНикаких дополнительных действий выполнять не требуется.
4 Подготовительные действия на ecss1
- Подготовить ecss1 к обновлению, для этого перевести весь трафик на ecss2 (команда выполняется на ecss1):
на ecss1
sudo systemctl disable --now keepalived.serviceCODE - Командой ifconfig проверьте, что все VRRP-адреса (VRRP IP-SIP1 / VRRP IP-SIP2) находятся на ecss2.
на ecss2
ifconfigCODE - После разделения кластера необходимо выключить все ноды на сервере ecss1:
на ecss1
sudo systemctl mask --now ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sormCODEПри выполнении приложенной команды будет уведомление.
Warning: The unit file, source configuration file or drop-ins of ecss-ds.service changed on disk. Run 'systemctl daemon-reload' to reload units. Warning: The unit file, source configuration file or drop-ins of ecss-mycelium.service changed on disk. Run 'systemctl daemon-reload' to reload units. Warning: The unit file, source configuration file or drop-ins of ecss-mediator.service changed on disk. Run 'systemctl daemon-reload' to reload units. Warning: The unit file, source configuration file or drop-ins of ecss-core.service changed on disk. Run 'systemctl daemon-reload' to reload units. Warning: The unit file, source configuration file or drop-ins of ecss-pa-sip.service changed on disk. Run 'systemctl daemon-reload' to reload units.
Данные сообщения не является ошибкой. Продолжать выполнение процедуры.
5 Обновление сервисов SSW на ecss1
- Выполнить на ecss1 объединение в кластер:
Команда ecss-control attach выполняется на этом шаге для возможности создания репликации БД Postgres. Такое поведение безопасно, потому что нода уже выведена из эксплуатации.
на ecss1
sudo ecss-control attachCODE - Активация сервиса keepalived.
VRRP-SIP завязан на сервиса ecss-pa-sip. Если демон ecss-pa-sip выключен, адрес не мигрирует на ecss1.
на ecss1
sudo systemctl enable --now keepalivedCODE - Обновление PostgreSQL:
- Проверить, на каких адресах подключена БД Postgres, выполнить команду:
на ecss1
psql -Upostgres -decss_storekeeper_db -h localhost -p5439 -c "SELECT node_local_dsn FROM bdr.bdr_nodes;"CODEПример: пароль по умолчанию "postgres1"
psql -Upostgres -decss_storekeeper_db -h localhost -p5439 -c "SELECT node_local_dsn FROM bdr.bdr_nodes;" Password for user postgres: node_local_dsn --------------------------------------------------------------------------------------- host=10.0.10.51 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1 host=10.0.10.52 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1 (2 rows)CODE - Выключаем docker-контейнер:
на ecss1
sudo docker compose -f /srv/ecss/ecss-postgres-bdr-ssw/docker-compose.container.yml downCODEПример: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
- Удаляем старый deb-пакет, т. к опция upgrade не поддержана:
на ecss1
sudo apt remove ecss-postgres-bdr-sswCODE!!Важно!!
Выполнить именно remove, а не purge, т. к remove сохраняет директорию volumes c таблицами нашей БД.
Пример:sudo apt remove ecss-postgres-bdr-ssw Чтение списков пакетов… Готово . . . Следующие пакеты будут УДАЛЕНЫ: ecss-postgres-bdr-ssw . . . Хотите продолжить? [Д/н] y Удаляется ecss-postgres-bdr-ssw (17.1.0.59+ssw) …
- Устанавливаем новый deb-пакет:
на ecss1
sudo apt install ecss-postgres-bdr-sswCODE!!Важно!!
Во время установки будут заданы вопросы как при первоначальной установке:
Ответы должны точно соответствовать указанным в процедуре, иначе будет выполнена попытка создать новую базу данных и установка завершится ошибкой.Вопрос Ответ Пример Текущий IP-адрес сетевого интерфейса.
Выберите IP: Такой же как и при первоначальной установке,
т. к. репликация завязана на конкретные IP.(проверили в пункте "а", в примере 10.0.10.51)
10.0.10.51 (необходимо выбрать) 
Установка в кластере?
Выберите <Да>, если пакет устанавливается на узле кластера.Да (значение по умолчанию) 
Является ли этот узел мастером?
НЕТ! (!!Важно!!, иначе он попытается создать новую bdr,
чего сделать не сможет и установка завершится с ошибкой)Нет (значение по умолчанию) 
IP-адрес, используемый для подключения к кластеру:
IP соседней ноды (который указывали при её установке,
проверяли в пункте "а", в примере 10.0.10.52)
10.0.10.52 (необходимо указать) 
При успешной установке, на этапе поднятия репликации увидим:
sudo apt install ecss-postgres-bdr-ssw . . . ============================= Checking replication status ============================= Репликация BDR настроена корректно: данные совпадают. . . . ======================================================= ======================================================= ecss-postgres-bdr-ssw successfully installed/updated! ======================================================= ======================================================= ┏┓┏┓┏┓┏┳┓┏┓┳┓┏┓┏┓ ┳┓┳┓┳┓ ┏┓┏┓┓ ┏ ┃┃┃┃┗┓ ┃ ┃┓┣┫┣ ┗┓ ┣┫┃┃┣┫ ┗┓┗┓┃┃┃ ┣┛┗┛┗┛ ┻ ┗┛┛┗┗┛┗┛ ┻┛┻┛┛┗ ┗┛┗┛┗┻┛CODE - После установки проверить, что подтянулся новый image и стартовал docker, выполнить команду:
на ecss1
docker psCODEПример:
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f53bd28c78ff git.eltex.loc:4567/ecss/ecss-postgresbdr:3.18 "/docker-entrypoint.…" 3 minutes ago Up 3 minutes 0.0.0.0:5439->5432/tcp, [::]:5439->5432/tcp ecss-postgres-bdr-ssw-postgres-container-1CODE
- Проверить, на каких адресах подключена БД Postgres, выполнить команду:
- Обновление пакета ecss-dns-env.
на ecss1
sudo apt install ecss-dns-envCODEПосле обновления актуализировать конфигурацию командой:При обновлении принимать новые конфигурационные файлы -Y.на ecss1
sudo dpkg-reconfigure ecss-dns-envCODE - Обновление пакета ecss-user:
на ecss1
sudo apt install ecss-userCODE - Обновление пакета ecss-utils:
на ecss1
sudo apt install ecss-utilsCODE Установить пакет LO:
на ecss2
sudo apt install ecss-license-officerCODEПри установке пакета ecss-license-officer будут заданы вопросы:
Вопросы Ответы Примеры Адрес для соединения c License Officer:
License Officer listen ip:0.0.0.0 (значение по умолчанию) 
Порт для соединения c License Officer:
License Officer listen port:4321 (значение по умолчанию) 
Выберите уровень логирования:
Log level:info (значение по умолчанию),
возможные варианты: debug, error, info
Ключ-имя кластера резервирования:
License Officer cluster key:указать уникальное имя
ecss-lm-cluster (значение по умолчанию)Менеджеры с одинаковыми именами попытаются собраться в кластер и резервировать друг друга.
Данные сохраняются в файле - /etc/ecss/ecss-license-officer/config.env:
ECSS_LM_HOST=0.0.0.0 ECSS_LM_PORT=4321 ECSS_LM_LOG_LEVEL=info RELEASE_COOKIE=ecss-abf-lm-cluster
Конфигурация Llicense Officer (LO)
Сервис ecss-license-officer использует два конфигурационных файла: /etc/ecss/ecss-license-officer/config.env и /etc/ecss/ecss-license-officer/config.yaml.
В файл config.env информация сохраняется в момент установки пакета ecss-license-officer.
Сonfig.yaml файл содержит основные настройки для подключения к ELM-серверу, откуда брать лицензии, какие лицензии, и куда их потом передавать, все это нужно сконфигурировать вручную.
Для заполнения данных полей откройте файл конфигурации ecss-elm-adapter используемого в версии 3.17 /etc/ecss/ecss-elm-adapter/config.env:информация в файле после установки
elm_addresses: [] licenses: [] ecss_nodes: []CODEна ecss2
сat /etc/ecss/ecss-elm-adapter/config.env ELM_HOST=192.168.83.220 ELM_PORT=8099 ECSS_PRODUCT_ID=ECSS2000000 ECSS_LICENSE_KEY=ssw987654 LOG_LEVEL=info LICENCE_FAIL_TIMER_SECONDS=10 LICENCE_PULL_TIMER_SECONDS=360CODEВ поле elm_adresses нужно прописать список серверов ELM, к которым мы хотим подключаться для получения лицензий. Первый адрес в списке используется как основной. Дополнительные строки с адресами работают как резерв.
пример:
- "elm-1.eltex.loc:8099"
- "192.168.111.22:8099"
- "elm-3.eltex.loc:8099"
Дальше задаются сами лицензии в поле licenses.- id может быть любой, главное, чтобы был уникальный у каждой лицензии. Влияет только на адрес лицензии на самом LO (например 0, 1, 2, 3).
- kind. Для SSW поддерживается только SSW (заглавными буквами).
- type выбирается как elm, если запрашивать данную лицензию нужно с ELM-сервера. Если нужно использовать файловую лицензию SSW, то тип выбирается как ecss_license.
- при elm типе необходимо задать поля license_key и product_id для идентификации лицензии.
- при ecss_license типе задается поле license содержащее ключ статичной лицензии.
Параметры license_key = ECSS_LICENSE_KEY и product_id = ECSS_PRODUCT_ID должны быть согласованы с данными ранее загруженными на ELM-сервере.
Блок ecss_nodes.
В нем нужно задать данные сервисов, которые будут получать лицензию. Сервис задается тремя параметрами:
- id - идентификатор сервиса. В случае с SSW должен совпадать с ECSS_ID лицензируемого SSW.
- kind - тип лицензируемого сервиса. по аналогии с блоком лицензий, поддерживаются типы SSW и AUP. Для SSW поддерживается только SSW.
- license_id - идентификатор лицензии, которая будет отправляться на данный сервис. Соответствует идентификаторам лицензии из блока licenses.
Два SSW с разными ECSS_ID не могут получить одну и ту же лицензию, конфигурация с таким распределением будет помечена некорректной.
Кроме того, два SSW с одинаковыми ECSS_ID не смогут одновременно получать одну и ту же лицензию с одного LO, поэтому крайне важно корректно устанавливать свой ECSS_ID и делать его уникальным как минимум в зоне видимости используемого LO.Формат ECSS_ID.
Начинается и заканчивается обязательно латинской буквой или цифрой, в теле же могут использоваться точки и тире.[A-Za-z0-9][A-Za-z0-9.-][A-Za-z0-9]
Для SSW работающего в кластере указываем только одну запись в блок ecss_nodes на кластер, индивидуально для каждого хоста указывать нельзя. Иначе будут генерироваться два запроса с одинаковым ECSS_ID что недопустимо.
Пример: файла config.yaml на основе данных из файла /etc/ecss/ecss-elm-adapter/config.env
elm_addresses: - "192.168.83.220:8099" licenses: - id: 0 kind: SSW type: elm license_key: "ssw987654" product_id: "ECSS2000000" ecss_nodes: - id: eltex1.test kind: SSW license_id: 0CODEВыполнить перезагрузку сервиса ecss-license-officer.service для обновления конфигурации из файла /etc/ecss/ecss-license-officer/config.yaml следующей командой:
если кластер, то на обоих хостах
sudo systemctl restart ecss-license-officer.serviceCODEНикаких дополнительных действий выполнять не требуется.
- Обновление пакета ecss-node:
на ecss1
sudo apt install ecss-nodeCODEна ecss1
ВОПРОСЫ НА УСТАНОВКУ ecss-node:
Вопрос Ответ Пример Cookie для ноды core: (указать уникальный cookie для core, в примере ecss-core-example)
В кластерной конфигурации cookie должны быть одинаковые для нод одного типа.
ecss-core-example (необходимо ввести) 
Cookie для ноды ds: (указать уникальный cookie для ds, в примере ecss-ds-example)
В кластерной конфигурации cookie должны быть одинаковые для нод одного типа.
ecss-ds-example (необходимо ввести) 
Cookie для ноды mediator: (указать уникальный cookie для mediator, в примере ecss-mediator-example)
В кластерной конфигурации cookie должны быть одинаковые для нод одного типа.
ecss-mediator-example (необходимо ввести) 
Cookie для ноды pa-sip: (указать уникальный cookie для pa-sip, в примере ecss-pa-sip-example)
В кластерной конфигурации cookie должны быть одинаковые для нод одного типа.
ecss-pa-sip-example (необходимо ввести) 
Cookie для ноды mycelium: (указать уникальный cookie для mycelium, в примере ecss-mycelium-example)
В кластерной конфигурации cookie должны быть одинаковые для нод одного типа.
ecss-mycelium-example (необходимо ввести) 
Cookie для ноды sorm: (указать уникальный cookie для sorm, в примере ecss-sorm-example)
В кластерной конфигурации cookie должны быть одинаковые для нод одного типа.
ecss-sorm-example (необходимо ввести) 
!!!Принимаем все изменения файлов конфигурации!!!
- Включить сервисы ssw:
на ecss1
sudo systemctl unmask ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sormCODEна ecss1
sudo systemctl enable ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sormCODEВнимание
Перед запуском нод SSW, изменяем имя кластера (на любое другое, главноеЮ чтобы оно не совпадало с соседом (ecss1)/любой другой потенциальной АТС в вашей сети, иначе он попробует к ней подключится). Для этого правим в файле /etc/ecss/ecss-mycelium/mycelium.config строчку "{cluster_name, 'eltex.test'}," для примера на "{cluster_name, 'eltex1.test'},"
на ecss1
sudo nano /etc/ecss/ecss-mycelium/mycelium1.configCODEПример:[ {mycelium_broker, [ {cluster_name, 'eltex1.test'}, {compress_module, elx_data_nif}, {session_gc_timeout, 3000}, {queue_gc_timeout, infinity} . . . - Сервис ecss-sorm на ecss1 сразу замаскировать, т. к. у нас заявлена работа ecss-sorm на одном хосте в кластере.
на ecss1
sudo systemctl mask ecss-sormCODE - На ecss1 запустите сервис mycelium и в CoCon проверьте, что сервис поднялся и видно ноды mycelium хостов ecss1/ ecss2:
на ecss1
sudo systemctl start ecss-myceliumCODEвыполняется в CoCon/system-status Checking... ┌─┬───────────────┬────────────────────────┬───────────────────────────────┬─────────────────────┬───────┐ │ │ Node │ Release │ Erlang nodes │ Mnesia nodes │Uptime │ ├─┼───────────────┼────────────────────────┼───────────────────────────────┼─────────────────────┼───────┤ │ │core1@ecss2 │ecss-core-3.18.0.249 │core1@ecss1,core1@ecss2 │not running │12m 12s│ │ │ds1@ecss2 │ecss-ds-3.18.0.249 │ds1@ecss1,ds1@ecss2 │ds1@ecss1,ds1@ecss2 │12m 12s│ │ │md1@ecss2 │ecss-mediator-3.18.0.249│md1@ecss1,md1@ecss2 │md1@ecss1,md1@ecss2 │12m 12s│ │ │mycelium1@ecss1│ecss-mycelium-3.18.0.249│mycelium1@ecss1,mycelium1@ecss2│not running │12m 14s│ │ │mycelium1@ecss2│ecss-mycelium-3.18.0.249│mycelium1@ecss1,mycelium1@ecss2│not running │12m 13s│ │ │sip1@ecss2 │ecss-pa-sip-3.18.0.249 │sip1@ecss1,sip1@ecss2 │sip1@ecss1,sip1@ecss2│12m 13s│ └─┴───────────────┴────────────────────────┴───────────────────────────────┴─────────────────────┴───────┘ All services are started. Active media resource selected list specific: ┌─────────────┬───────────┬─────────────┬───────────┬───────────┐ │ Node │ MSR │ MSR │ Cc-status │ Cc-uptime │ │ │ │ version │ │ │ ├─────────────┼───────────┼─────────────┼───────────┼───────────┤ │ core1@ecss2 │ msr.ecss1 │ 3.17.1.0.27 │ connected │ 00:10:50 │ │ │ msr.ecss2 │ 3.18.0.7 │ connected │ 00:10:51 │ └─────────────┴───────────┴─────────────┴───────────┴───────────┘
- На ecss1 запустите сервис ds и в CoCon проверить, что сервис ds доступен на обоих хостах ecss1/ ecss2:
на ecss1
sudo systemctl start ecss-dsCODEвыполняется в CoCon/system-status Checking... ┌─┬───────────────┬────────────────────────┬───────────────────────────────┬─────────────────────┬───────┐ │ │ Node │ Release │ Erlang nodes │ Mnesia nodes │Uptime │ ├─┼───────────────┼────────────────────────┼───────────────────────────────┼─────────────────────┼───────┤ │ │core1@ecss2 │ecss-core-3.18.0.249 │core1@ecss1,core1@ecss2 │not running │12m 12s│ │ │ds1@ecss1 │ecss-ds-3.18.0.249 │ds1@ecss1,ds1@ecss2 │ds1@ecss1,ds1@ecss2 │12m 14s│ │ │ds1@ecss2 │ecss-ds-3.18.0.249 │ds1@ecss1,ds1@ecss2 │ds1@ecss1,ds1@ecss2 │12m 12s│ │ │md1@ecss2 │ecss-mediator-3.18.0.249│md1@ecss1,md1@ecss2 │md1@ecss1,md1@ecss2 │12m 12s│ │ │mycelium1@ecss1│ecss-mycelium-3.18.0.249│mycelium1@ecss1,mycelium1@ecss2│not running │12m 14s│ │ │mycelium1@ecss2│ecss-mycelium-3.18.0.249│mycelium1@ecss1,mycelium1@ecss2│not running │12m 13s│ │ │sip1@ecss2 │ecss-pa-sip-3.18.0.249 │sip1@ecss1,sip1@ecss2 │sip1@ecss1,sip1@ecss2│12m 13s│ └─┴───────────────┴────────────────────────┴───────────────────────────────┴─────────────────────┴───────┘ All services are started. Active media resource selected list specific: ┌─────────────┬───────────┬─────────────┬───────────┬───────────┐ │ Node │ MSR │ MSR │ Cc-status │ Cc-uptime │ │ │ │ version │ │ │ ├─────────────┼───────────┼─────────────┼───────────┼───────────┤ │ core1@ecss2 │ msr.ecss1 │ 3.17.1.0.27 │ connected │ 00:10:50 │ │ │ msr.ecss2 │ 3.18.0.7 │ connected │ 00:10:51 │ └─────────────┴───────────┴─────────────┴───────────┴───────────┘
- Далее такими же действиями запустить сервисы: ecss-mediator, ecss-pa-sip, ecss-core следующими командами:
на ecss1
sudo systemctl start ecss-coreCODEна ecss1
sudo systemctl start ecss-mediatorCODEПроверить статус в CoCom:на ecss1
sudo systemctl start ecss-pa-sipCODEРезультат:/system-status Checking... ┌─┬───────────────┬────────────────────────┬───────────────────────────────┬─────────────────────┬───────┐ │ │ Node │ Release │ Erlang nodes │ Mnesia nodes │Uptime │ ├─┼───────────────┼────────────────────────┼───────────────────────────────┼─────────────────────┼───────┤ │ │core1@ecss1 │ecss-core-3.18.0.249 │core1@ecss1,core1@ecss2 │not running │12m 14s│ │ │core1@ecss2 │ecss-core-3.18.0.249 │core1@ecss1,core1@ecss2 │not running │12m 12s│ │ │ds1@ecss1 │ecss-ds-3.18.0.249 │ds1@ecss1,ds1@ecss2 │ds1@ecss1,ds1@ecss2 │12m 14s│ │ │ds1@ecss2 │ecss-ds-3.18.0.249 │ds1@ecss1,ds1@ecss2 │ds1@ecss1,ds1@ecss2 │12m 12s│ │ │md1@ecss1 │ecss-mediator-3.18.0.249│md1@ecss1,md1@ecss2 │md1@ecss1,md1@ecss2 │12m 14s│ │ │md1@ecss2 │ecss-mediator-3.18.0.249│md1@ecss1,md1@ecss2 │md1@ecss1,md1@ecss2 │12m 12s│ │ │mycelium1@ecss1│ecss-mycelium-3.18.0.249│mycelium1@ecss1,mycelium1@ecss2│not running │12m 14s│ │ │mycelium1@ecss2│ecss-mycelium-3.18.0.249│mycelium1@ecss1,mycelium1@ecss2│not running │12m 13s│ │ │sip1@ecss1 │ecss-pa-sip-3.18.0.249 │sip1@ecss1,sip1@ecss2 │sip1@ecss1,sip1@ecss2│12m 14s│ │ │sip1@ecss2 │ecss-pa-sip-3.18.0.249 │sip1@ecss1,sip1@ecss2 │sip1@ecss1,sip1@ecss2│12m 13s│ └─┴───────────────┴────────────────────────┴───────────────────────────────┴─────────────────────┴───────┘ All services are started. Active media resource selected list specific: ┌─────────────┬───────────┬─────────────┬───────────┬───────────┐ │ Node │ MSR │ MSR │ Cc-status │ Cc-uptime │ │ │ │ version │ │ │ ├─────────────┼───────────┼─────────────┼───────────┼───────────┤ │ core1@ecss1 │ msr.ecss1 │ 3.17.1.0.27 │ connected │ 00:10:51 │ │ │ msr.ecss2 │ 3.18.0.7 │ connected │ 00:10:48 │ │ core1@ecss2 │ msr.ecss1 │ 3.17.1.0.27 │ connected │ 00:10:50 │ │ │ msr.ecss2 │ 3.18.0.7 │ connected │ 00:10:51 │ └─────────────┴───────────┴─────────────┴───────────┴───────────┘
Выполнить конфигурацию подключения SSW к LO следующей командой в CoCon, (в примере LO установлен в кластере, IPadd хостов 10.0.10.51 и 10.0.10.52. значение порта из файла /etc/ecss/ecss-license-officer/config.env по умолчанию 4321):
выполняется в CoCon
/system/licence/manager/set --hosts [https://10.0.10.51:4321, https://10.0.10.52:4321]CODEВ случае установки LO на хостах SSW указывать IPadd OAM.
После выполнения проверить статус подключения командой:
выполняется в CoCon
/system/licence/manager/show-status ┌───────────────────────┬───────┬─────┐ │ Host │Current│Alive│ ├───────────────────────┼───────┼─────┤ │https://10.0.10.51:4321│* │true │ │https://10.0.10.52:4321│ │true │ └───────────────────────┴───────┴─────┘CODEВсе хосты должны иметь статус alive=true. Один должен быть "current".
- Current - отображает к какому хосту подключён SSW. Если есть подключение, указывается *, если нет - ничего не указано.
- Alive - отображает статус доступности хоста (healthcheck).
Подключение к License Manager
Отсутствие подключения к License Office \ ELM будет равноценно отсутствию доступа к токену, что приведёт к критическим авариям, переходу в аварийный режим по истечению которого, если связь не будет восстановлена, система перейдёт на Default-лицензию.
Данное поведение применимо только при работе в elm-режиме.
Если статус к одному из хостов LO показан current, можно посылать запрос на загрузку лицензии на SSW командой:
выполняется в CoCon
/cluster/storage/ds1/licence/requestCODEtype=elm
/cluster/storage/ds1/licence/request Licence received [******* ] 6s 2ms Success: Licence parameters appliedCODEtype=elm
/cluster/storage/ds1/licence/list-licence ┌──┬───────────────────┬────────────┬──────┬────────────────┬────────────────────┬────────────────────┬─────────┐ │Id│Creation date(UTC) │ SSW ID │Active│ Description │Comm. Exp. Date(UTC)│Expiration date(UTC)│Time left│ ├──┼───────────────────┼────────────┼──────┼────────────────┼────────────────────┼────────────────────┼─────────┤ │1 │03.02.2026 16:26:34│ECSS2000000 │* │ECSS ELM License│03.02.2027 16:26:34 │14.03.2026 10:49:12 │1d 6h 59m│ │0 │01.01.1990 00:00:00│ECSS DEFAULT│ │Default licence │ │ │ │ └──┴───────────────────┴────────────┴──────┴────────────────┴────────────────────┴────────────────────┴─────────┘CODEНикаких дополнительных действий выполнять не требуется.
- Обновление пакета ecss-restfs:
на ecss1
sudo apt install ecss-restfsCODE - Обновление пакета ecss-media-server:Актуализировать конфигурацию:
на ecss1
sudo apt install ecss-media-serverCODEПроверить и при необходимости исправить вручную файл → /etc/ecss/ecss-media-server/config.xmlна ecss1
sudo dpkg-reconfigure ecss-media-serverCODEна ecss1<?xml version="1.0" encoding="utf-8"?> <config date="05:27:38 07.12.2024"> <general log-level="3" log-rotate="yes" max-calls="8192" max-vid-calls="8192" max-in-group="512" load-sensor="media" load-delta="10" calls-delta="100" spool-dir-size="100M" log-name="msr.log" log-path="/var/log/ecss/media-server" use-srtp="disabled" enable-ice-transport="no" ice-update="no" aggressive-ice="yes" stun-server="" suspicious-mode="no"/> <transport bind-addr="10.0.20.82" port="5040" transport="udp+tcp"/> <!-- By default configured public TURN-server --> <turn-server use-turn="no" host="numb.viagenie.ca" user="webrtc@live.com" password="muazkh"/> <media mixer-clock-rate="8000" use-vad="no" cng-level="0" jb-size="60" rtcp-timeout="0" rtp-timeout="350" udp-src-check="no" cn-multiplier="3" port-start="12000" port-range="2048" tias-in-sdp="no" thread-cnt="2" vid-enc-threads="2" vid-dec-threads="2" video-conf-layout="evenly" keyframe-interval="1000" vid-decode-delay="100" silence-threshold="-30" dtmf-flash-disable="no" video-dscp="0" other-dscp="0" dummy-video-src="/usr/share/ecss-media-server/video/dummy_video.yuv" video-enc-width="640" video-enc-height="360" finalsilence="1000" rtcp-stat-dump="yes" dtmf-tg-fpc-loop="10" dtmf-tg-fit="1" dtmf-tg-fot="2" dtmf-tg-volume="12288"/> <codec pcma="3" pcmu="2" ilbc="0" gsm="0" g722="3" g726="0" g729="1" speex="5" l16="0" g7221="6" 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.82" port="5700"/> </pbyte> <conf_dir path="/etc/ecss/ecss-media-server/conf.d"/> <metrics enable="no"/> <rtp> <auto addr-v4=""/> </rtp> </config> - Обновление пакета ecss-media-resources:
на ecss1
sudo apt install ecss-media-resourcesCODE - Обновление пакета ecss-web-conf:
на ecss1
sudo apt install ecss-web-confCODE Проверить список установленных сервисов командой:
на ecss2
sudo dpkg -l | grep ecssCODEПример:sudo dpkg -l | grep ecss ii ecss-cc-ui 17.1.0.53+cc-ui amd64 Eltex/ECSS-10 UI and API for call center ii ecss-dns-env 18.0.0 amd64 Eltex/ECSS-10 Configuration settings for domain service ii ecss-license-master 1.0.77 amd64 Eltex/ECSS-10 license master ii ecss-media-resources 18.0.0 amd64 Eltex/ECSS-10 Media resources ii ecss-media-server 18.0.7 amd64 Eltex/ECSS-10 Media server ii ecss-node 18.0.249 amd64 Eltex/ECSS-10 Node services ii ecss-peeper-client 17.1.0.23 amd64 Eltex/ECSS-10 peeper client ii ecss-postgres-bdr-ssw 18.0.0+ssw amd64 Eltex/Postgres BDR ii ecss-restfs 18.0.22 amd64 Eltex/ECSS-10 RestFS API interface for filesystem ii ecss-teleconference-ui 17.1.0.31 amd64 Eltex/ECSS-10 UI and API for Teleconference ii ecss-user 18.0.0 amd64 Eltex/ECSS-10 SSW user environment ii ecss-utils 18.0.0 amd64 Eltex/ECSS-10 Utilities for reading binary logs ii ecss-web-conf 18.0.31 amd64 Eltex/ECSS-10 Web configurator
По результатам выполнения команды переустановить пакеты имеющие версию 17.1.* . В данном примере – ecss-cc-ui/ecss-peeper-client/ecss-teleconference-ui.
Обновление пакета ecss-teleconference-ui
на ecss1
sudo apt install ecss-teleconference-uiCODEОбновление пакета ecss-cc-ui
на ecss1
sudo apt install ecss-cc-uiCODEОбновление пакета ecss-peeper-client
на ecss2
sudo apt install ecss-peeper-clientCODE- Удалить более неиспользуемый пакет ecss-elm-adapter командой:
на ecss2
sudo apt purge ecss-elm-adapterCODEНикаких дополнительных действий выполнять не требуется.
6 Проверка обновления
- После выполнения обновления проверить работу всех сервисов SSW.