Варианты выполнения обновления

Использование одиночного сервера для SSW не предусматривает резервирования. Поэтому выполнить обновление на новую версию без прерывания трафика не представляется возможным.
Обновление можно выполнить двумя способами. 
Первый вариант – остановить трафик и на рабочем SSW выполнить обновление PostgreSQL и обновление всех пакетов ecss, а затем активировать сервис и запустить трафик. Преимущество такого варианта – простая процедура обновления. Недостаток – более продолжительное время прерывания трафика.
Процедура выполнения первого варианта обновления.

Второй вариант – на отдельном хосте (физическом или виртуальном) выполнить полную новую установку ОС и затем установку SSW с использованием временных IP адресов. Во время установки также потребуется выполнить копирование баз данных (Mnesia +PostgreSQL) со старого хоста на новый. По окончании установки нового SSW выполняется замена временных IP адресов на адреса старого SSW ( в этот момент старый SSW отключается) и конфигурация файлов MSR. После этого новый SSW начинает обслуживать трафик. Преимущество такого варианта – минимальное время прерывания трафика. Недостаток – более сложная и длительная процедура обновления.
Процедура выполнения второго варианта обновления.

Выберите подходящий вариант.


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

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

выполняется в CoCon

/cluster/storage/ds1/licence/list-licence 
CODE

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

файловая лицензия

/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 │224d 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




Внимание

Перед выполнением процедуры обновления – выполнить полный «бэкап» (см. «Регламентное обслуживание и резервное копирование»).

Если нужны последние данные биллинга, то необходимо финализировать текущую cdr и скачать cdr-файлы на удаленный сервер:

/domain/test_domain/cdr/make_finalize_cdr 
Created file(s): cdr_20260522_11_51_16_1_c.csv

