Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление

1 Подготовка хостов к обновлению

  1. Подсказка

    ECSS-10 в версии 3.17 поддерживает два типа лицензирования — файловая лицензия (с использованием токена или без него) и ELM-лицензия. В зависимости от типа лицензирования при обновлении будут выполняться разные команды.

    Проверить, какой тип используется на вашем SSW, можно следующей командой:

    Блок кода
    titleвыполняется в CoCon
    /cluster/storage/ds1/licence/list-licence 

    При использовании файловой лицензии вывод будет:

    Блок кода
    titleфайловая лицензия
    /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    │                    │            │
    └──┴───────────────────┴────────────┴──────┴───────────────────┴────────────────────┴────────────┘

    При использовании ELM-лицензии вывод будет:

    Блок кода
    titleELM лицензия
    /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 │                    │            │
    └──┴───────────────────┴────────────┴──────┴────────────────┴────────────────────┴────────────┘


  2. Подготовка gluster volume к процедуре обновления.
    В случае недоступности одной из нод кластера могут возникнуть проблемы с файлами. После восстановления работы они будут находиться в сплите, из-за чего вручную придётся запускать синхронизацию между нодами.
    Для решения данной проблемы воспользуйтесь параметром cluster.favorite-child-policy.
    При его включении все файлы, находящиеся в сплите, будут автоматически синхронизированы между собой по заданному правилу.
    Включение данного параметра производится командой:
    Блок кода
    titleна ecss1
    sudo gluster volume set ecss_volume cluster.favorite-child-policy size
    Без форматирования
    titleРезультат:
    sudo gluster volume set ecss_volume cluster.favorite-child-policy size
    volume set: success

    Без форматирования
    titleРезультат:
    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
    
  3. При обновлении кластера следует обновлять сервера по очереди. Таким образом, при обновлении один из серверов будет всегда запущен и работа сервисов не будет прервана. Для разделения кластера следует использовать инструмент ecss-control на обоих серверах (описание команд утилиты приведено в «Приложении М»).
    Обмен SIP-сигнализацией происходит через SIP-VRRP IP-адрес. Этот функционал реализован для возможности миграции IP-адреса на другой хост в случае падения, отключения или технического обслуживания основного хоста. Контроль миграции IP-адресов осуществляется сервисом keepalived на каждом хосте.
    Для перевода трафика на первый сервер (ecss1) необходимо остановить keepalived на втором хосте (ecss2). В этом случае оба SIP-VRRP IP-адреса будут находиться на первом хосте (ecss1). Выполнить следующую команду:
    Блок кода
    titleна ecss2
    sudo systemctl disable --now keepalived.service
  4. Командой ifconfig проверить, что все VRRP IP-адреса находятся на ecss1 (VRRP-SIP1/VRRP-SIP2):
    Блок кода
    titleна ecss1
    ifconfig
  5. Необходимо замаскировать все ноды на сервере, который обновляется первым, и отключить их автозапуск:
    Блок кода
    titleна ecss2
    sudo systemctl mask --now ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm
    Информация

    При выполнении указанной команды будет уведомление.

    Без форматирования
    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.

    Эти сообщения не являются ошибкой. Продолжать выполнение процедуры.


    Предупреждение

    Нода sorm идет одна на кластер. Если она запущена на ecss1 при выполнении указанной команды появится уведомление.

    Без форматирования
    Unit /etc/systemd/system/ecss-sorm.service is masked, ignoring.

    Это сообщение не является ошибкой. Продолжать выполнение процедуры.

  6. На ecss1 выполнить разделение SSW на два независимых сервера следующей командой:
    Предупреждение

    Команда ecss-controlработает со стандартными именами хостов : ecss1/ecss2.


    Блок кода
    titleна ecss1
    sudo ecss-control detach
    Проверить статус:
    Блок кода
    titleна ecss1
    sudo ecss-control status

    Без форматирования
    titleРезультат:
    sudo ecss-control detach
    detach host: ecss2, ip: 10.0.10.52
    complete
    sudo ecss-control status
    locked ip: 10.0.10.52


2 Подготовка к обновлению сервисов SSW

  1. Актуализировать репозиторий SSW:
    Блок кода
    titleна обоих хостах
    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"
  2. Выполнить обновление пакетов:
    Блок кода
    titleна обоих хостах
    sudo apt update