Первый вариант

  1. Внимание

    Выполнить полный «бэкап» (см. «Регламентное обслуживание и резервное копирование»).
  2. Необходимо замаскировать все ноды на сервере, отключите автозапуск нод:

    на ecss1

    sudo systemctl mask --now ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm
    CODE

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

    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.

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

  3. Актуализировать репозиторий ssw:

    на ecss1

    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
  4. Выполнить обновление пакетов:

    на ecss1

    sudo apt update
    CODE

    Если вы видите такое сообщение системы:

    W: http://archive.eltex.org/ssw/jammy/3.18/dists/unstable/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

    Выполните следующую команду:

    на обоих хостах

    sudo cp /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d
    CODE
  5. Обновление PostgreSQL:
    1. Выключить docker-контейнер:

      на ecss2

      sudo docker compose -f /srv/ecss/ecss-postgres-bdr-ssw/docker-compose.container.yml down
      CODE

      Пример:
      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 
    2. Удалить старый deb-пакет, т. к. опция upgrade не поддержана:

      на ecss2

      sudo apt remove ecss-postgres-bdr-ssw
      CODE

      !!Важно!!

      Выполнить именно 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) …
    3. Установить новый deb-пакет:

      на ecss2

      sudo apt install ecss-postgres-bdr-ssw 
      CODE

      !!Важно!!

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

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

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


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

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


      При успешной установке на этапе поднятия репликации увидим:

      sudo apt install ecss-postgres-bdr-ssw
      . . .
      ==================
       Create databases 
      ==================
      Database ecss_storekeeper_db already exists, skipping...
      Database web_conf already exists, skipping...
      Extension btree_gist already exists, skipping...
      Extension bdr already exists, skipping...
      
      ===================================
       Creating Postgres Exporter Schema 
      ===================================
      Node IP: localhost
      psql:/srv/ecss/ecss-postgres-bdr-ssw/schema.sql:1: NOTICE:  schema "postgres_exporter" already exists, skipping
      CREATE SCHEMA
      GRANT
      CREATE FUNCTION
      CREATE VIEW
      GRANT
      CREATE FUNCTION
      CREATE VIEW
      GRANT
      psql:/srv/ecss/ecss-postgres-bdr-ssw/schema.sql:28: NOTICE:  extension "pg_stat_statements" already exists, skipping
      CREATE EXTENSION
      CREATE FUNCTION
      CREATE VIEW
      GRANT
      . . .
      =======================================================
      =======================================================
       ecss-postgres-bdr-ssw successfully installed/updated! 
      =======================================================
      =======================================================
      
      
      ┏┓┏┓┏┓┏┳┓┏┓┳┓┏┓┏┓  ┳┓┳┓┳┓  ┏┓┏┓┓ ┏
      ┃┃┃┃┗┓ ┃ ┃┓┣┫┣ ┗┓  ┣┫┃┃┣┫  ┗┓┗┓┃┃┃
      ┣┛┗┛┗┛ ┻ ┗┛┛┗┗┛┗┛  ┻┛┻┛┛┗  ┗┛┗┛┗┻┛
      CODE
    4. После установки проверить, что подтянулся новый image и стартовал docker, выполнить команду:

      на ecss2

      sudo docker ps
      CODE

      Пример:

      sudo docker ps
      CONTAINER ID   IMAGE                                           COMMAND                  CREATED              STATUS              PORTS                                         NAMES
      bf73743d3e09   git.eltex.loc:4567/ecss/ecss-postgresbdr:3.18   "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:5439->5432/tcp, [::]:5439->5432/tcp   ecss-postgres-bdr-ssw-postgres-container-1
      CODE
  6. Обновление пакета ecss-dns-env:

    на ecss1

    sudo apt install ecss-dns-env
    CODE

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

    на ecss1

    sudo dpkg-reconfigure ecss-dns-env
    CODE
  7. Выполните обновление пакета ecss-user:

    При обновлении нужно применить новые конфигурационные файлы (подтверждением -Y).


    на ecss1

    sudo apt install ecss-user
    CODE
  8. Выполните обновление пакета ecss-utils:

    на ecss1

    sudo apt install ecss-utils
    CODE
  9. Установить пакет License Provider:

    на ecss2

    sudo apt install ecss-license-provider
    CODE

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

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

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

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

    Порт для соединения c 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-серверу, откуда брать лицензии, какие лицензии, и куда их потом передавать, все это нужно сконфигурировать вручную.

    информация в файле после установки

    elm_addresses: []
    licenses: []
    ecss_nodes: []
    CODE
    Для заполнения данных полей откройте файл конфигурации ecss-elm-adapter используемого в версии 3.17 /etc/ecss/ecss-elm-adapter/config.env:

    на ecss2

    сat /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
    CODE

    В поле elm_adresses нужно прописать список серверов ELM, к которым мы хотим подключаться для получения лицензий. Первый адрес в списке используется как основной. Дополнительные строки с адресами работают как резерв.
    пример:
    - "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]

    Пример: файла config.yaml на основе данных из файла /etc/ecss/ecss-elm-adapter/config.env

    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
    CODE

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

    если кластер, то на обоих хостах

    sudo systemctl restart ecss-license-provider.service
    CODE
  10. Выполните обновление пакета ecss-node:

    на ecss1

    sudo apt install ecss-node
    CODE

    Во время установки будет предложено настроить параметры, необходимые для формирования конфигурационных файлов, примеры ответов следует ниже.

    Вопросы ecss-nodeОтветы для ecss1Пример

    Cookie для ноды core:

    ecss-core (значение по умолчанию)

    Рекомендуется заменить на уникальное значение

     


    Cookie для ноды ds: 

    ecss-ds (значение по умолчанию)

    Рекомендуется заменить на уникальное значение

     


    Cookie для ноды mediator:

    ecss-mediator (значение по умолчанию)

    Рекомендуется заменить на уникальное значение

     


    Cookie для ноды pa-sip:

    ecss-pa-sip (значение по умолчанию)

    Рекомендуется заменить на уникальное значение

     


    Cookie для ноды mycelium:

    ecss-mycelium (значение по умолчанию)

    Рекомендуется заменить на уникальное значение

     


    Cookie для ноды sorm:

    ecss-sorm (значение по умолчанию)

    Рекомендуется заменить на уникальное значение

     


    Использовать текущую версию файла настройки?

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


    При обновлении нужно применить новые конфигурационные файлы (подтверждением -Y).

     

  11. Включите ноды.
    Включить сервисы ssw следующими командами: 

    на ecss1

    sudo systemctl unmask ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm
    CODE

    на ecss1

    sudo systemctl enable ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm
    CODE
  12. Запуск SSW на ecss1. Запустите следующие сервисы:
    ecss-mycelium

    на ecss1

    sudo systemctl start ecss-mycelium
    CODE
    ecss-ds

    на ecss1

    sudo systemctl start ecss-ds
    CODE
    ecss-core

    на ecss1

    sudo systemctl start ecss-core
    CODE
    ecss-mediator

    на ecss1

    sudo systemctl start ecss-mediator
    CODE

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

    на ecss1

    sudo systemctl start ecss-sorm
    CODE




    Пока не следует запускать PA-SIP!

  13. Проверьте статус сервисов, для этого выполните в CoCon команду system-status:
    выполняется в CoCon
    /system-status 
    Checking...
    ┌─┬───────────────┬────────────────────────┬───────────────┬────────────┬──────┐
    │ │     Node      │        Release         │ Erlang nodes  │Mnesia nodes│Uptime│
    ├─┼───────────────┼────────────────────────┼───────────────┼────────────┼──────┤
    │ │core1@ecss1    │ecss-core-3.18.0.271    │core1@ecss1    │not running │14m 4s│
    │ │ds1@ecss1      │ecss-ds-3.18.0.271      │ds1@ecss1      │ds1@ecss1   │14m 4s│
    │ │md1@ecss1      │ecss-mediator-3.18.0.271│md1@ecss1      │md1@ecss1   │14m 4s│
    │ │mycelium1@ecss1│ecss-mycelium-3.18.0.271│mycelium1@ecss1│not running │14m 4s│
    │ │sorm1@ecss1    │ecss-sorm-3.18.0.271    │sorm1@ecss1    │not running │14m 5s│
    └─┴───────────────┴────────────────────────┴───────────────┴────────────┴──────┘
    
    All services are started.
    
      Active media resource selected list specific:
    ┌─────────────┬───────────┬────────────┬───────────┬───────────┐
    │    Node     │    MSR    │    MSR     │ Cc-status │ Cc-uptime │
    │             │           │  version   │           │           │
    ├─────────────┼───────────┼────────────┼───────────┼───────────┤
    │ core1@ecss1 │ msr.ecss1 │ 3.17.1.1.7 │ connected │ 00:43:03  │
    └─────────────┴───────────┴────────────┴───────────┴───────────┘
  14. Режимы лицензирования.

    В случае использования файлового лицензирования

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

    /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 softswitch                         │31.12.2026 23:59:59 │224d 21h 31m│
    │0 │                   │ECSS DEFAULT    │      │Default licence                             │                    │            │
    └──┴───────────────────┴────────────────┴──────┴────────────────────────────────────────────┴────────────────────┴────────────┘
  15. Выполнить конфигурацию подключения SSW к License Provider следующей командой в CoCon, (в примере License Provider установлен на хосте ecss1, IPadd хостов 10.0.10.41. Значение порта из файла /etc/ecss/ecss-license-provider/config.env по умолчанию 4321):

    выполняется в CoCon

    /system/licence/manager/set --hosts [https://10.0.10.41:4321]
    CODE

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

    выполняется в CoCon

    /system/licence/manager/show-status
    ┌───────────────────────┬───────┬─────┐
    │         Host          │Current│Alive│
    ├───────────────────────┼───────┼─────┤
    │https://10.0.10.41:4321│*      │true │
    └───────────────────────┴───────┴─────┘
    CODE

    Хост должен иметь статус alive=true. И быть «current». 

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

    Подключение к License Manager

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

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

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

    выполняется в CoCon

    /cluster/storage/ds1/licence/request
    CODE

    type=elm

    /cluster/storage/ds1/licence/request      
    Licence received      
    [*******                                                               ] 6s 2ms   
    Success: Licence parameters applied
    CODE

    type=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 │14.04.2026 11:18:34│ECSS2000000 │*     │ECSS ELM License│09.04.2027 16:26:34 │06.06.2026 10:49:12 │1d 6h 59m│
    │0 │01.01.1990 00:00:00│ECSS DEFAULT│      │Default licence │                    │                    │         │
    └──┴───────────────────┴────────────┴──────┴────────────────┴────────────────────┴────────────────────┴─────────┘
    CODE


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

    на ecss1

    sudo apt install ecss-restfs
    CODE
  17. Обновление пакета ecss-media-server.

    Media Server анализирует конфигурацию в файлах находящихся в директории /etc/ecss/ecss-media-server/. В версии 3.17 реализована новая функция контроля приоритетности кодеков. Если по какой то причине в нескольких файлах присутствует секция "codec", в которой несколько раз прописывается один и тот же кодек, то после обновления возникнет конфликт, и Media Server работать не будет.

    Поэтому в конфигурационных файлах одного Media Server не должно быть конфликтов по приоритетам кодеков (запись об одном кодеке должна быть одна и не повторяться в других файлах). Решение, на какие именно фалы требуется сконфигурировать, остается на усмотрение администратора системы.

    Выполните обновление:

    Принять все новые конфигурационные файлы, выбирая  Y.


    на ecss1

    sudo apt install ecss-media-server
    CODE
    Актуализируйте конфигурацию:

    на ecss1

    sudo dpkg-reconfigure ecss-media-server
    CODE
  18. Обновление пакета ecss-media-resources:

    на ecss1

    sudo apt install ecss-media-resources
    CODE
  19. Обновление пакета ecss-web-conf

    на ecss1

    sudo apt install ecss-web-conf
    CODE
  20. Обновление пакета ecss-teleconference-ui

    на ecss1

    sudo apt install ecss-teleconference-ui
    CODE

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

    на ecss1

    sudo apt install ecss-crm-server
    CODE

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

    на ecss1

    sudo apt install ecss-cc-ui
    CODE

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

    на ecss1

    sudo apt install ecss-call-api
    CODE

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

    на ecss1

    sudo apt install ecss-peeper-client
    CODE
  21. Запустите  ecss-pa-sip :

    на ecss1

    sudo systemctl start ecss-pa-sip
    CODE
    Проверьте статус сервисов командой /system-status :

    выполняется в CoCon

    /system-status 
    Checking...
    ┌─┬───────────────┬────────────────────────┬───────────────┬────────────┬───────┐
    │ │     Node      │        Release         │ Erlang nodes  │Mnesia nodes│Uptime │
    ├─┼───────────────┼────────────────────────┼───────────────┼────────────┼───────┤
    │ │core1@ecss1    │ecss-core-3.18.0.271    │core1@ecss1    │not running │54m 27s│
    │ │ds1@ecss1      │ecss-ds-3.18.0.271      │ds1@ecss1      │ds1@ecss1   │54m 27s│
    │ │md1@ecss1      │ecss-mediator-3.18.0.271│md1@ecss1      │md1@ecss1   │54m 27s│
    │ │mycelium1@ecss1│ecss-mycelium-3.18.0.271│mycelium1@ecss1│not running │54m 27s│
    │ │sip1@ecss1     │ecss-pa-sip-3.18.0.271  │sip1@ecss1     │sip1@ecss1  │54m 27s│
    │ │sorm1@ecss1    │ecss-sorm-3.18.0.271    │sorm1@ecss1    │not running │54m 27s│
    └─┴───────────────┴────────────────────────┴───────────────┴────────────┴───────┘
    
    All services are started.
    
      Active media resource selected list specific:
    ┌─────────────┬───────────┬──────────┬───────────┬───────────┐
    │    Node     │    MSR    │   MSR    │ Cc-status │ Cc-uptime │
    │             │           │ version  │           │           │
    ├─────────────┼───────────┼──────────┼───────────┼───────────┤
    │ core1@ecss1 │ msr.ecss1 │ 3.18.0.7 │ connected │ 00:01:17  │
    └─────────────┴───────────┴──────────┴───────────┴───────────┘
    CODE
    Выполните проверку переезда активных регистраций на обновленный хост. Для этого выполните контроль зарегистрированных абонентов на  SSW. Выполните команду в CoCon:

    выполняется в CoCon

    /domain/test_domain/sip/user/registered sip *            
    450 make users list ...
    [**********************************************************************] 28mks    
    450 users information read ...
    [**********************************************************************] 1ms      
    Executed on the sip1@ecss1
    ┌───────────────┐
    │ elements: 436 │
    └───────────────┘
    CODE
  22. После выполнения обновления проверьте работу всех сервисов SSW.

Второй вариант

Исходные данные
На момент установки использовать временные IP адреса (в примере 10.0.10.51/10.0.20.51). На последних шагах временные адреса будут заменены на реальные IP адреса SSW версии 3.17 (в примере 10.0.10.41/10.0.20.41).

Исходные данные
В данном разделе использованы специфичные для данного продукта термины, ознакомиться с ними можно здесь.

Требуется интеграция программного коммутатора 5 класса ECSS-10 (SSW) на 1 физическом сервере с поддержкой SIP со следующими параметрами на нагрузку:

  • Максимальное количество абонентов – 15000 (MUL — Max user limit);
  • Максимальное количество одновременных соединений — 2000 (MCL — Max call limit);
  • Резервирование системы не требуется;
  • Количество сетевых интерфейсов ethernet — 4.

По техническому заданию требуется определить аппаратную платформу.

Актуальная информация с требованиями к серверам, которые должны использоваться для работы комплекса ECSS-10.

Требования к серверам SSWСерия Light+Серия MidiСерия HeavyСерия Супер HeavyСерия Top (1)
1Характеристики системы




1.1Максимальное количество абонентов5000100002000040000-
1.2Максимальная нагрузка одновременных соединений class 5800150030006000-
1.3Максимальная нагрузка одновременных соединений class 42400450090002000080000
2Характеристики сервера




2.1МаркаHP (Lenovo)HP (Lenovo)HP (Lenovo)HP (Lenovo)HP /Lenovo /Depo
2.2СерияDL20 Gen10/DL 360 Gen10 (SR530)DL360 Gen10 (SR530/SR630)DL360 Gen10 (SR630)DL360 Gen10 (SR630)DL360 Gen10 /SR650 V2 /Storm 3450
2.3ПроцессорIntel Xeon 4214Intel Xeon 5220Intel Xeon 6240Intel Xeon 8268Intel Xeon 8380
2.4Количество процессоров11222
2.5Оперативная память16 Gb24 Gb32 Gb64 Gb1024 Gb
2.6HDDОт 3X500 SATA (от 7200 rpm)От 3x300 Gb SAS (от 10000 rpm)От 3x600 Gb SAS (от 10000 rpm) 2x150Gb SSDОт 6x800 Gb SSD, 2x300Gb M.2 SSDОт 6x1.2 Tb SSD, 2x300Gb M.2 SSD
2.7RAIDno raid boardHW Raid, от 1Gb cache+batteryHW Raid, от 1Gb cache+batteryHW Raid, от 2Gb Flash cache, поддержка RAID-5HW Raid, от 2Gb Flash cache, поддержка RAID-5
3Дополнительные комплектующие сервера (в базовый комплект не входят)




3.1Лицензия на удалённое управлениепо желанию++++
3.2Резервный источник питанияпо желанию++++
3.3Организация хранилища записей разговоровДополнительные HDD, объединенные в RAID-5Лицензия на HW Raid с поддержкой RAID-5,
дополнительные HDD для хранения записей
Лицензия на HW Raid с поддержкой RAID-5,
дополнительные HDD для хранения записей
Лицензия на HW Raid с поддержкой RAID-5,
дополнительные HDD для хранения записей
Лицензия на HW Raid с поддержкой RAID-5,
дополнительные HDD для хранения записей

Полоса пропускания СПД

Требуемая полоса пропускания СПД  не менее 1000Mb/s

Минимальные требования при установке ECSS-10 на виртуальные машины*

Требования к серверам SSWУровень Light (2)(3)Уровень Light+Уровень MidiУровень HeavyУровень Супер HeavyУровень Top (1)
1Характеристики системы





1.1Максимальное количество абонентов10005000100002000040000-
1.2Максимальная нагрузка одновременных соединений class 5250800150030006000-
1.3Максимальная нагрузка одновременных соединений class 41000450090002000080000-
2Характеристики сервера





2.4Количество ядер/потоков (vCore)12С/24T18С/36T36С/72T48С/96T80С/160T и более
2.5Частота процессораот 2.4 Ghzот 3 Ghzот 3Ghzот 3.6 Ghzот 3.4 Ghzот 3.2 Ghz
2.6Оперативная память8 Gb16 Gb24 Gb32 Gbот 64 Gbот 512 Gb
2.7HDDОт 50 GB, 75 IOPSОт 500 GB SATA (от 7200 rpm, от 75 IOPS)От 500 Gb SAS (от 10000 rpm, 170 IOPS)От 500 Gb SAS (от 10000 rpm, 170 IOPS) и 150Gb SSDот 800 Gb SSD и 300Gb M.2 SSDОт 1.2 Tb SSD и 300Gb M.2 SSD

C - core, они же ядра

T - thread = поток, vCore

(1) — серия Top на текущий момент рассчитана для реализации контроллера транковых шлюзов (работа по 4 классу).
(2) — уровень Light применяется только для расчета виртуальных машин, для физических серверов минимальная рекомендуемая конфигурация — Light+.
(3) — уровень Light является минимальным рекомендуемым. При запросе расчета ВМ для малого числа абонентов (до 1000: 100, 200...) используем его.

*Если на системе планируется использование таких сервисов как КЦ, запись разговоров, видео-вызовы, то необходимо согласовать требования с технической поддержкой

Устройство

Требуемый ресурс

Серия аппаратного продукта

MCL

MUL

Сервер 1

2500

15000

Heavy

После определения по требованиям проекта составляем предварительную сетевую карту.

Пример разнесения составляющих по адресному пространству для одной ноды:

Имя сервера (хоста)

Роль

Интерфейс

Адрес

Адрес вашего проекта

Порт

Статические адреса программного коммутатора

ecss1

Адрес сервера

net.10 (mgm)

10.0.10.51/24


-

ecss1

Адрес протокольного адаптера

net.20 (voip)

10.0.20.51/24


-

ecss1

Адрес шлюза

net.10 (mgm)

10.0.10.1
-

ecss1

Адреса DNS-серверов

net.10 (mgm)

10.0.10.1, 8.8.8.8
-

Внутренние адреса программного коммутатора

ecss1

Адрес ядра (ecss-core)

lo

127.0.0.1/24


5000

ecss1

Адрес медиасервера (ecss-media-server (MSR))

lo

127.0.0.1/24


5040



Включение в сеть

Топологию включения сервера в сеть для обеспечения резервирования рекомендуется делать с использованием 2-х коммутаторов.

Рисунок 1 — Схема организации связи

Вариант 1. Схема active-backup

Коммутаторы связаны между собой в erps-кольцо.

Все 4 физических сетевых интерфейса объединяются в 1 агрегированный линк (bond). Агрегация портов сервера настраивается в режиме active-backup, т.е. в работе всегда находится только 1 сетевой интерфейс. Сетевые интерфейсы сервера попарно включены в коммутаторы, на которых агрегация портов (port-channel) также настраивается в режиме active-backup.

Например, eth1 и eth2 включаются в первый коммутатор, а eth3 и eth4 — во второй.


Вариант 2. Схема LACP

Коммутаторы связаны между собой в стек. Стек должен логически работать как один коммутатор, способный обеспечивать агрегацию портов в режиме LACP между разными физическими коммутаторами. Пример — коммутаторы MES3124 со специализированной прошивкой.

Все 4 физических сетевых интерфейса также объединяются в 1 агрегированный линк (bond). Агрегация портов сервера настраивается в режиме 802.3ad. Создаются агрегированные группы сетевых карт с одинаковой скоростью и дуплексом. При таком объединении передача задействует все каналы в активной агрегации согласно стандарту IEEE 802.3ad. Выбор, через какой интерфейс отправлять пакет, определяется политикой. По умолчанию это XOR-политика, можно использовать «xmit_hash» политику. Подробнее в разделе Приложение Е. Netplan.

Требования:

  • Поддержка Ethtool в драйвере для получения информации о скорости и дуплексе на каждом сетевом интерфейсе;
  • Поддержка на коммутаторе стандарта IEEE 802.3ad;

Сетевые интерфейсы сервера также попарно включены в коммутаторы, на которых агрегация портов (port-channel) настраивается в режиме LACP. Например, eth1 и eth2 включаются в первый коммутатор (port-channel 1), а eth3 и eth4 — во второй (port-channel 2).

Установка ОС

Установка SSW ECSS10 состоит из 2-х основных частей :

  • Подготовительной  -  Установка ОС Ubuntu 22.04, обновлений пакетов OC Ubuntu , "оптимизация" ОС, установка дополнительных пакетов программ, подготовка сетевых интерфейсов,  /etc/hosts, ssh-keygen

  • Установка приложений Eltex ECSS10

Подготовительный этап

В этом разделе приведено описание инсталляции операционной системы, а также необходимых и дополнительных пакетов. Система ECSS-10 версии 3.17 работает под управлением ОС  Ubuntu 22.04.

Предварительные требования

  • Установочный загрузочный носитель с дистрибутивом операционной системы;
  • Подготовленный сервер с обновленным BIOS, ILO (если есть), подключенная сеть для доступа в сеть Интернет;
  • Выставленный первый приоритет загрузки с установочного носителя — USB Flash или CD/DVD в BIOS;
  • Достаточный объем дискового пространства и памяти в соответствии с проектом.

Установка ОС

Для установки ОС необходимо выполнить следующее:

  • После загрузки с установочного носителя выбрать "Install Ubuntu Server".
  • Выбрать язык системы и раскладку клавиатуры.
  • Настроить сетевой интерфейс для подключения к сети Интернет:

  • Создать партиции на диске в соответствии с таблицей 1
  • Настроить имена сервера и пользователя
  • Установить OpenSSH server
  • Перезагрузить успешно установленную ОС

Выбираем язык интерфейса

Продолжить без обновления

Выбираем раскладку клавиатуры

Выбираем переключатель раскладок Рус/Eng

Выбираем стандартную установку Ubuntu Сервер


Выбираем Eht: интерфейс для установки Ubuntu (должен будет иметь доступ в интернет)

Установить IP-адрес для доступа в интернет(DHCP использовать нельзя)

Прокси-сервер не используем(если в вашем проекте применяется то укажите)

Значение по умолчанию 

Создаем партиции на диске , используем  LVM

По умолчанию созданы две партиции /boot и / ,  /boot оставляем  , а / - удаляем. Вначале  размонтировать

Затем удалить.

Подтвердить

Оставить только /boot

Создать партиции в соответствии с размерностью указанной в таблице ниже

 root размер 30 Гб , точка монтирования /

 mnesia размер 30 Гб, точка монтирования /var/lib/ecss

 log размер 20 Гб, точка монтирования /var/log

mysql, размер 30G, точка монтирования - /var/lib/mysql

 ecss_log, размер 20 Гб , точка монтирования  /var/log/ecss

ecss_db, размер 100 Гб , точка монтирования -  /var/lib/ecss-mysql

home, размер 10 Гб, точка монтирования  -  /home

glusterfs - для кластера / для одного хоста  - restfs , размер - все оставшееся место на диске, точка монтирования - /var/lib/ecss/glusterfs - для кластера , и   /var/lib/ecss/restfs - для одного сервера

полученная  конфигурация

Подтвердить

Создать пользователя  и имя хоста, в ECSS10 рекомендуемое имя хоста  ecss1/ecss2 (используется при интеграции лицензий ), имя пользователя (в  примере abf / пароль на ваше усмотрение  )

При установки выбираем Free установку:

При инсталляции Ubuntu Linux,  ставим openSSH,  для  удаленного управления

Подтвердить

Ждем появления сообщения - Перезагрузить сейчас

Извлекаем инсталляционный диск/флешку  и  Enter

 Ubuntu Linux Server  установлен




Таблица 1 — Вариант размещения информации в файловой системе на физических носителях для серверов

1Загрузочный раздел операционной системы (создается автоматически)bootraid 1:hdd1,hdd2boot/bootext41 GbПервичный
2Корневой раздел операционной системыrootraid 1:hdd1,hdd2root/ext430 GbЛогический
3Информация локальных баз данныхmnesiaraid 1:hdd1, hdd2mnesia/var/lib/ecssext410 GbЛогический
4Распределенная БД для хранения медиаресурсовglusterfsraid 1:hdd1, hdd2 или hdd3glusterfs/var/lib/ecss/restfsext4Max GbЛогический
5Журналы функционирования подсистем ОСlograid 1:hdd1,hdd2 или hdd3log/var/logext420 GbЛогический
6Журналы функционирования подсистем ECSSecss_lograid 1:hdd1,hdd2 или hdd3ecss_log/var/log/ecssext420 GbЛогический
7Базы данныхecss_dbraid 1:hdd1,hdd2 или hdd3ecss_db/srv/ecss/ecss-postgres-bdr-ssw/ext4100–400 Gb*Логический
8Файлы пользователяhomeraid 1:hdd1,hdd2 или hdd3home/homeext410 GbЛогический


* Рекомендуемое значение для серий Light, Light+, Midi — 100 Gb. Рекомендуемое значение для серии Heavy — 200 Gb,  Super Heavy — 400 Gb.

Для работы системы необходимо как минимум 256 Gb свободного пространства.

На серверах системы необходимо настроить параметр "hostname".

На всех серверах системы желательно указать одинаковое имя пользователя (любое, кроме ssw). Лицензия ECSS-10 привязывается к ключу eToken/ruToken и к имени компьютера (hostname). Системный пользователь ssw создается при инсталляции пакета ecss-user.

Если используется один сервер, рекомендуемое значение hostname — ecss1;


Настройка сети

Согласно параметрам, заданным в техническом задании, выполним сетевые настройки. В данном примере считается, что необходимая операционная система уже установлена. 

Рекомендуется разделять трафик, используемый в разных целях. Например, трафик управления и трафик VoIP. Для этого создаются 2 или более vlan. При небольшой нагрузке для простоты можно обойтись и одним vlan, но это будет в будущем доставлять неудобства при снятии дампов трафика и его анализе. В соответствии с техническим заданием на vlan настраиваются IP-адреса самого хоста, шлюзы, DNS и маршрутизация в другие сети.

В данном примере согласно ТЗ будем использовать адреса:

  • 10.0.10.51/24 — для управления, vlan 10;
  • 10.0.20.51/24 — для VoIP.

Внутри серверной платформы существует адресная структура и используются внутренние адреса для взаимодействия между подсистемами (нодами) в кластере. Например, внутренний адрес для кластера на одном сервере 127.0.0.1, при этом ядро (ecss-core) взаимодействует с сервером обработки мультимедиа-данных (ecss-media-server). Их взаимодействие происходит с использованием одного и того же адреса, но у каждой программной части свой транспортный порт: ecss-core — 5000, ecss-msr — 5040.

Для всех нод кластера определяется единый адрес для обращения к базе данных, например адрес 127.0.0.1. Таким образом, выполняется условие единообразия, при котором все ноды кластера имеют полностью одинаковые данные о текущем состоянии динамических составляющих программного коммутатора (например, история вызовов).

Подготовка сетевых интерфейсов системы

Согласно ТЗ, система имеет 4 сетевых интерфейса. Информацию об их состоянии можно посмотреть с помощью команды ifconfig или ip a:

eth0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 36:10:28:73:63:01 txqueuelen 1000 (Ethernet)

eth1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 36:10:28:73:63:01 txqueuelen 1000 (Ethernet)

eth2: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether be:77:ea:52:4d:39 txqueuelen 1000 (Ethernet)

eth3: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether be:77:ea:52:4d:39 txqueuelen 1000 (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0

Сначала настраиваются сетевые интерфейсы. В Ubuntu 22 для их настройки используется утилита netplan.

Данная утилита позволяет настроить сетевую конфигурацию и затем загрузить ее в систему с помощью сетевого менеджера networkd или NetworkManager.

sudo nano /etc/netplan/ecss_netplan.yaml
BASH

Все остальные файлы из этого каталога необходимо переместить в другое место или удалить.

В конфигурациях для каждого хоста в первую очередь мы объявляем секцию ethernets, в которой описываются существующие в системе ethernet-интерфейсы, используемые в дальнейшем. Для каждого интерфейса необходимо отключить использование динамического распределения адресов (DHCP). 

Далее настраиваются vlan, на которых опционально определяются шлюзы для связи с внешним миром и адреса DNS-серверов, а также непосредственно IP-адреса для каждого интерфейса.

ВАЖНО

Обратите внимание, что во время редактирования netplan необходимо соблюдать правила разметки YAML:

  • Обязательное наличие минимум двух пробелов перед каждой строкой (кроме network);
  • Каждая подсекция дополнительно сдвигается на 2 пробела:

→  Секция                                                                   |network

→  Подсекция                                                             |_'_'bonds:

→  Подсекция описания секции bonds                    |_'_'_'_'bonded_one:

→  и т.д.                                                                       |_'_'_'_'...

  • Перед знаком ":" нет пробела, после — один пробел;
  • Перед знаком "-" количество пробелов такое, как будто начинается новый подраздел, после — один пробел.

Пример настройки файла ecss_netplan.yaml для варианта включения active-backup

# Netplan для хоста ecss1 программного коммутатора
# Обратите внимание на обязательное наличие минимум двух пробелов в каждой строке и секции (кроме строки секции network)

network:
  version: 2 # Версия netplan
  renderer: networkd # Исполнитель конфигураций netplan
  ethernets: # Раздел описания интерфейсов ethernet
    enp0s3: # Название интерфейса ВМ к интернет
        dhcp4: no # Отключаем на интерфейсах динамическое распределение IP-адреса
        dhcp6: no
        addresses: [192.168.56.51/24]
    enp0s8: # Название интерфейса для SSW
        dhcp4: no # Отключаем на интерфейсах динамическое распределение IP-адреса
        dhcp6: no
  vlans:
    net.10: # Интерфейс управления
        id: 10
        link: enp0s3
        addresses: [10.0.10.51/24]
    net.20: # Интерфейс для VoIP
        id: 20
        link: enp0s8
        addresses: [10.0.20.51/24]

Следующие настройки bonds обязательны для сервера ECSS, чтобы схема работала верно:

mode: active-backup - задаёт режим работы, когда один из линков выбирается активным, а остальные остаются в резерве;
primary-reselect-policy: failure - указывает, что выбирать новый активный линк следует только тогда, когда текущий активный линк переходит в состоянии аварии. Это позволяет избежать лишних переключений;
gratuitous-arp: 5 - при смене активного линка в сторону коммутатора отправляются пять запросов gratuitous ARP, чтобы обновить на нём таблицу коммутации. Способствует более быстрому переключению;
all-slaves-active: true - заставляет принимать входящие кадры на backup интерфейсах. Таким образом балансировка трафика на MESе не мешает работе. Данные в сторону сервера идут со всех линков, а сервер отправляет данные только с active линка;
mii-monitor-interval: 100 - активирует мониторинг линков через интерфейс MII и указывает интервал опроса в 100мс;
up-delay: 1000 - указывает считать поднявшийся интерфейс доступным для работы не сразу, а сделать задержку в одну секунду после того, как интерфейс поднялся. Необходимо для того, чтобы избежать лишних переключений в случае, когда порт «прыгает» несколько раз из состояния «включено» в состояние «выключено» и обратно.

Также рекомендуется проверить отсутствие в каталоге /etc/netplan/ еще каких либо файлов, если  другие файлы присутствуют , то их нужно переместить в другой каталог или удалить, в противном случае возможна некорректная настройка сетевых интерфейсов и некорректная работа SSW. 

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

sudo netplan apply
BASH

На серверах системы необходимо настроить параметр "hostname".

На всех серверах системы желательно указать одинаковое имя пользователя (любое, кроме ssw). Лицензия ECSS-10 привязывается к ключу eToken/ruToken и к имени компьютера (hostname), поэтому необходимо использовать стандартные значения. Системный пользователь ssw создается при инсталляции пакета ecss-user.

Если используется один сервер, рекомендуемое значение hostname — ecss1;
Другие имена хостов возможны только при согласовании проекта, это потребуется для генерации лицензий. 

Указать имя хоста: ecss1 в файле /etc/hostname:

sudo nano /etc/hostname 
CODE

Указать  реальный Ipadd и имя хоста используемое в настоящий момент (для примера 10.0.10.51 ecss1) в файле /etc/hosts:

127.0.0.1   localhost # Адрес локальной петли, используется некоторыми сервисами ecss
10.0.10.51  ecss1 # Адрес хоста
CODE

"Оптимизация" операционной системы

Выставить параметры ОС в режим производительности

Используем  утилиту cpufrequtils.

sudo apt install cpufrequtils
BASH

по умолчанию после установки Ubuntu используется режим "ondemand" - "по запросу" (производительность CPU по запросу приложений, экономит электроэнергию, но снижает производительность):

cat /etc/init.d/cpufrequtils | grep GOVERNOR=
CODE

в выходном сообщении системы режим работы по умолчанию после установки - "ondemand" :

GOVERNOR="ondemand"

Установить режим результативности/производительности  -  в файле /etc/init.d/cpufrequtils значение "ondemand" заменить на "performance"

sudo sed -i 's/GOVERNOR="ondemand"/GOVERNOR="performance"/g' /etc/init.d/cpufrequtils
BASH

Перезапустить утилиту:

sudo /etc/init.d/cpufrequtils restart 
BASH

Затем выполнить команду:

sudo systemctl daemon-reload
BASH

Отключить SWAP

Ubuntu сервер SSW работает в реальном масштабе времени , поэтому все необходимые данные должны находится в оперативной памяти, использование  файла подкачки (swap-файл - /swap. img) может привести к увеличению времени обработки вызовов приложения SSW ECSS10 , что недопустимо. Swap - отключаем. 
Выполнить последовательно три команды:

Отключение Swap:

sudo swapoff -a
BASH

Удалить файл swap.img.

sudo rm /swap.img
BASH

Закомментировать строку - /swap.img none swap sw 0 0 -   в файле /etc/fstab - выполнив команду "sudo nano /etc/fstab"

привести её к виду # /swap.img none swap sw 0 0

либо удалить эту строчку (/swap.img none swap sw 0 0)

sudo nano /etc/fstab
BASH

Для проверки выполните команду  free -h:

free -h
BASH

Размер Swap равен 0 — значит, он выключен

free -h
              total        used        free      shared  buff/cache   available
Mem:           3,9G        110M        3,2G        820K        535M        3,5G
Swap:            0B          0B          0B

Установка часового пояса

При инсталляции Ubuntu-22 не предлагается установить часовой пояс (по умолчанию — UTC). Его нужно установить вручную (для корректной работы системы тарификации, работ по расписанию и т. д.), например:

sudo timedatectl set-timezone Asia/Novosibirsk
BASH

Улучшение работы высоконагруженных серверов

Улучшить работу высоконагруженных серверов можно увеличив лимит открытых файлов.

Для установки лимита открытых файлов необходимо:

Проверить текущий лимит командой:

ulimit -a
CODE

результат :

eltex@ecss1:~$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 15515
max locked memory       (kbytes, -l) 65536
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 15515
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Данного лимита (open files  1024 ) недостаточно для нормальной работы высоконагруженных серверов.

Установить лимит открытых файлов для каждого пользователя:

sudo sed -i  '55i\*                soft    nproc           65536\n*                hard    nproc           131072\n*                soft    nofile          65536\n*                hard    nofile          131072\nroot             -       memlock         unlimited' /etc/security/limits.conf
CODE

# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>
#
#Where:
#<domain> can be:
#        - a user name
#        - a group name, with @group syntax
#        - the wildcard *, for default entry
#        - the wildcard %, can be also used with %group syntax,
#                 for maxlogin limit
#        - NOTE: group and wildcard limits are not applied to root.
#          To apply a limit to the root user, <domain> must be
#          the literal username root.
#
#<type> can have the two values:
#        - "soft" for enforcing the soft limits
#        - "hard" for enforcing hard limits
#
#<item> can be one of the following:
#        - core - limits the core file size (KB)
#        - data - max data size (KB)
#        - fsize - maximum filesize (KB)
#        - memlock - max locked-in-memory address space (KB)
#        - nofile - max number of open files
#        - rss - max resident set size (KB)
#        - stack - max stack size (KB)
#        - cpu - max CPU time (MIN)
#        - nproc - max number of processes
#        - as - address space limit (KB)
#        - maxlogins - max number of logins for this user
#        - maxsyslogins - max number of logins on the system
#        - priority - the priority to run user process with
#        - locks - max number of file locks the user can hold
#        - sigpending - max number of pending signals
#        - msgqueue - max memory used by POSIX message queues (bytes)
#        - nice - max nice priority allowed to raise to values: [-20, 19]
#        - rtprio - max realtime priority
#        - chroot - change root to directory (Debian-specific)
#
#<domain>      <type>  <item>         <value>
#

#*               soft    core            0
#root            hard    core            100000
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#ftp             -       chroot          /ftp
#@student        -       maxlogins       4
*                soft    nproc           65536
*                hard    nproc           131072
*                soft    nofile          65536
*                hard    nofile          131072
root             -       memlock         unlimited

# End of file


ВАЖНО

Установку пакетов требуется делать НЕ из-под пользователя ssw.

Обновление программного обеспечения операционной системы

  1. Для установки системы ECSS-10 необходимо добавить репозиторий ELTEX:

    на новом 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"
    BASH

    Далее необходимо выполнить импорт ключа командой:

    на новом ssw

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 33CB2B750F8BB6A5
    BASH

    Перед началом установки необходимо обновить ОС:

    на новом ssw

    sudo apt update
    BASH

    Если вы видите такое сообщение системы:

    W: http://archive.eltex.org/ssw/jammy/3.18/dists/stable/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

    Выполните следующую команду:

    на новом ssw

    sudo cp /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d
    CODE

    на новом ssw

    sudo apt upgrade
    BASH


Установка и настройка программного обеспечения

установка пакетов deb

  ┌ версия ПО ECSS. Сейчас в заявке на сертификацию она заявлена как 3. 
  | Мы её менять не будем до следующей сертификации или
  │ выпуска принципиально новой версии системы.
  │
  │     ┌ версия System Release. Общая версия для всех компонент входящих в конкретный релиз. 
  |     | Меняем её централизовано, когда
  │     │ принимаем решение о выпуске нового релиза. Релизы между собой обычно не совместимы.
┌─┴┐ ┌──┴─┐
ECSS.SysRel.SubMaj.SubMin
            └──┬─┘ └──┬─┘
               │      └ версия Subsystem minor. Минорную версию подсистемы устанавливает разработчик подсистемы. 
               |        Минорную версию
               │        меняем при добавлении патча. Как правило, минорные версии в рамках одной мажорной версии 
               │        совместимы между собой и отличаются в рамках конкретных патчей.
               │
               └ версия Subsystem major. Мажорная версия устанавливается разработчиком подсистемы. 
                 Мажорную версию подсистемы необходимо менять при внесении в подсистему существенных изменений.


Утилита установки пакетов APT анализирует версию пакета слева направо, для примера мы имеем пакет 14.14.7.7 , 
в репозитории находятся пакеты
14.14.7.8
14.14.7.9
14.14.8.1
14.14.20 -14.14.28
то при выполнении команды sudo apt install имя пакета → будет автоматически проверен и установлен пакет 14.14.28 , так как он самый последний, анализ будет выполнен по 3-й позиции  (major), анализ по 4-й (minor) выполнен не будет (аналогичным образом будет выполнятся команда sudo apt upgrade).

В случае если для конкретной ситуации требуется перейти с версии 14.14.7.7 на версию 14.14.7.9 , стандартная команда → sudo apt upgrade , нам не поможет, так как будет выбран самый новый пакет, в данной ситуации нам необходимо в явном виде указать какую версию пакета мы хотим установить, в данном примере мы должны выбрать команду → sudo apt install имя пакета=14.14.7.9 . Обычно это необходимо для тестирования определенного патча, для стандартных обновлений достаточно выбора привычной команды установки /обновления пакета

Устанавливаем все предложенные пакеты:

sudo apt install ntp ntpdate tcpdump vlan dnsmasq aptitude atop ethtool htop iotop mc minicom mtr-tiny nmap pptpd pv screen ssh tftpd vim sngrep tshark cpanminus gnuplot libgraph-easy-perl debconf-utils wget rsync ncdu
BASH

Список обязательного сервисного программного обеспечения:

sudo apt install ntp tcpdump vlan dnsmasq
BASH
ntpNTP-сервер
tcpdumpсниффер пакетов
vlanуправление VLAN
dnsmasqлегковесный DNS/DHCP-сервер

Список рекомендуемого диагностического и вспомогательного программного обеспечения:

sudo apt install aptitude atop ethtool htop mc screen ssh tftpd sngrep tshark gnuplot libgraph-easy-perl debconf-utils iotop ncdu
BASH
aptitudeустановка программ из репозиториев, рекомендуется использовать вместо программы apt/apt-get
atopмониторинг загрузки хоста с функцией периодического сохранения информации в файлы
ethtoolпросмотр статистики сетевых интерфейсов
htopмониторинг процессов
mcфайловый менеджер
screenмультиплексор терминалов
sshсервер и клиент SSH
tftpdTFTP-сервер
sngrepтрассировка sip
tsharkконсольный аналог wireshark
gnuplotвывод графиков статистики
libgraph-easy-perlPerl-модуль для преобразования или рендеринга графиков (в ASCII, HTML, SVG или через Graphviz)
debconf-utilsнабор утилит для работы с базой debconf
iotopинструмент для мониторинга использования ввода-вывода (IO) на диске в реальном времени в Linux
ncduутилита для поиска больших директорий в системе Linux

Данное программное обеспечение не требуется для работы системы ECSS-10, однако может упростить сервисное обслуживание системы и её отдельных компонентов со стороны инженеров эксплуатации и техподдержки.


Перед началом установки пакетов ecss , нужно убедиться в соответствии полосы пропускания СПД необходимым требованиям.
Для этого выполнить команду  sudo ethtool  <имя интерфейса> для всех физических интерфейсов.

sudo ethtool net.20
Settings for net.20:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Supported FEC modes: Not reported
    Advertised link modes:  10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Advertised FEC modes: Not reported
    Speed: 1000Mb/s
    Duplex: Full
    Auto-negotiation: on
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: internal
    MDI-X: off (auto)
    Link detected: yes

Проверить значение  следующих параметров:
Advertised auto-negotiation: Yes
Speed: 1000Mb/s  (не менее)
Duplex: Full


Настройка пакета ecss-dns-env

Выполнить следующую команду:

sudo apt install -y ecss-dns-env
CODE

Настройщик предложит выбрать разделы для настройки по вопросам ниже. Нужно выбрать broker. (для примера 10.0.10.51)

Вопрос ecss-dns-envОтветы для ecss1 
[Primary broker] Введите адрес ([Primary broker] Enter ip)10.0.10.51 (необходимо ввести)


[Secondary broker] Введите адрес ([Secondary broker] Enter ip)10.0.10.51 (необходимо ввести)


ВАЖНО

В случае последующей коррекции IP-адресов следует использовать команду: 

sudo dpkg-reconfigure ecss-dns-env
BASH

Установка  Postgres

Примечание

Перед установкой ecss-postgres-bdr-ssw в системе, в apt sources, должен быть добавлен docker для этого выполнить следующие команды:

на новом ssw

sudo install -m 0755 -d /etc/apt/keyrings
CODE

на новом ssw

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
CODE

на новом ssw

sudo chmod a+r /etc/apt/keyrings/docker.asc
CODE

на новом ssw

sudo sh -c "echo 'deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu   jammy stable' >> /etc/apt/sources.list.d/docker.list"
CODE

на новом ssw

sudo apt update && sudo apt upgrade
BASH

Установка пакета ecss-postgres-bdr-ssw

Выполнить установку пакета ecss-postgres-bdr-ssw:

на новом ssw

sudo apt install ecss-postgres-bdr-ssw
BASH

При конфигурации пакета ecss-postgres-bdr-ssw будут заданы вопросы:

Вопросы ecss-postgres-bdr-sswОтветы для ecss1Пример
Текущий IP-адрес сетевого интерфейса
(Выбрать адрес ранее используемый MySQL).
Выбрать из списка IP-адрес для работы с Postgres


Установка в кластере?No  (необходимо выбрать)


Результат:
. . .
==================
 Create databases 
==================
CREATE DATABASE
CREATE DATABASE
CREATE EXTENSION
CREATE EXTENSION
===================================
 Creating Postgres Exporter Schema 
===================================
Node IP: localhost
CREATE SCHEMA
GRANT
CREATE FUNCTION
CREATE VIEW
GRANT
CREATE FUNCTION
CREATE VIEW
GRANT
CREATE EXTENSION
CREATE FUNCTION
CREATE VIEW
GRANT
=======================================================
=======================================================
 ecss-postgres-bdr-ssw successfully installed/updated! 
=======================================================
=======================================================
┏┓┏┓┏┓┏┳┓┏┓┳┓┏┓┏┓  ┳┓┳┓┳┓  ┏┓┏┓┓ ┏
┃┃┃┃┗┓ ┃ ┃┓┣┫┣ ┗┓  ┣┫┃┃┣┫  ┗┓┗┓┃┃┃
┣┛┗┛┗┛ ┻ ┗┛┛┗┗┛┗┛  ┻┛┻┛┛┗  ┗┛┗┛┗┻┛

В случае использования файлового лицензирования

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

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

на ecss2

sudo apt install ecss-license-provider
CODE

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

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

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

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

Порт для соединения c 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-серверу, откуда брать лицензии, какие лицензии, и куда их потом передавать, все это нужно сконфигурировать вручную.

информация в файле после установки

elm_addresses: []
licenses: []
ecss_nodes: []
CODE
Для заполнения данных полей откройте файл конфигурации ecss-elm-adapter используемого в версии 3.17 ssw /etc/ecss/ecss-elm-adapter/config.env:

на ecss2

сat /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
CODE

В поле elm_adresses нужно прописать список серверов ELM, к которым мы хотим подключаться для получения лицензий. Первый адрес в списке используется как основной. Дополнительные строки с адресами работают как резерв.
пример:
- "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 указанный в файле /etc/ecss/ecss-license-provider/config.yaml, должен совпадать с ECSS_ID ( идентификатор ECSS-узла) которое указываем при установке пакета ecss-node

При обновлении, имя нового ECSS-узла (ECSS_ID) нужно обязательно указывать отличное от имени старого ECSS-узла. В противном случае при их совпадении сервис ecss-mycelium не активируется.


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

[A-Za-z0-9][A-Za-z0-9.-][A-Za-z0-9]

Пример: файла config.yaml на основе данных из файла /etc/ecss/ecss-elm-adapter/config.env

elm_addresses:
 - "elm.eltex-co.ru:8099"
licenses:
 - id: 0
   kind: SSW
   type: elm
   license_key: "ssw987654"
   product_id: "ECSS2000000"
ecss_nodes:
 - id: test.update
   kind: ssw
   license_id: 0
CODE

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

если кластер, то на обоих хостах

sudo systemctl restart ecss-license-provider.service
CODE


Установка ecss-node

Установка обязательного пакета ecss-node включает в себя установку и первоначальную настройку основных подсистем.

В системе уже должен быть установлен пакет ecss-postgres-bdr-ssw

Для установки пакета ecss-node выполните команду:

на новом ssw

sudo apt install -y ecss-node
BASH

Во время установки пакета создается пользователь ssw, от имени которого запускаются все сервисы ecss*. Создаются необходимые каталоги, выполняется настройка DNS, идет настройка SSL-сертификатов.

При установке также будет установлен пакет ecss-user

Во время установки будет предложено настроить параметры, необходимые для формирования конфигурационных файлов, примеры ответов следует ниже.

Вопросы ecss-userОтветы для ecss1Пример

Хотите ли вы использовать стандартные настройки?


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

 
Вопросы ecss-nodeОтветы для ecss1Пример

Идентификатор ECSS-узла в формате DNS (Настройка имени кластера): (любое уникальное имя, в примере test.update)

При обновлении, имя нового ECSS-узла нужно обязательно указывать отличное от имени старого ECSS-узла. В противном случае при их совпадении сервис ecss-mycelium не активируется.

Идентификатор ECSS-узла должен совпадать с ECSS_ID указанном в файле конфигурации провайдера лицензий - /etc/ecss/ecss-license-provider/config.yaml.

 

test.update (необходимо ввести)

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

[A-Za-z0-9][A-Za-z0-9.-][A-Za-z0-9]

Хотите ли вы использовать стандартные настройки?Yes (значение по умолчанию)

 
Вопросы ecss-userОтветы для ecss1Пример
Максимальный размер несжатого дампа в байтах.8G (значение по умолчанию)

Максимальный размер сжатого дампа в байтах.2G (значение по умолчанию)

Максимальный размер, который может занять каталог /var/lib/systemd/coredump:

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

Минимальный объем свободного дискового пространства в байтах. 30G (значение по умолчанию)

Сохраните в безопасное место и удалите файл /etc/ecss/ssl/ecss10root.key!

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

Cookie для ноды core:

ecss-core (необходимо ввести)


Cookie для ноды ds:

ecss-ds (необходимо ввести)


Cookie для ноды mediator: 

ecss-mediator  (необходимо ввести)


Cookie для ноды pa-sip: 

ecss-pa-sip  (необходимо ввести)


Cookie для ноды mycelium:

ecss-mycelium (необходимо ввести)


Cookie для ноды sorm: 

ecss-sorm (необходимо ввести)


Проверить информацию о состоянии синхронизации c NTP, используется команда  ntpq –p . Если использовать дополнительный ключ –n, вместо имени сервера будет указан IP-адрес:

ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*185.125.190.56  17.253.28.253    2 u   45   64    1   83.893   +0.470   2.177

Остановить сервисы:

на новом ssw

sudo systemctl stop ecss-core ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium
CODE

Создать backup для oasys (скопировать БД Mnesia со старого на новый ecss1), выполнить следующие команды:

на новом ssw

cd /var/lib/ecss/oasys/
CODE

на новом ssw

sudo rsync -a <Ваш_пользователь>@<IP_add_старого_сервера>:/var/lib/ecss/oasys/Mnesia.ds1@ecss1/ Mnesia.ds1@ecss1/
CODE

на новом ssw

sudo rsync -a <Ваш_пользователь>@<IP_add_старого_сервера>:/var/lib/ecss/oasys/Mnesia.md1@ecss1/ Mnesia.md1@ecss1/
CODE

на новом ssw

cd ~
CODE


Перезапустить сервисы SSW:

на новом ssw

sudo systemctl restart ecss-core ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium
CODE


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

на новом ssw

sudo systemctl start ecss-sorm
CODE

Проверить статус сервисов, для этого выполнить в CoCon команду system-status:

выполняется в CoCon
/system-status 
Checking...
┌─┬───────────────┬─────────────────────────┬───────────────┬────────────┬──────┐
│ │     Node      │         Release         │ Erlang nodes  │Mnesia nodes│Uptime│
├─┼───────────────┼─────────────────────────┼───────────────┼────────────┼──────┤
│ │core1@ecss1    │ecss-core-3.18.0.271     │core1@ecss1    │not running │3m 55s│
│ │ds1@ecss1      │ecss-ds-3.18.0.271       │ds1@ecss1      │ds1@ecss1   │4m 40s│
│ │md1@ecss1      │ecss-mediator-3.18.0.271 │md1@ecss1      │md1@ecss1   │3m 50s│
│ │mycelium1@ecss1│ecss-mycelium-3.18.0.271 │mycelium1@ecss1│not running │5m 28s│
│ │sip1@ecss1     │ecss-pa-sip-3.18.0.271   │sip1@ecss1     │sip1@ecss1  │3m 45s│
│ │sorm1@ecss1    │ecss-sorm-3.18.0.271     │sorm1@ecss1    │not running │1m 55s│
└─┴───────────────┴─────────────────────────┴───────────────┴────────────┴──────┘

Режимы лицензирования.

Лицензирование с использованием файловой лицензии

В случае использования файлового лицензирования

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

/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 softswitch                         │31.12.2026 23:59:59 │224d 21h 31m│
│0 │                   │ECSS DEFAULT    │      │Default licence                             │                    │            │
└──┴───────────────────┴────────────────┴──────┴────────────────────────────────────────────┴────────────────────┴────────────┘

Лицензирование с использованием ELM сервиса

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

выполняется в CoCon

/system/licence/manager/set --hosts [https://10.0.10.51:4321]
CODE

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

выполняется в CoCon

/system/licence/manager/show-status
┌───────────────────────┬───────┬─────┐
│         Host          │Current│Alive│
├───────────────────────┼───────┼─────┤
│https://10.0.10.51:4321│*      │true │
└───────────────────────┴───────┴─────┘
CODE

Хост должен иметь статус alive=true. И быть «current». 

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

Подключение к License Manager

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

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

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

выполняется в CoCon

/cluster/storage/ds1/licence/request
CODE

type=elm

/cluster/storage/ds1/licence/request      
Licence received      
[*******                                                               ] 6s 2ms   
Success: Licence parameters applied
CODE

type=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 │14.04.2026 11:18:34│ECSS2000000 │*     │ECSS ELM License│09.04.2027 16:26:34 │06.06.2026 10:49:12 │1d 6h 59m│
│0 │01.01.1990 00:00:00│ECSS DEFAULT│      │Default licence │                    │                    │         │
└──┴───────────────────┴────────────┴──────┴────────────────┴────────────────────┴────────────────────┴─────────┘
CODE


Установка пакетов ecss-restfs, ecss-media-server, ecss-web-conf

Далее устанавливаются пакеты ecss-restf  затем ecss-media-server, ecss-media-resources, , ecss-web-conf и другие в любом порядке:

ecss-restfs

на новом ssw

sudo apt install -y ecss-restfs
BASH

Установка ecss-restfs.  

При установке пакета ecss-restfs будет предложено задать параметры конфигурации. Ответы на вопросы приведены ниже. Также инсталлятор предложит установить и настроить пакет Text2speech от Yandex.

Вопросы ecss-restfsОтветы

Использование функции TTS (Use TTS service)

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

Настройка телефонной книги (Configure phone book)

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

Настроить сервис определения речи (Configure speech recognition service)

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

Ничего не выбирать

Ok

после установки пакета ecss-restfs проверьте наличие wav файлов автоинформатора в директории /var/lib/ecss/restfs/system/sounds/ командой :

ll /var/lib/ecss/restfs/system/sounds/
BASH

наличие wav-файлов в указанной выше директории говорит о корректности установки пакета ecss-restfs

Отсутствия wav файлов в указанной выше директории, директории свидетельствует о проблеме при установке пакета ecss-restfs. Для ее решения выполните команду:

sudo apt --fix-broken install 
CODE

и повторите команду проверки:

ll /var/lib/ecss/restfs/system/sounds/
CODE

осталось проверить доступность этих файлов извне. Для проверки выполните команду:

wget http://ecss1:9990/system/sounds/ai_you.wav
CODE

 

wget http://ecss1:9990/system/sounds/ai_you.wav
--2026-04-18 17:43:29--  http://ecss1:9990/system/sounds/ai_you.wav
Resolving ecss1 (ecss1)... 127.0.1.1, 10.0.10.51
Connecting to ecss1 (ecss1)|127.0.1.1|:9990... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11670 (11K) [audio/x-wav]
Saving to: ‘ai_you.wav’

ai_you.wav                                  100%[========================================================================================>]  11,40K  --.-KB/s    in 0s      

2026-04-18 17:43:29 (301 MB/s) - ‘ai_you.wav’ saved [11670/11670]
BASH

проверочный файл можно удалить

rm ai_you.wav
BASH

Перенести записи разговоров со старого сервера на новый, выполнив следующую команду:

на новом ecss1

sudo rsync -a <ваш_пользователь>@<IP_add_старого_ecss1>:/var/lib/ecss/restfs/domain/ /var/lib/ecss/restfs/domain/
CODE

Пример:

abf@ecss1:/var/lib/ecss/restfs/domain$ ls -la /var/lib/ecss/restfs/domain
итого 8
drwxr-xr-x 2 www-data www-data 4096 апр 22 18:21 .
drwxr-xr-x 7 www-data www-data 4096 мая 28 15:07 ..

abf@ecss1:/var/lib/ecss/restfs/domain$ sudo rsync -a abf@10.0.10.10:/var/lib/ecss/restfs/domain/ /var/lib/ecss/restfs/domain/

abf@ecss1:/var/lib/ecss/restfs/domain$ ls -la test_domain/records/2026_05_28
итого 610
drwxrwxrwx 2 www-data www-data  4096 мая 28 14:56 .
drwxrwxrwx 3 www-data www-data  4096 мая 28 14:27 ..
-rw-r--r-- 1 www-data www-data 71892 мая 28 14:27 2026-05-28_14-27-02_t_42009-42007.pcm
-rw-rw-rw- 1 www-data www-data    86 мая 28 14:27 2026-05-28_14-27-02_t_42009-42007.pcm.meta
-rw-r--r-- 1 www-data www-data 71892 мая 28 14:31 2026-05-28_14-31-19_o_42007-42009.pcm
-rw-rw-rw- 1 www-data www-data    86 мая 28 14:31 2026-05-28_14-31-19_o_42007-42009.pcm.meta
-rw-r--r-- 1 www-data www-data 63904 мая 28 14:55 2026-05-28_14-55-24_o_42007-42009.pcm
-rw-rw-rw- 1 www-data www-data    86 мая 28 14:55 2026-05-28_14-55-24_o_42007-42009.pcm.meta
-rw-r--r-- 1 www-data www-data 39940 мая 28 14:55 2026-05-28_14-55-31_o_42007-42009.pcm
-rw-rw-rw- 1 www-data www-data    86 мая 28 14:55 2026-05-28_14-55-31_o_42007-42009.pcm.meta
-rw-r--r-- 1 www-data www-data 15976 мая 28 14:55 2026-05-28_14-55-37_o_42007-42009.pcm
-rw-rw-rw- 1 www-data www-data    86 мая 28 14:55 2026-05-28_14-55-37_o_42007-42009.pcm.meta
-rw-r--r-- 1 www-data www-data 79880 мая 28 14:55 2026-05-28_14-55-48_o_42007-42009.pcm
-rw-rw-rw- 1 www-data www-data    86 мая 28 14:55 2026-05-28_14-55-48_o_42007-42009.pcm.meta
-rw-r--r-- 1 www-data www-data 55916 мая 28 14:56 2026-05-28_14-55-59_o_42007-42009.pcm
-rw-rw-rw- 1 www-data www-data    86 мая 28 14:55 2026-05-28_14-55-59_o_42007-42009.pcm.meta
-rw-r--r-- 1 www-data www-data 47928 мая 28 14:56 2026-05-28_14-56-04_o_42007-42009.pcm
-rw-rw-rw- 1 www-data www-data    86 мая 28 14:56 2026-05-28_14-56-04_o_42007-42009.pcm.meta
-rw-r--r-- 1 www-data www-data 31952 мая 28 14:56 2026-05-28_14-56-28_t_42009-42007.pcm
-rw-rw-rw- 1 www-data www-data    86 мая 28 14:56 2026-05-28_14-56-28_t_42009-42007.pcm.meta
-rw-r--r-- 1 www-data www-data 31952 мая 28 14:56 2026-05-28_14-56-37_t_42009-42007.pcm
-rw-rw-rw- 1 www-data www-data    86 мая 28 14:56 2026-05-28_14-56-37_t_42009-42007.pcm.meta
-rw-r--r-- 1 www-data www-data 95856 мая 28 14:56 2026-05-28_14-56-42_t_42009-42007.pcm
-rw-rw-rw- 1 www-data www-data    86 мая 28 14:56 2026-05-28_14-56-42_t_42009-42007.pcm.meta
CODE

ecss-media-server

на новом ssw

sudo apt install -y ecss-media-server
BASH

Для медиасервера (ecss-media-server/MSR) можно выполнить начальную настройку с записью параметров в файл конфигурации,
для этого нужно провести конфигурацию  transport bind-addr,mcc bind-addres:
Укажите IP-адреса старого SSW версии 3.17 (в примере 10.0.20.41).

Вопросы ecss-media-serverОтветы для ecss1
[ MSR SIP ] Введите bind-ip адрес (Enter)10.0.20.41 (необходимо ввести)
[MSR Control-Channel] Введите bind-ip-адрес10.0.20.41 (необходимо ввести)

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

cat /etc/ecss/ecss-media-server/config.xml
CODE


Внутри лежит конфигурация для msr: config.xml, в директории conf.d лежит конфигурация default.xml.

По своей сути default.xml — это дополнение config.xml, которое определяет секцию аккаунтов. Это сделано для того, чтобы после обновлений пакета данная конфигурация оставалась неизменной. Вид config.xml представлен здесь: файл конфигурации.

<?xml version="1.0" encoding="utf-8"?>
<config date="09:24:23 03.12.2025">
  <general log-level="3" log-rotate="yes" max-calls="2148" max-vid-calls="100" max-in-group="512" load-sensor="media" load-delta="10" calls-delta="100" spool-dir-size="100M" log-name="msr.log" log-path="/var/log/ecss/media-server" use-srtp="disabled" enable-ice-transport="no" ice-update="no" aggressive-ice="yes" stun-server="" suspicious-mode="no"/>
  <transport bind-addr="10.0.20.41" port="5040" transport="udp+tcp"/>
  <!-- By default configured public TURN-server -->
  <turn-server use-turn="no" host="numb.viagenie.ca" user="webrtc@live.com" password="muazkh"/>
  <media mixer-clock-rate="8000" use-vad="no" cng-level="0" jb-size="60" rtcp-timeout="0" rtp-timeout="350" udp-src-check="no" cn-multiplier="3" port-start="12000" port-range="4496" tias-in-sdp="no" thread-cnt="2" vid-enc-threads="2" vid-dec-threads="2" video-conf-layout="evenly" keyframe-interval="1000" vid-decode-delay="100" silent-codec-switch="yes" silence-threshold="-30" dtmf-flash-disable="no" video-dscp="0" other-dscp="0" dummy-video-src="/usr/share/ecss-media-server/video/dummy_video.yuv" video-enc-width="640" video-enc-height="360" finalsilence="1000" rtcp-stat-dump="yes" dtmf-tg-fpc-loop="10" dtmf-tg-fit="1" dtmf-tg-fot="2" dtmf-tg-volume="12288"/>
  <codec pcma="1" pcmu="2" ilbc="0" gsm="0" g722="3" g726="0" g729="0" speex="0" l16="0" g7221="0" opus="0" h264="1" h263-1998="2" t38="1" tel-event-pt="0"/>
  <accounts>
    <!-- <dynamic msr_name="msr.name"
            realm="sip:127.0.0.1:5000"
            dtmf_mode="rfc+inband+info"
            auth_name="user"
            auth_password="password" /> -->
  </accounts>
  <pbyte>
    <mcc bind-addr="10.0.20.41" port="5700"/>
  </pbyte>
  <conf_dir path="/etc/ecss/ecss-media-server/conf.d"/>
  <metrics enable="yes" use-pushgateway="yes" pushgateway-addr="127.0.0.1:9091" push-interval="5" port="8100" msr_name="msr2"/>
  <rtp>
    <auto addr-v4=""/>
  </rtp>
</config>
CODE

по умолчанию , после инсталляции ECSS-10 активизирует только кодеки - pcma, pcmu, g722, h264, h263-1998, t38. Остальные имеют статус =0 = выкл. Если хотите активизировать остальные кодеки, в редакторе nano измените приоритет с 0 на цифру приоритета (уровень приоритета не должен повторятся для сервиса audio/video/fax)
sudo nano /etc/ecss/ecss-media-server/config.xml

чтобы активизировать все кодеки 
строчку  - 
<codec pcma="1" pcmu="2" ilbc="0" gsm="0" g722="3" g726="0" g729="0" speex="0" l16="0" g7221="0" opus="0" h264="1" h263-1998="2" t38="1" tel-event-pt="0"/>
привести к виду - 
<codec pcma="1" pcmu="2" ilbc="6" gsm="4" g722="3" g726="11" g729="5" speex="7" l16="8" g7221="9" opus="10" h264="1" h263-1998="2" t38="1" tel-event-pt="0"/>

Недопустимо указывать у разных кодеков одинаковый приоритет, для примера g722="5" g729="5". В этом случае они будут работать некорректно/игнорироваться.
За исключением "0" - выключено.

Рассмотрим секцию аккаунтов (файл default.xml):

cat /etc/ecss/ecss-media-server/conf.d/default.xml
BASH

Проверить корректность данных.

Настройка msr для ecss1(/etc/ecss/ecss-media-server/conf.d/default.xml)

<?xml version="1.0"?>
<config>
    <accounts>
        <dynamic msr_name="msr.ecss1" realm="sip:10.0.20.41:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password">
            <via dynamic-ifaces="no">
                <iface name="net.20" ip="10.0.20.41"/>
            </via>
        </dynamic>
    </accounts>
</config>
CODE

В ней указаны текущие настройки, согласно которым происходит регистрация msr на core.

Основными параметрами здесь являются: msr_name и realm:

  • msr_name — параметр, определяющий название msr. (рекомендуется задавать название msr. и к какому хосту он принадлежит, например msr.ecss1);
  • realm — определяет адрес для регистрации на ядре. Точка входа по умолчанию: порт 5000, адрес: 127.0.0.1.

После изменения конфигурации файлов /etc/ecss/ecss-media-server/config.xml и /etc/ecss/ecss-media-server/conf.d/default.xml необходимо выполнить перезапуск сервиса ecss-media-server, чтобы изменения вступили в силу, следующей командой:

sudo systemctl restart ecss-media-server
CODE

Вы увидите сообщение:

Job for ecss-media-server.service failed because the control process exited with error code.
See "systemctl status ecss-media-server.service" and "journalctl -xeu ecss-media-server.service" for details.

Мы указали рабочие IP адреса для media сервиса, а они пока закреплены за старым ecss1. После переключения IP адресов сервис запустится автоматически.


ecss-web-conf

на новом ssw

sudo apt install ecss-web-conf
CODE

Web-конфигуратор позволяет сделать управление системой более наглядным и комфортным. Установка web-конфигуратора не является обязательной, но рекомендуется.
Также при установке пакета ecss-web-conf автоматически устанавливается пакет ecss-subscriber-portal-ui. Приложение "Портал абонента" системы ECSS-10 позволяет абонентам системы самостоятельно управлять услугами, просматривать информацию по совершенным вызовам, активным конференциям, а также настраивать собственные IVR-скрипты для входящих вызовов. Описание работы веб-конфигуратора приведено в разделе "Портал абонента".

Вопросы ecss-web-confОтветы для ecss1Пример
 Хотите ли вы использовать стандартные настройки?Yes (значение по умолчанию)

Проверьте возможность подключения к веб-интерфейсу http://10.0.10.51,  пользователь/пароль — admin/password. В настоящий момент не все функции будут доступны, но веб-интерфейс должен работать, а вход в систему — быть успешным.

Отключение SSW версии 3.17

Для отключения старого SSW версии 3.17 выполнить следующие команды:
Отключение сервисов

на старом SSW

sudo systemctl mask --now ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm
CODE

Копирование БД Postgres

Скопировать БД Postgres со старого ecss1, для этого выполнить команду:

на старом SSW

sudo tar -Pcvf /tmp/postgres.tar /srv/ecss/ecss-postgres-bdr-ssw/volumes/
CODE

Скопировать postgres.tar на новый сервер, выполнив команду:

на старом SSW

 scp /tmp/postgres.tar <ваш_пользователь>@<IP_адрес_новый_ecss1>:/tmp/postgres.tar
CODE

Остановить docker БД Postgres командой:

на новом ssw

sudo docker compose -f /srv/ecss/ecss-postgres-bdr-ssw/docker-compose.container.yml stop
CODE

Очистить подкаталог /srv/ecss/ecss-postgres-bdr-ssw/volumes:

на новом ssw_ecss1

sudo rm -R /srv/ecss/ecss-postgres-bdr-ssw/volumes/*
CODE

Распаковать БД Postgres на новом сервере ecss1.

на новом ssw_ecss1

sudo tar xvf /tmp/postgres.tar -C / 
CODE

Запустить docker БД Postgres командой:

на новом ssw

sudo docker compose -f /srv/ecss/ecss-postgres-bdr-ssw/docker-compose.container.yml start
CODE

Замена IP адресов на старом ecss1

Изменить IP адреса 10.0.10.41/10.0.20.41 на неиспользуемые на сети (для примера на 10.0.10.61/10.0.20.61):

на старом SSW

sudo nano /etc/netplan/ecss.yaml
CODE

Было:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3: # Название интерфейса ВМ к интернет
        dhcp4: yes
        dhcp6: no
    enp0s8: # Название интерфейса для SSW
        dhcp4: no # Отключаем на интерфейсах динамическое распределение IP-адреса
        dhcp6: no
        addresses: [192.168.56.41/24]
  vlans:
    net.10: # Интерфейс управления
        id: 10
        link: enp0s8
        addresses: [10.0.10.41/24]
        nameservers:
          addresses: [127.0.0.1, 8.8.8.8] # Адреса серверов DNS
    net.20: # Интерфейс для VoIP
        id: 20
        link: enp0s8
        addresses: [10.0.20.41/24]
        routes:
        - to: 10.0.20.128/25
          via: 10.0.20.35
CODE

Стало:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3: # Название интерфейса ВМ к интернет
        dhcp4: yes
        dhcp6: no
    enp0s8: # Название интерфейса для SSW
        dhcp4: no # Отключаем на интерфейсах динамическое распределение IP-адреса
        dhcp6: no
        addresses: [192.168.56.61/24]
  vlans:
    net.10: # Интерфейс управления
        id: 10
        link: enp0s8
        addresses: [10.0.10.61/24]
        nameservers:
          addresses: [127.0.0.1, 8.8.8.8] # Адреса серверов DNS
    net.20: # Интерфейс для VoIP
        id: 20
        link: enp0s8
        addresses: [10.0.20.61/24]
        routes:
        - to: 10.0.20.128/25
          via: 10.0.20.35
CODE

на старом SSW

sudo netplan apply
CODE

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

После освобождения рабочих IP адресов со старого SSW можно подключить их к новому SSW. Выполнить команду:

на новом ssw

sudo nano /etc/netplan/ecss.yaml
CODE

Изменить IP адреса 10.0.10.51/10.0.20.51 на используемые на сети для SSW (в примере 10.0.10.41/10.0.20.41):

Было:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3: # Название интерфейса ВМ к интернет
        dhcp4: yes
        dhcp6: no
    enp0s8: # Название интерфейса для SSW
        dhcp4: no # Отключаем на интерфейсах динамическое распределение IP-адреса
        dhcp6: no
        addresses: [192.168.56.51/24]
  vlans:
    net.10: # Интерфейс управления
        id: 10
        link: enp0s8
        addresses: [10.0.10.51/24]
        nameservers:
          addresses: [127.0.0.1, 8.8.8.8] # Адреса серверов DNS
    net.20: # Интерфейс для VoIP
        id: 20
        link: enp0s8
        addresses: [10.0.20.51/24]
        routes:
        - to: 10.0.20.128/25
          via: 10.0.20.35
CODE

Стало:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3: # Название интерфейса ВМ к интернет
        dhcp4: yes
        dhcp6: no
    enp0s8: # Название интерфейса для SSW
        dhcp4: no # Отключаем на интерфейсах динамическое распределение IP-адреса
        dhcp6: no
        addresses: [192.168.56.41/24]
  vlans:
    net.10: # Интерфейс управления
        id: 10
        link: enp0s8
        addresses: [10.0.10.41/24]
        nameservers:
          addresses: [127.0.0.1, 8.8.8.8] # Адреса серверов DNS
    net.20: # Интерфейс для VoIP
        id: 20
        link: enp0s8
        addresses: [10.0.20.41/24]
        routes:
        - to: 10.0.20.128/25
          via: 10.0.20.35
CODE

на новом ssw

sudo netplan apply
CODE

Обновить IP адрес в файле /etc/hosts:

на новом ssw

sudo nano /etc/hosts
CODE

Обновить IP адрес в файле /etc/dnsmasq.d/ecss-broker:

на новом ssw

sudo dpkg-reconfigure ecss-dns-env
CODE

выполняется в CoCon

/system/licence/manager/set --hosts [https://10.0.10.41:4321]
CODE

на новом ssw

sudo systemctl restart ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-media-server
CODE


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