3 Обновление сервисов SSW на ecss2

  1. Предупреждение
    titleВнимание
    Выполнить полную резервную копию (см. «Регламентное обслуживание и резервное копирование»).
  2. Обновление PostgreSQL:
    1. Проверить на каких адресах подключена БД Postgres, выполнить команду:
      Блок кода
      titleна ecss2
      psql -Upostgres -decss_storekeeper_db -h localhost -p5439 -c "SELECT node_local_dsn FROM bdr.bdr_nodes;"
      Подсказка

      Пароль по умолчанию "postgres1"


      Блок кода
      titleПример:
      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)
      
    2. Выключить docker-контейнер:
      Блок кода
      titleна ecss2
      sudo docker compose -f /srv/ecss/ecss-postgres-bdr-ssw/docker-compose.container.yml down

      Без форматирования
      titleПример:
      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 
    3. Удалить старый deb-пакет, так как опция upgrade не поддержана:
      Блок кода
      titleна ecss2
      sudo apt remove ecss-postgres-bdr-ssw
      Предупреждение
      titleВажно!

      Выполнить именно remove, а не purge, так как remove сохраняет директорию volumes с таблицами нашей БД.


      Без форматирования
      titleПример:
      sudo apt remove ecss-postgres-bdr-ssw
      Чтение списков пакетов… Готово
      . . .
      Следующие пакеты будут УДАЛЕНЫ:
        ecss-postgres-bdr-ssw
      . . .
      Хотите продолжить? [Д/н] y
      Удаляется ecss-postgres-bdr-ssw (17.1.0.59+ssw) …
    4. Установить новый deb-пакет:
      Блок кода
      titleна ecss2
      sudo apt install ecss-postgres-bdr-ssw 
      Предупреждение
      titleВажно!

      Во время установки будут заданы вопросы как при первоначальной установке:
      Ответы должны точно соответствовать указанным в процедуре, иначе будет выполнена попытка создать новую базу данных, и установка завершится ошибкой.

      Информация
      ВопросОтветПример

      Текущий IP-адрес сетевого интерфейса.

      Предупреждение

      Выберите IP: тот же, что и при первоначальной установке,
      так как репликация завязана на конкретные IP. 

      (проверили в пункте "а", в примере 10.0.10.52).

      10.0.10.52 (необходимо выбрать)

      Установка в кластере? 
      Выберите <Да>, если пакет устанавливается на узле кластера.
      Да (значение по умолчанию)

      Является ли этот узел мастером?

      Предупреждение
      titleВажно!

      НЕТ! Иначе он попытается создать новую bdr,
      чего сделать не сможет и установка завершится с ошибкой).



      Нет (значение по умолчанию)

      IP-адрес, используемый для подключения к кластеру:

      Предупреждение
      titleВажно!

      IP соседней ноды (который указывали при её установке, проверили в пункте "а", в примере 10.0.10.51).




      10.0.10.51 (необходимо указать)


      Блок кода
      titleПри успешной установке на этапе поднятия репликации увидим:
      sudo apt install ecss-postgres-bdr-ssw
      . . .
      =============================
       Checking replication status 
      =============================
      Репликация BDR настроена корректно: данные совпадают.
      . . .
      =======================================================
      =======================================================
       ecss-postgres-bdr-ssw successfully installed/updated! 
      =======================================================
      =======================================================
      
      
      ┏┓┏┓┏┓┏┳┓┏┓┳┓┏┓┏┓  ┳┓┳┓┳┓  ┏┓┏┓┓ ┏
      ┃┃┃┃┗┓ ┃ ┃┓┣┫┣ ┗┓  ┣┫┃┃┣┫  ┗┓┗┓┃┃┃
      ┣┛┗┛┗┛ ┻ ┗┛┛┗┗┛┗┛  ┻┛┻┛┛┗  ┗┛┗┛┗┻┛
    5. После установки проверить, что загрузился новый образ и стартовал docker, выполнить команду:
      Блок кода
      titleна ecss2
      docker ps

      Блок кода
      titleПример:
      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-1
  3. Обновление SSW.
    1. Обновление пакета ecss-dns-env:
      Блок кода
      titleна ecss2
      sudo apt install ecss-dns-env
    2. Выполнить обновление пакета ecss-user:
      Блок кода
      titleна ecss2
      sudo apt install ecss-user
    3. Выполнить обновление пакета ecss-utils:
      Блок кода
      titleна ecss2
      sudo apt install ecss-utils
    4. Раскрыть
      titleВ случае использования ELM-лицензирования

      Установить пакет License Provider:

      Блок кода
      titleна ecss2
      sudo apt install ecss-license-provider

      При установке пакета ecss-license-provider будут заданы вопросы:

      ВопросОтветыПримеры

      Адрес для соединения с License Provider: 
      License Provider listen ip:

      0.0.0.0 (значение по умолчанию)

      Порт для соединения с License Provider:
      License Provider listen port:
      4321 (значение по умолчанию)

      Выберите уровень логирования:
      Log level:
      info (значение по умолчанию),
      возможные варианты: debug, error, info

      Ключ-имя кластера резервирования:
      License Provider cluster key:

      указать уникальное имя
      ecss-lm-cluster (значение по умолчанию)

      Подсказка
      Менеджеры с одинаковыми именами попытаются собраться в кластер для взаимного резервирования.


      Данные сохраняются в файле /etc/ecss/ecss-license-provider/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 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-серверу, откуда брать лицензии, какие лицензии, и куда их потом передавать, все это нужно сконфигурировать вручную.

      Блок кода
      titleинформация в файле после установки
      elm_addresses: []
      licenses: []
      ecss_nodes: []
      Для заполнения этих полей откройте файл конфигурации ecss-elm-adapter используемого в версии 3.17 /etc/ecss/ecss-elm-adapter/config.env:
      Блок кода
      titleна ecss2
      cat /etc/ecss/ecss-elm-adapter/config.env 
      ELM_HOST=elm.eltex-co.ru
      ELM_PORT=8099
      ECSS_PRODUCT_ID=ECSS2000000
      ECSS_LICENSE_KEY=ssw987654
      LOG_LEVEL=info
      LICENCE_FAIL_TIMER_SECONDS=10
      LICENCE_PULL_TIMER_SECONDS=360

      В поле elm_addresses необходимо указать список серверов ELM, к которым мы хотим подключаться для получения лицензий.
      Первый адрес в списке используется как основной. Дополнительные строки с адресами работают как резерв.
      пример:

      Блок кода
      titleПример:
      elm_addresses:
       - "elm.eltex-co.ru:8099"
       - "192.168.111.22:8099"
       - "elm-3.eltex.loc:8099"



      Далее задаются лицензии в поле licenses.

      • id может быть любой, главное, чтобы был уникальный у каждой лицензии. Влияет только на адрес лицензии на самом License Provider (например 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 не смогут одновременно получать одну и ту же лицензию с одного License Provider, поэтому крайне важно корректно устанавливать свой ECSS_ID и делать его уникальным как минимум в зоне видимости используемого License Provider.
      Подсказка

      Формат ECSS_ID.
      Начинается и заканчивается обязательно латинской буквой или цифрой, в теле могут использоваться точки и тире. 

      Без форматирования
      [A-Za-z0-9][A-Za-z0-9.-][A-Za-z0-9]
      Примечание

      Для SSW, работающего в кластере, указываем только одну запись в блок ecss_nodes на кластер, индивидуально для каждого хоста указывать нельзя. Иначе будут генерироваться два запроса с одинаковым ECSS_ID что недопустимо.

      Блок кода
      titleПример: файла config.yaml на основе данных из файла
      elm_addresses:
       - "elm.eltex-co.ru:8099"
      licenses:
       - id: 0
         kind: SSW
         type: elm
         license_key: "ssw987654"
         product_id: "ECSS2000000"
      ecss_nodes:
       - id: eltex1.test
         kind: SSW
         license_id: 0

      Выполнить перезагрузку сервиса ecss-license-provider.service для обновления конфигурации из файла /etc/ecss/ecss-license-provider/config.yaml следующей командой:

      Блок кода
      titleесли кластер, то на обоих хостах
      sudo systemctl restart ecss-license-provider.service

      Раскрыть
      titleВ случае использования файловой лицензии

      Никаких дополнительных действий выполнять не требуется.

    5. Выполнить обновление пакета ecss-node:
      Блок кода
      titleна ecss2
      sudo apt install ecss-node

      Информация

      ВОПРОСЫ ПРИ УСТАНОВКЕ 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 (необходимо ввести)

      Предупреждение

      Принимаем все изменения файлов конфигурации


  4. Включаем ноды.
    Включить сервисы SSW следующими командами: 
    Блок кода
    titleна ecss2
    sudo systemctl unmask ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm

    Блок кода
    titleна ecss2
    sudo systemctl enable ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm

    Предупреждение
    titleВнимание

    Перед запуском нод SSW изменяем имя кластера (на любое другое, главное, чтобы оно не совпадало с соседом (ecss1)/любой другой потенциальной АТС в вашей сети, иначе он попробует к ней подключиться). Для этого правим в файле /etc/ecss/ecss-mycelium/mycelium.config строку "{cluster_name, 'eltex.test'}," для примера на "{cluster_name, 'eltex1.test'},"

    Блок кода
    titleна ecss2
    sudo nano /etc/ecss/ecss-mycelium/mycelium.config
    Без форматирования
    titleПример:
    [
        {mycelium_broker, [
            {cluster_name, 'eltex1.test'},
            {compress_module, elx_data_nif},
            {session_gc_timeout, 3000},
            {queue_gc_timeout, infinity}
    . . .


  5. Запуск SSW на ecss2. Запустить следующие сервисы:
    ecss-mycelium
    Блок кода
    titleна ecss2
    sudo systemctl start ecss-mycelium
    ecss-ds
    Блок кода
    titleна ecss2
    sudo systemctl start ecss-ds
    ecss-core
    Блок кода
    titleна ecss2
    sudo systemctl start ecss-core
    ecss-mediator
    Блок кода
    titleна ecss2
    sudo systemctl start ecss-mediator

    Подсказка

    Если лицензия поддерживает СОРМ3, то запустить также сервис ecss-sorm.

    Блок кода
    titleна ecss2
    sudo systemctl start ecss-sorm

    Если сервис ecss-sorm оказался замаскирован, то выполнить следующие команды:

    Блок кода
    titleна ecss2
    sudo systemctl unmask ecss-sorm
    sudo systemctl start ecss-sorm



    Подсказка

    Для корректной работы SORM3 необходимо выполнить команду для SORM-экстрактора. Данную команду необходимо выполнить для каждого домена в SSW. 

    Блок кода
    titleвыполняется в CoCon
    /domain/<Имя_домена>/sorm3/set extractor_node sorm1@ecss2


    панель
    titleДля примера:

    /domain/test_domain/sorm3/info     
    ┌──────────────────┬───────────┬─────────────┐
    │     Property     │  Domain   │    Value    │
    ├──────────────────┼───────────┼─────────────┤
    │adaptation        │test_domain│undefined    │
    │enabled           │test_domain│true         │
    │entrypoint_profile│test_domain│test         │
    │extractor_ip      │test_domain│192.168.47.94│
    │extractor_node    │test_domain│sorm1@ecss1 
    └──────────────────┴───────────┴─────────────┘

    /domain/test_domain/sorm3/set extractor_node sorm1@ecss2
    Property "extractor_node" successfully changed from: 
    sorm1@ecss1
       to
    sorm1@ecss2.

    /domain/test_domain/sorm3/info                                       
    ┌──────────────────┬───────────┬─────────────┐
    │     Property     │  Domain   │    Value    │
    ├──────────────────┼───────────┼─────────────┤
    │adaptation        │test_domain│undefined    │
    │enabled           │test_domain│true         │
    │entrypoint_profile│test_domain│test         │
    │extractor_ip      │test_domain│192.168.47.94│
    │extractor_node    │test_domain│sorm1@ecss2 
    └──────────────────┴───────────┴─────────────┘

    Команду повторить для всех доменов в SSW


    Предупреждение

    Пока не запускаем PA-SIP

  6. Проверить статус сервисов, для этого выполнить в CoCon команду system-status:
    Без форматирования
    titleвыполняется в 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  │
    └─────────────┴───────────┴─────────────┴───────────┴───────────┘
  7. Раскрыть
    titleВ случае использования ELM-лицензирования
    На ecss1 отключить сервис ecss-elm-adapter, выполнив команду:
    Блок кода
    titleна ecss1
    sudo systemctl stop ecss-elm-adapter.service

    Выполнить конфигурацию подключения SSW к License Provider следующей командой в CoCon, (в примере License Provider установлен в кластере, IP-адреса хостов 10.0.10.51 и 10.0.10.52. Значение порта из файла /etc/ecss/ecss-license-provider/config.env по умолчанию 4321):

    Блок кода
    titleвыполняется в CoCon
    /system/licence/manager/set --hosts [https://10.0.10.51:4321, https://10.0.10.52:4321]
    Подсказка

    В случае установки License Provider на хостах SSW указывать IP-адреса OAM.

    После выполнения проверить статус подключения командой:

    Блок кода
    titleвыполняется в CoCon
    /system/licence/manager/show-status           
    ┌───────────────────────┬───────┬─────┐
    │         Host          │Current│Alive│
    ├───────────────────────┼───────┼─────┤
    │https://10.0.10.51:4321│*      │true │
    │https://10.0.10.52:4321│       │true │
    └───────────────────────┴───────┴─────┘

    Все хосты должны иметь статус alive=true. Один должен быть "current". 

    • Current - отображает к какому хосту подключён SSW. Если есть подключение, указывается *, если нет - ничего не указано.
    • Alive - отображает статус доступности хоста (healthcheck).
    Информация
    titleПодключение к License Manager

    Отсутствие подключения к License Provider или ELM будет равноценно отсутствию доступа к токену, что приведёт к критическим авариям, переходу в аварийный режим по истечению которого, если связь не будет восстановлена, система перейдёт на Default-лицензию.

    Это поведение применимо только при работе в elm-режиме.

    Если статус к одному из хостов License Provider показан current, можно посылать запрос на загрузку лицензии на SSW командой:

    Блок кода
    titleвыполняется в CoCon
    /cluster/storage/ds1/licence/request
    Блок кода
    titletype=elm
    /cluster/storage/ds1/licence/request      
    Licence received      
    [*******                                                               ] 6s 2ms   
    Success: Licence parameters applied
    Блок кода
    titletype=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 │                    │                    │         │
    └──┴───────────────────┴────────────┴──────┴────────────────┴────────────────────┴────────────────────┴─────────┘



    Раскрыть
    titleВ случае использования файловой лицензии

    Никаких дополнительных действий выполнять не требуется.

  8. Обновление пакета ecss-restfs.
    Подсказка
    Принять все новые конфигурационные файлы, выбирая Y.

    Блок кода
    titleна ecss2
    sudo apt install ecss-restfs
  9. Обновление пакета ecss-media-server.
    Блок кода
    titleна ecss2
    sudo apt install ecss-media-server

  10. Обновление пакета ecss-media-resources:
    Блок кода
    titleна ecss2
    sudo apt install ecss-media-resources
  11. Обновление пакета ecss-web-conf
    Блок кода
    titleна ecss2
    sudo apt install ecss-web-conf
  12. Раскрыть
    titleОбновление пакетов опциональных сервисов

    Проверить список установленных сервисов командой:

    Блок кода
    titleна ecss2
    sudo dpkg -l | grep ecss
    Без форматирования
    titleПример:
    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

    Блок кода
    titleна ecss2
    sudo apt install ecss-teleconference-ui

    Обновление пакета ecss-crm-server

    Блок кода
    titleна ecss2
    sudo apt install ecss-crm-server

    Обновление пакета ecss-cc-ui

    Блок кода
    titleна ecss2
    sudo apt install ecss-cc-ui

    Обновление пакета ecss-call-api

    Блок кода
    titleна ecss2
    sudo apt install ecss-call-api

    Обновление пакета ecss-peeper-client

    Блок кода
    titleна ecss2
    sudo apt install ecss-peeper-client
  13. Раскрыть
    titleВ случае использования ELM-лицензирования
    Удалить больше не используемый пакет ecss-elm-adapter командой:
    Блок кода
    titleна ecss2
    sudo apt purge ecss-elm-adapter

    Раскрыть
    titleВ случае использования файловой лицензии

    Никаких дополнительных действий выполнять не требуется.

4 Перевод нагрузки на ecss2 

  1. Запуск сервиса keepalived
    Перед запуском сервиса keepalived необходимо стартовать сервис ecss-pa-sip:
    Блок кода
    titleна ecss2
    sudo systemctl start ecss-pa-sip

    Блок кода
    titleна ecss2
    sudo systemctl enable --now keepalived

    Информация

    Запуском сервисов ecss-pa-sip и keepalived выполняется перевод трафика с ecss1 на ecss2. Это первый шаг переключения трафика на ecss2, полный перевод будет после отключения сервиса keepalived на ecss1 на следующих шагах.

  2. Подготовить ecss1 к обновлению, для этого перевести весь трафик на ecss2 (команда выполняется на ecss1):
    Блок кода
    titleна ecss1
    sudo systemctl disable --now keepalived.service
  3. Командой ifconfig проверьте, что все VRRP-адреса (VRRP IP-SIP1 / VRRP IP-SIP2) находятся на ecss2.
    Блок кода
    titleна ecss2
    ifconfig

5 Подготовительные действия на ecss1

  1. Предупреждение
    titleВнимание
    Выполнить полную резервную копию (см. Регламентное обслуживание и резервное копирование).
  2. После разделения кластера необходимо выключить все ноды на сервере ecss1:
    Блок кода
    titleна ecss1
    sudo systemctl mask --now ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm
    Информация

    При выполнении указанной команды будет уведомление.

    Без форматирования
    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.

    Эти сообщения не являются ошибкой. Продолжать выполнение процедуры.

6 Обновление сервисов SSW на ecss1

  1. Выполнить на ecss1 объединение в кластер:
    Подсказка

    Команда ecss-control attach выполняется на этом шаге для возможности создания репликации БД Postgres. Такое поведение безопасно, потому что нода уже выведена из эксплуатации.

    Блок кода
    titleна ecss1
    sudo ecss-control attach
  2. Обновление PostgreSQL:
    1. Проверить, на каких адресах подключена БД Postgres, выполнить команду:
      Блок кода
      titleна ecss1
      psql -Upostgres -decss_storekeeper_db -h localhost -p5439 -c "SELECT node_local_dsn FROM bdr.bdr_nodes;"

      Блок кода
      titleПример: пароль по умолчанию "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)
      
    2. Выключить docker-контейнер:
      Блок кода
      titleна ecss1
      sudo docker compose -f /srv/ecss/ecss-postgres-bdr-ssw/docker-compose.container.yml down

      Без форматирования
      titleПример:
      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 
    3. Удалить старый deb-пакет, так как опция upgrade не поддержана:
      Блок кода
      titleна ecss1
      sudo apt remove ecss-postgres-bdr-ssw
      Предупреждение
      titleВажно!

      Выполнить именно remove, а не purge, так как remove сохраняет директорию volumes с таблицами нашей БД.


      Без форматирования
      titleПример:
      sudo apt remove ecss-postgres-bdr-ssw
      Чтение списков пакетов… Готово
      . . .
      Следующие пакеты будут УДАЛЕНЫ:
        ecss-postgres-bdr-ssw
      . . .
      Хотите продолжить? [Д/н] y
      Удаляется ecss-postgres-bdr-ssw (17.1.0.59+ssw) …
    4. Установить новый deb-пакет:
      Блок кода
      titleна ecss1
      sudo apt install ecss-postgres-bdr-ssw 
      Предупреждение
      titleВажно!

      Во время установки будут заданы вопросы как при первоначальной установке:
      Ответы должны точно соответствовать указанным в процедуре, иначе будет выполнена попытка создать новую базу данных, и установка завершится ошибкой.

      Информация
      ВопросОтветПример

      Текущий IP-адрес сетевого интерфейса.

      Предупреждение

      Выберите IP: тот же, что и при первоначальной установке,
      так как репликация завязана на конкретные IP.

      (проверили в пункте "а", в примере 10.0.10.51)

      10.0.10.51 (необходимо выбрать)

      Установка в кластере? 
      Выберите <Да>, если пакет устанавливается на узле кластера.
      Да (значение по умолчанию)

      Является ли этот узел мастером?

      Предупреждение

      НЕТ! (Важно!, иначе он попытается создать новую bdr,
      чего сделать не сможет и установка завершится с ошибкой)



      Нет (значение по умолчанию)

      IP-адрес, используемый для подключения к кластеру:

      Предупреждение

      IP соседней ноды (который указывали при её установке,

      проверили в пункте "а", в примере 10.0.10.52)

      10.0.10.52 (необходимо указать)


      Блок кода
      titleПри успешной установке, на этапе поднятия репликации увидим:
      sudo apt install ecss-postgres-bdr-ssw
      . . .
      =============================
       Checking replication status 
      =============================
      Репликация BDR настроена корректно: данные совпадают.
      . . .
      =======================================================
      =======================================================
       ecss-postgres-bdr-ssw successfully installed/updated! 
      =======================================================
      =======================================================
      
      
      ┏┓┏┓┏┓┏┳┓┏┓┳┓┏┓┏┓  ┳┓┳┓┳┓  ┏┓┏┓┓ ┏
      ┃┃┃┃┗┓ ┃ ┃┓┣┫┣ ┗┓  ┣┫┃┃┣┫  ┗┓┗┓┃┃┃
      ┣┛┗┛┗┛ ┻ ┗┛┛┗┗┛┗┛  ┻┛┻┛┛┗  ┗┛┗┛┗┻┛
    5. После установки проверить, что загрузился новый образ и стартовал docker, выполнить команду:
      Блок кода
      titleна ecss1
      docker ps

      Блок кода
      titleПример:
      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-1
  3. Обновление пакета ecss-dns-env.
    Блок кода
    titleна ecss1
    sudo apt install ecss-dns-env

    Подсказка
    При обновлении принимать новые конфигурационные файлы -Y.
  4. Обновление пакета ecss-user:
    Блок кода
    titleна ecss1
    sudo apt install ecss-user
  5. Обновление пакета ecss-utils:
    Блок кода
    titleна ecss1
    sudo apt install ecss-utils
  6. Раскрыть
    titleВ случае использования ELM-лицензирования

    Установить пакет License Provider:

    Блок кода
    titleна ecss2
    sudo apt install ecss-license-provider

    При установке пакета ecss-license-provider будут заданы вопросы:

    ВопросОтветыПримеры

    Адрес для соединения с License Provider: 
    License Provider listen ip:

    0.0.0.0  (значение по умолчанию)

    Порт для соединения с License Provider:
    License Provider listen port:
    4321 (значение по умолчанию)

    Выберите уровень логирования:
    Log level:
    info (значение по умолчанию),
    возможные варианты: debug, error, info

    Ключ-имя кластера резервирования:
    License Provider cluster key:

    указать уникальное имя
    ecss-lm-cluster (значение по умолчанию)

    Подсказка
    Менеджеры с одинаковыми именами попытаются собраться в кластер для взаимного резервирования.


    Какие службы должны быть перезапущены?

    ecss-license-provider.service  (значение по умолчанию)

    Данные сохраняются в файле /etc/ecss/ecss-license-provider/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 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-серверу, откуда брать лицензии, какие лицензии, и куда их потом передавать, все это нужно сконфигурировать вручную.

    Блок кода
    titleинформация в файле после установки
    elm_addresses: []
    licenses: []
    ecss_nodes: []
    Для заполнения этих полей откройте файл конфигурации ecss-elm-adapter используемого в версии 3.17 /etc/ecss/ecss-elm-adapter/config.env:
    Блок кода
    titleна ecss2
    cat /etc/ecss/ecss-elm-adapter/config.env 
    ELM_HOST=elm.eltex-co.ru
    ELM_PORT=8099
    ECSS_PRODUCT_ID=ECSS2000000
    ECSS_LICENSE_KEY=ssw987654
    LOG_LEVEL=info
    LICENCE_FAIL_TIMER_SECONDS=10
    LICENCE_PULL_TIMER_SECONDS=360

    В поле elm_addresses необходимо указать список серверов ELM, к которым мы хотим подключаться для получения лицензий. Первый адрес в списке используется как основной. Дополнительные строки с адресами работают как резерв.

    Подсказка

    Адрес ELM-сервера Элтекс - "elm.eltex-co.ru:8099".

    пример:
    - "elm.eltex-co.ru:8099"
    - "192.168.111.22:8099"
    - "elm-3.eltex.loc:8099"

    Далее задаются лицензии в поле licenses.

    • id может быть любой, главное, чтобы был уникальный у каждой лицензии. Влияет только на адрес лицензии на самом License Provider (например 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 не смогут одновременно получать одну и ту же лицензию с одного License Provider, поэтому крайне важно корректно устанавливать свой ECSS_ID и делать его уникальным как минимум в зоне видимости используемого License Provider.
    Подсказка

    Формат ECSS_ID.
    Начинается и заканчивается обязательно латинской буквой или цифрой, в теле могут использоваться точки и тире. 

    Без форматирования
    [A-Za-z0-9][A-Za-z0-9.-][A-Za-z0-9]
    Примечание

    Для SSW, работающего в кластере, указываем только одну запись в блок ecss_nodes на кластер, индивидуально для каждого хоста указывать нельзя. Иначе будут генерироваться два запроса с одинаковым ECSS_ID что недопустимо.

    Блок кода
    titleПример: файла config.yaml на основе данных из файла
    elm_addresses:
     - "elm.eltex-co.ru:8099"
    licenses:
     - id: 0
       kind: SSW
       type: elm
       license_key: "ssw987654"
       product_id: "ECSS2000000"
    ecss_nodes:
     - id: eltex1.test
       kind: SSW
       license_id: 0

    Выполнить перезагрузку сервиса ecss-license-provider.service для обновления конфигурации из файла /etc/ecss/ecss-license-provider/config.yaml следующей командой:

    Блок кода
    titleесли кластер, то на обоих хостах
    sudo systemctl restart ecss-license-provider.service
    Раскрыть
    titleВ случае использования файловой лицензии

    Никаких дополнительных действий выполнять не требуется.

  7. Обновление пакета ecss-node:
    Блок кода
    titleна ecss1
    sudo apt install ecss-node

    Информация
    titleна 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 (необходимо ввести)

    Предупреждение

    Принимаем все изменения файлов конфигурации


  8. Включить сервисы SSW: 
    Блок кода
    titleна ecss1
    sudo systemctl unmask ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip

    Блок кода
    titleна ecss1
    sudo systemctl enable ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip

    Предупреждение
    titleВнимание

    Перед запуском нод SSW, изменяем имя кластера (на имя указанное для сервера ecss2(на шаге 3.4). Для этого правим в файле /etc/ecss/ecss-mycelium/mycelium.config строку "{cluster_name, 'eltex.test'}," для примера на "{cluster_name, 'eltex1.test'},"

    Блок кода
    titleна ecss1
    sudo nano /etc/ecss/ecss-mycelium/mycelium.config
    Без форматирования
    titleПример:
    [
        {mycelium_broker, [
            {cluster_name, 'eltex1.test'},
            {compress_module, elx_data_nif},
            {session_gc_timeout, 3000},
            {queue_gc_timeout, infinity}
    . . .


  9. На ecss1 запустите сервис mycelium и в CoCon проверьте, что сервис поднялся и видно ноды mycelium хостов ecss1/ ecss2:
    Блок кода
    titleна ecss1
    sudo systemctl start ecss-mycelium

    Без форматирования
    titleвыполняется в 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  │
    └─────────────┴───────────┴─────────────┴───────────┴───────────┘
  10. На ecss1 запустите сервис ds и в CoCon проверить, что сервис ds доступен на обоих хостах ecss1/ ecss2:
    Блок кода
    titleна ecss1
    sudo systemctl start ecss-ds

    Без форматирования
    titleвыполняется в 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  │
    └─────────────┴───────────┴─────────────┴───────────┴───────────┘
  11. Далее такими же действиями запустить сервисы: ecss-mediator, ecss-pa-sip, ecss-coreследующими командами:
    Блок кода
    titleна ecss1
    sudo systemctl start ecss-core

    Блок кода
    titleна ecss1
    sudo systemctl start ecss-mediator

    Блок кода
    titleна ecss1
    sudo systemctl start ecss-pa-sip
    Проверить статус в CoCon:
    Без форматирования
    titleРезультат:
    /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  │
    └─────────────┴───────────┴─────────────┴───────────┴───────────┘
  12. Активация сервиса keepalived.
    Блок кода
    titleна ecss1
    sudo systemctl enable --now keepalived
  13. Раскрыть
    titleВ случае использования ELM-лицензирования

    Выполнить конфигурацию подключения SSW к License Provider следующей командой в CoCon, (в примере License Provider установлен в кластере, IP-адреса хостов 10.0.10.51 и 10.0.10.52. значение порта из файла /etc/ecss/ecss-license-provider/config.env по умолчанию 4321):

    Блок кода
    titleвыполняется в CoCon
    /system/licence/manager/set --hosts [https://10.0.10.51:4321, https://10.0.10.52:4321]

    После выполнения проверить статус подключения командой:

    Блок кода
    titleвыполняется в CoCon
    /system/licence/manager/show-status           
    ┌───────────────────────┬───────┬─────┐
    │         Host          │Current│Alive│
    ├───────────────────────┼───────┼─────┤
    │https://10.0.10.51:4321│*      │true │
    │https://10.0.10.52:4321│       │true │
    └───────────────────────┴───────┴─────┘

    Все хосты должны иметь статус alive=true. Один должен быть "current". 

    • Current - отображает к какому хосту подключён SSW. Если есть подключение, указывается *, если нет - ничего не указано.
    • Alive - отображает статус доступности хоста (healthcheck).
    Информация
    titleПодключение к License Manager

    Отсутствие подключения к License Provider \ ELM будет равноценно отсутствию доступа к токену, что приведёт к критическим авариям, переходу в аварийный режим по истечению которого, если связь не будет восстановлена, система перейдёт на Default-лицензию.

    Это поведение применимо только при работе в elm-режиме.

    Если статус к одному из хостов License Provider показан current, можно посылать запрос на загрузку лицензии на SSW командой:

    Блок кода
    titleвыполняется в CoCon
    /cluster/storage/ds1/licence/request
    Блок кода
    titletype=elm
    /cluster/storage/ds1/licence/request      
    Licence received      
    [*******                                                               ] 6s 2ms   
    Success: Licence parameters applied
    Блок кода
    titletype=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 │                    │                    │         │
    └──┴───────────────────┴────────────┴──────┴────────────────┴────────────────────┴────────────────────┴─────────┘



    Раскрыть
    titleВ случае использования файловой лицензии

    Никаких дополнительных действий выполнять не требуется.

  14. Обновление пакета ecss-restfs:
    Блок кода
    titleна ecss1
    sudo apt install ecss-restfs
  15. Обновление пакета ecss-media-server:
    Блок кода
    titleна ecss1
    sudo apt install ecss-media-server
    Актуализировать конфигурацию:
    Блок кода
    titleна ecss1
    sudo dpkg-reconfigure ecss-media-server
    Проверить и при необходимости исправить файл: /etc/ecss/ecss-media-server/config.xml
    Раскрыть
    titleпример
    Без форматирования
    titleна 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>


  16. Обновление пакета ecss-media-resources:
    Блок кода
    titleна ecss1
    sudo apt install ecss-media-resources
  17. Обновление пакета ecss-web-conf:
    Блок кода
    titleна ecss1
    sudo apt install ecss-web-conf
  18. Раскрыть
    titleОбновление пакетов опциональных сервисов

    Проверить список установленных сервисов командой:

    Блок кода
    titleна ecss1
    sudo dpkg -l | grep ecss
    Без форматирования
    titleПример:
    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

    Блок кода
    titleна ecss1
    sudo apt install ecss-teleconference-ui

    Обновление пакета ecss-cc-ui

    Блок кода
    titleна ecss1
    sudo apt install ecss-cc-ui

    Обновление пакета ecss-peeper-client

    Блок кода
    titleна ecss1
    sudo apt install ecss-peeper-client
  19. Раскрыть
    titleВ случае использования ELM-лицензирования
    Удалить больше не используемый пакет ecss-elm-adapter командой:
    Блок кода
    titleна ecss1
    sudo apt purge ecss-elm-adapter

    Раскрыть
    titleВ случае использования файловой лицензии

    Никаких дополнительных действий выполнять не требуется.


7 Проверка обновления

  1. После выполнения обновления проверить работу всех сервисов SSW.