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

Ключ

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

...

  1. If the latest billing data is needed, the current CDR must be finalized and the CDR files must be downloaded to a remote server:
    Без форматирования
    /domain/test_domain/cdr/make_finalize_cdr 
    Created file(s): cdr_20260122_11_51_16_1_c.csv
  2. Enable the setting to automatically synchronize files that are in a split (based on the larger file size). For more information, see "Проблемы, связанные с возникновением split-brain".

    Блок кодаnoformat
    titleна on ecss1
    sudo gluster volume set ecss_volume cluster.favorite-child-policy size
  3. Остановить репликации Stop MySQL replication.
    Убедитесь, что значения параметров Make sure that values of the Slave_IO_Running иand Slave_SQL_Running равныparameters are No.
    Блок кода
    titleна on ecss1/ecss2
    sudo mysql -uroot -p -e 'STOP SLAVE;'

    Блок кода
    titleна on ecss1/ecss2
    sudo mysql -uroot -p -e 'SHOW SLAVE STATUS \G;' | grep -E "Slave_IO_Running:|Slave_SQL_Running:"

    Без форматированияcode
    titleПример:Example
    sudo mysql -uroot -p -e 'SHOW SLAVE STATUS \G;' | grep -E "Slave_IO_Running:|Slave_SQL_Running:"
    
    . . .
                 Slave_IO_Running: No
                Slave_SQL_Running: No
    . . .
  4. When updating the cluster, update the servers one at a time. This ensures that one of the servers will always be running during the update, and service operation will not be interrupted. To split the cluster, use the ecss-control tool on both servers.

    SIP signaling is exchanged via the SIP-VRRP IP address. Similarly, the connection to MySQL is established via the MySQL-VRRP IP address. This functionality is implemented to enable IP address migration to another host in the event of a failure, shutdown, or maintenance of the primary host. IP address migration is monitored by the keepalive service on each host. To redirect traffic to the first server (ecss1), keepalive must be disabled on the second host (ecss2). In this case, both SIP-VRRP IP addresses, as well as the MySQL-VRRP IP address, will be located on the first host (ecss1). Execute the following command:

    Блок кода
    titleon

    При обновлении кластера следует обновлять серверы по очереди. Таким образом, во время обновления один из серверов будет всегда запущен и работа сервисов не прервётся. Для разделения кластера следует использовать инструмент ecss-control на обоих серверах (описание команд утилиты приведено в «Приложении Н»).

    Обмен SIP-сигнализацией происходит через SIP-VRRP-IP-адрес. Аналогичным образом, через MySQL-VRRP-IP-адрес происходит подключение к MySQL. Этот функционал реализован для возможности миграции IP-адреса на другой хост в случае падения/отключения/техобслуживания основного хоста. Контроль миграции IP-адресов осуществляется сервисом keepalive на каждом хосте. Для перевода трафика на первый сервер (ecss1) необходимо выключить keepalive на втором хосте (ecss2). В этом случае оба SIP-VRRP-IP-адреса, а также MySQL-VRRP-IP-адрес будут находиться на первом хосте (ecss1). Выполнить следующую команду:

    Блок кода
    titleна ecss2
    sudo systemctl disable --now keepalived.service
  5. Командой ifconfig проверить, что все VRRP-IP-адреса находятся на Use the `ifconfig` command to verify that all VRRP IP addresses are on ecss1 (VRRP-mysql/VRRP-SIP1/VRRP-SIP2).
    Блок кода
    titleна on ecss1
    ifconfig
  6. It is necessary to mask all nodes on the server that will be updated first. Disable the nodes' automatic startup:Необходимо замаскировать все ноды на сервере, который будет обновляться первым. Отключаем автозапуск нод:
    Блок кода
    titleна on ecss2
    sudo systemctl mask --now ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm
  7. На On ecss1 выполнить разделение SSW на два независимых сервера следующей командой, split SSW into two independent servers using the following command:
    Предупреждение

    Команда The ecss-control работает со стандартными именами хостов: control command uses the standard hostnames: ecss1/ecss2.


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

    Без форматированияcode
    titleРезультат:Result
    sudo ecss-control detach
    detach host: ecss2, ip: 10.0.10.82
    complete
    sudo ecss-control status
    locked ip: 10.0.10.82
    Предупреждение

    Нода sorm идёт одна на кластер. В случае её работы на ecss1, при выполнении приложенной команды будет уведомление.

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

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

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

2 Preparing to update SSW services on ecss2

  1. Update the SSW repository:
    Блок кода
    titleon both hosts
    sudo sh -c "echo deb [
    Актуализировать репозиторий SSW:
    Блок кода
    titleна обоих хостах
    sudo sh -c "echo deb [arch=amd64]  http://archive.eltex.org/ssw/jammy/3.17 stable main extras external > /etc/apt/sources.list.d/eltex-ecss10-stable.list"
  2. Выполнить обновление пакетовPerform the packet update:
    Блок кода
    titleна обоих хостахon both hosts
    sudo apt update

3

...

Updating SSW

...

services on ecss2

  1. Подготовка партиции на ecss1 для работы с Preparing the ecss1 partition for use with PostgreSQL:

    Просмотр монтирования партиции для Viewing the partition mounting for ecss-mysql:

    Блок кода
    titleна on ecss1
    cat /etc/fstab
    Без форматированияcode
    titleПример вывода:Output example
    # /etc/fstab: static file system information.
    #
    # Use 'blkid' to print the universally unique identifier for a
    # device; this may be used with UUID= as a more robust way to name devices
    # that works even if disks are added and removed. See fstab(5).
    #
    # <file system> <mount point>   <type>  <options>       <dump>  <pass>
    # / was on /dev/sda4 during curtin installation
    /dev/disk/by-uuid/e2750125-8839-491d-b650-8e8cc33627b5 / ext4 defaults 0 1
    # /var/lib/mysql was on /dev/sda2 during curtin installation
    /dev/disk/by-uuid/cea75df1-541b-4b40-b943-a387ba8804e8 /var/lib/mysql ext4 defaults 0 1
    # /var/lib/ecss-mysql was on /dev/sda3 during curtin installation
    /dev/disk/by-uuid/162a2b8b-1e14-4bc7-bf40-dbb216ed2c61 /var/lib/ecss-mysql ext4 defaults 0 1

    Создаём новую директорию Create a new /srv/ecss/ecss-postgres-bdr-ssw для directory for PostgreSQL:

    Блок кода
    titleна обоих хостахon both hosts
    sudo mkdir -p /srv/ecss/ecss-postgres-bdr-ssw

    Монтируем партицию в новую директориюMount the partition into the new /srv/ecss/ecss-postgres-bdr-ssw для directory for PostgreSQL:

    Блок кода
    titleна обоих хостахon both hosts
    sudo mount --bind /var/lib/ecss-mysql /srv/ecss/ecss-postgres-bdr-ssw
    Обновляем файл Update the /etc/fstab → добавляем новую директорию для монтирования file → add a new directory to mount (/var/lib/ecss-mysql /srv/ecss/ecss-postgres-bdr-ssw none defaults,bind 0 0):
    Блок кода
    titleна обоих хостахon both hosts
    sudo nano /etc/fstab
    Без форматированияcode
    titleПример вывода:Output example
    # /etc/fstab: static file system information.
    #
    # Use 'blkid' to print the universally unique identifier for a
    # device; this may be used with UUID= as a more robust way to name devices
    # that works even if disks are added and removed. See fstab(5).
    #
    # <file system> <mount point>   <type>  <options>       <dump>  <pass>
    # / was on /dev/sda4 during curtin installation
    /dev/disk/by-uuid/e2750125-8839-491d-b650-8e8cc33627b5 / ext4 defaults 0 1
    # /var/lib/mysql was on /dev/sda2 during curtin installation
    /dev/disk/by-uuid/cea75df1-541b-4b40-b943-a387ba8804e8 /var/lib/mysql ext4 defaults 0 1
    # /var/lib/ecss-mysql was on /dev/sda3 during curtin installation
    /dev/disk/by-uuid/162a2b8b-1e14-4bc7-bf40-dbb216ed2c61 /var/lib/ecss-mysql ext4 defaults 0 1
    /var/lib/ecss-mysql /srv/ecss/ecss-postgres-bdr-ssw none defaults,bind 0 0
  2. Устанавливаем новую БД Postgres (сначала на ecss1, далее на Install the new Postgres database (first on ecss1, then on ecss2):

    Блок кода
    titleна обоих хостах, сначала на ecss1, потом на both hosts: first on ecss1, then on ecss2
    sudo apt install ecss-postgres-bdr-ssw

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

    !!!Если при установке пакета выдаетсяIf the following error occurs when installing the package:!!!


    ecss-postgres-bdr-ssw : Depends: docker-compose-plugin but it is not installable

    выполнить следующие команды (на всех хостахrun the following commands (on all hosts):

    Блок кода
    titleна всех хостахon all hosts
    sudo install -m 0755 -d /etc/apt/keyrings
    Блок кода
    titleна всех хостахon all hosts
    sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
    Блок кода
    titleна всех хостахon all hosts
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    Блок кода
    titleна всех хостахon all hosts
    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
      $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    Блок кода
    titleна всех хостахon all hosts
    sudo apt update
    Блок кода
    titleна обоих хостах, сначала на ecss1, потом на on all hosts, first on ecss1, then on ecss2
    sudo apt install ecss-postgres-bdr-ssw

    Информация

    В процессе установки будут заданы вопросы:

    • выберите адрес для репликации из списка (на двух хостах);
    • подтвердите установку в кластере (на двух хостах);
    • укажите «да, я мастер» (на ecss1) или «нет, я не мастер» (на ecss2);
    • на ecss2 укажите адрес мастера (указанный в ответе на вопрос 1 для ecss1).

    During the installation process, you will be asked the following questions:

    • Select a replication address from the list (on both hosts);
    • Confirm the installation in the cluster (on both hosts);
    • Specify “Yes, I am the master” (on ecss1) or “No, I am not the master” (on ecss2);
    • On ecss2, specify the master’s address (specified in the answer to question 1 for ecss1).
  3. Verify that the replication configuration is correct.
    During installation, the postgresbdr_ssw.sh script is installed in the Проверить корректность настройки репликации.
    Во время установки в директорию /srv/ecss/ecss-postgres-bdr-ssw устанавливается скрипт postgresbdr_ssw.sh.
    Для проверки репликации выполнить следующие команды directory.
    To check replication, run the following commands:
    Блок кода
    titleДля проверки репликации выполнить команду на обоих хостахTo check replication, run the following command on both hosts:
    cd /srv/ecss/ecss-postgres-bdr-ssw

    Блок кода
    titleДля проверки репликации выполнить команду на обоих хостахTo check replication, run the following command on both hosts:
    sudo ./postgresbdr_ssw.sh check

    Подсказка

    Вывод на хостах Output on ecss1/ecss2 должен быть одинаковый hosts should be the same.


    Без форматированияcode
    titleПример вывода Output example (сокращёнshortened):
    таблицаnode нодtable наon мастереmaster поvia ecss_storekeeper_db
    таблицаnode нодtable наon слейвеslave поvia ecss_storekeeper_db
    таблицаconnection коннекцийtable наfor мастерmaster поvia ecss_storekeeper_db
         conn_sysid      |                                       conn_dsn                                        
    ---------------------+---------------------------------------------------------------------------------------
     7569499877813944343 | host=10.0.10.81 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1
     7569514001040228374 | host=10.0.10.82 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1
    (2 rows)
    
    таблицаconnection коннекцийtable наfor слейвеslave поvia ecss_storekeeper_db
         conn_sysid      |                                       conn_dsn                                        
    ---------------------+---------------------------------------------------------------------------------------
     7569499877813944343 | host=10.0.10.81 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1
     7569514001040228374 | host=10.0.10.82 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1
    (2 rows)
  4. Обновление пакетаUpdating the ecss-dns-env package:

    Блок кода
    titleна on ecss2
    sudowsudo apt install ecss-dns-env

    Подсказка

    При обновлении нужно применить новые конфигурационные файлы (подтверждением When updating, you must apply the new configuration files (confirm with -Y).

    После обновления нужно актуализировать конфигурацию, выполнив команду. Ответы на вопросы аналогичны процедуре инсталляцииAfter the update, the configuration should be updated by running the command below. The answers to the questions are the same as during the installation procedure:

    Блок кода
    titleна on ecss2
    sudo dpkg-reconfigure ecss-dns-env
  5. Выполнить обновление пакетаUpdate the ecss-user package:

    Блок кода
    titleна on ecss2
    sudo apt install ecss-user
  6. Выполнить обновление пакета Update the ecss-utils package:

    Блок кода
    titleна on ecss2
    sudo apt install ecss-utils
  7. Выполнить обновление пакета Update the ecss-node package:

    Блок кода
    titleна on ecss2
    sudo apt install ecss-node

    Информация

    ВОПРОСЫ НА УСТАНОВКУ ecss-node installation questions:

    • ECSS-node ID in DNS format: <Согласно лицензии><According to the license>.
    • Default configuration: yes
    • Global config: yes

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

    Accept all configuration file changes.

  8. Perform СoCon users migration Выполнить миграцию пользователей СoCon (audit_database):

    Блок кода
    titleна on ecss2
    /usr/bin/migrate_cocon.exs

    Информация
    titleВ скобках указаны значения по умолчанию. Введите свои, если они отличаютсяThe values in parentheses are the default ones. Enter your own values if they differ.
    MySQL database hostname (cocon.mysql.ecss):
    MySQL database port (3306):
    ecss_audit database username (audit):
    ecss_audit database password (audit):
  9. Включаем нодыEnable the nodes.

    Включить сервисы SSW следующими командамиEnable the SSW services using the following commands:

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

    Блок кода
    titleна on ecss2
    sudo systemctl enable ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm
  10. Запуск Starting SSW на on ecss2. Запустить следующие сервисыEnable the following services:
    ecss-mycelium
    Блок кода
    titleна on ecss2
    sudo systemctl start ecss-mycelium
    ecss-ds
    Блок кода
    titleна on ecss2
    sudo systemctl start ecss-ds
    ecss-core
    Блок кода
    titleна on ecss2
    sudo systemctl start ecss-core
    ecss-mediator

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

    Блок кода
    titleна on ecss2
    sudo systemctl start ecss-mediator
    Подсказка
    Блок кода
    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Пример для домена test_domain:

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

    /domain/test_domain/sorm3/set extractor_node sorm1@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│false      │
    │entrypoint_profile│test_domain│           │
    │extractor_ip      │test_domain│127.0.0.1  │
    │extractor_node    │test_domain│sorm1@ecss2
    └──────────────────┴───────────┴───────────┘

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

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

    ПОКА НЕ ЗАПУСКАЕМ PA-SIP!


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

    DO NOT START PA-SIP YET!

  11. Check the service status by running the system-status command in CoCon:

    Блок кода
    titleperformed in

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

    Без форматирования
    titleвыполняется в CoCon
    /system-status 
    Checking...
    ┌─┬───────────────┬────────────────────────────┬───────────────┬────────────┬──────┐
    │ │     Node      │          Release           │ Erlang nodes  │Mnesia nodes│Uptime│
    ├─┼───────────────┼────────────────────────────┼───────────────┼────────────┼──────┤
    │ │core1@ecss2    │ecss-core-3.17.1.0.1771     │core1@ecss2    │not running │2m 27s│
    │ │ds1@ecss2      │ecss-ds-3.17.1.0.1771       │ds1@ecss2      │ds1@ecss2   │2m 32s│
    │ │md1@ecss2      │ecss-mediator-3.17.1.0.1771 │md1@ecss2      │md1@ecss2   │2m 16s│
    │ │mycelium1@ecss2│ecss-mycelium-3.17.1.0.1771 │mycelium1@ecss2│not running │2m 39s│
    │ │sorm1@ecss2    │ecss-sorm-3.17.1.0.1771     │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.14.16.1.0 │ connected │ 00:00:10  │
    │             │ msr.ecss2 │ 3.14.16.1.0 │ connected │ 00:00:10  │
    └─────────────┴───────────┴─────────────┴───────────┴───────────┘
  12. Выполнить миграции таблиц DB (подробное описание)
    Проверить, какие данные доступны для переноса, можно командойMigrate the database tables
    To check, which data is available for migration, use the following command:
    панель
    titleвыполняется в performed in CoCon

    /system/postgresql/migration/check <DATABASE> *
    где where DATABASE is:
    address_book, audit, calls, dialer, history, meetings, subscribers.


    Без форматированияcode
    titleПример вывода:Output example
    /system/postgresql/migration/check address_book *              
    ┌────────────┬────────────────┬────────────────────────────────────┬───────────────────────────────┐
    │     DB     │     Table      │               Status               │          Description          │
    ├────────────┼────────────────┼────────────────────────────────────┼───────────────────────────────┤
    │address_book│contact         │Needs migration.                    │Depends on: `source`.          │
    │            │                │Meegrated: 0 / 1785                 │                               │
    │            │                │                                    │                               │
    │-           │label           │Needs migration.                    │No dependencies.               │
    │            │                │Meegrated: 0 / 5                    │                               │
    │            │                │                                    │                               │
    │-           │phone           │Needs migration.                    │Depends on: `contact`, `label`.│
    │            │                │Meegrated: 0 / 2493                 │                               │
    │            │                │                                    │                               │
    │-           │changes         │Needs migration.                    │No dependencies.               │
    │            │                │Meegrated: 0 / 5                    │                               │
    │            │                │                                    │                               │
    │-           │email           │Needs migration.                    │Depends on: `contact`.         │
    │            │                │Meegrated: 0 / 588                  │                               │
    └────────────┴────────────────┴────────────────────────────────────┴───────────────────────────────┘
    Миграцию выполнить командой
    Perform migration using the following command:
    Блок кода
    titleвыполняется в performed in CoCon
    /system/postgresql/migration/do <DATABASE> <TABLE>
    Проверить прохождение миграции можно командойCheck the migration using the following command:
    Блок кода
    titleвыполняется в performed in CoCon
    /system/postgresql/migration/info <DATABASE> <TABLE>

    Без форматированияcode
    titleПример вывода:Output example
    /system/postgresql/migration/info address_book              
    ┌────┬────────────┬────────────────────┬──────────┬────────────────┬───────────────────┬───────────────────┐
    │ ID │     DB     │       Table        │  Status  │     Props      │    Start Time     │     End Time      │
    ├────┼────────────┼────────────────────┼──────────┼────────────────┼───────────────────┼───────────────────┤
    │1   │address_book│source              │finished  │current: 2      │22.01.2026 13:14:20│22.01.2026 13:14:20│
    │    │            │                    │          │overall: 2      │                   │                   │
    │2   │address_book│label               │failed    │current: 0      │22.01.2026 13:14:30│22.01.2026 13:14:30│
    │    │            │                    │          │overall: 5      │                   │                   │
    │3   │address_book│changes             │failed    │current: 0      │22.01.2026 13:14:49│22.01.2026 13:14:49│
    │    │            │                    │          │overall: 5      │                   │                   │
    │4   │address_book│contact             │finished  │current: 1785   │22.01.2026 13:14:56│22.01.2026 13:14:56│
    │    │            │                    │          │overall: 1785   │                   │                   │
    │5   │address_book│phone               │finished  │current: 2493   │22.01.2026 13:15:03│22.01.2026 13:15:03│
    │    │            │                    │          │overall: 2493   │                   │                   │
    │6   │address_book│email               │finished  │current: 588    │22.01.2026 13:15:07│22.01.2026 13:15:07│
    │    │            │                    │          │overall: 588    │                   │                   │
    └────┴────────────┴────────────────────┴──────────┴────────────────┴───────────────────┴───────────────────┘
  13. Обновление пакетаUpdating the ecss-restfs package.
    Подсказка
    Принять все новые конфигурационные файлы, выбирая  Accept all new configuration files using Y.

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

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

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

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

    introduces a new feature for managing codec priorities. If, for any reason, the codec section in multiple files contains duplicate entries for the same codec, a conflict will occur after the update, and the Media Server will fail to start.

    Therefore, there must be no conflicts regarding codec priorities in the configuration files of a single Media Server (there should be only one entry for each codec, and it must not be duplicated in other files). It is up to the system administrator to determine which specific files need to be configured.


    First, disable registration on the production host ecss1. To do this, comment out the line containing the production host's realm (in the example, Предварительно отключить регистрацию на рабочий хост ecss1. Для этого надо закомментировать в конфигурационном файле строку с realm рабочего хоста (в примере realm="sip:10.0.20.81:5000") , добавив in the configuration file by adding <!--  в начале строки и at the beginning of the line and -->  в концеat the end:
    Блок кода
    titleна on ecss2
    sudo nano /etc/ecss/ecss-media-server/conf.d/default.xml

    Без форматированияcode
    titleпримерExample
    <?xml version="1.0"?>
    <config>
      <accounts>
              <!--<dynamic msr_name="msr.ecss2" realm="sip:10.0.20.81:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password"/>-->
              <dynamic msr_name="msr.ecss2" realm="sip:10.0.20.82:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password"/>
      </accounts>
    </config>

    Выполнить обновлениеPerform the update:
    Блок кода
    titleна on ecss2
    sudo apt install ecss-media-server
    Актуализировать конфигурациюRefresh the configuration:
    Блок кода
    titleна on ecss2
    sudo dpkg-reconfigure ecss-media-serverserver
    Check the file and, if necessary, edit it using the commandВыполнить проверку, и при необходимости отредактировать файл командой:
    Блок кода
    titleна on ecss2
    sudo nano /etc/ecss/ecss-media-server/config.xml

    Раскрыть
    titleпримерExample
    Блок кода
    titleпримерExample
    <?xml version="1.0" encoding="utf-8"?>
    <config date="16:54:35 20.02.2025">
      <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.80" 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="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.82" port="5700"/>
      </pbyte>
      <conf_dir path="/etc/ecss/ecss-media-server/conf.d"/>
      <metrics enable="no" msr_name="msr" port="8100"/>
      <rtp>
        <auto addr-v4=""/>
      </rtp>
    </config>
  15. Обновление пакетаUpdating the ecss-media-resources package:

    Блок кода
    titleна on ecss2
    sudo apt install ecss-media-resources
  16. Обновление пакетаUpdating the ecss-web-conf package:

    Блок кода
    titleна on ecss2
    sudo apt install ecss-web-conf

  17. Раскрыть
    titleОбновление пакетов опциональных сервисовUpdating optional service packages

    Updating theОбновление пакета ecss-teleconference-ui package:

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

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

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

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

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

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

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

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

    Блок кода
    titleна on ecss2
    sudo apt install ecss-peeper-client
  18. Переносим актуальные регистрации абонентовMigrating current subscriber registrations:
    Перед переводом keepalived на обновленный хост необходимо скопировать актуальную базу ds с ecss1 (иначе база регистраций будет пустая). Поэтому сначала делаем backup БД Mnesia на Before migrating keepalived to the updated host, you must copy the current ds database from ecss1 (otherwise, the registration database will be empty). Therefore, first back up the Mnesia database on ecss1:
    Блок кода
    titleвыполняется в performed in CoCon
    /node/ds1@ecss1/oasys/backup

    Без форматирования
    /node/ds1@ecss1/oasys/backup      
    Backup was successfully created at the path: "/var/lib/ecss/oasys/Mnesia.ds1@ecss1_20250930081517"

    Останавливаем Stop the ecss-ds на on ecss2:

    Блок кода
    titleна on ecss2
    sudo systemctl stop ecss-ds

    Командой scp копируем backup c ecss1 на Use the scp command to copy backup from ecss1 to ecss2:

    Блок кода
    titleна on ecss2
    scp -r ecss@ecss1:/var/lib/ecss/oasys/Mnesia.ds1@ecss1_20250930081517 /var/lib/ecss/oasys

    Выполняем локальную копию текущей конфигурацииMake the local copy of the running configuration:

    Блок кода
    titleна on ecss2
    sudo cp -a /var/lib/ecss/oasys/Mnesia.ds1@ecss2 /var/lib/ecss/oasys/Mnesia.ds1@ecss2-bkp

    Заменяем локальную конфигурацию на конфигурацию backup c Replace the local configuration with the backup configuration from ecss1:

    Блок кода
    titleна on ecss2
    sudo mv /var/lib/ecss/oasys/Mnesia.ds1@ecss1_20250930081517 /var/lib/ecss/oasys/Mnesia.ds1@ecss2

    Блок кода
    titleна on ecss2
    sudo chown -R ssw:ssw /var/lib/ecss/oasys

    Запустить Start ecss-ds и and ecss-pa-sip (чтобы подгрузились актуальные регистрации абонентовto load the latest subscriber registrations):


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

    Блок кода
    titleна on ecss2
    sudo systemctl start ecss-pa-sip

    Проверить статус сервисов командойCheck the status of services using the /system-status: command;

    Блок кода
    titleвыполняется в performed in CoCon
    /system-status 
    Checking...
    ┌─┬───────────────┬────────────────────────────┬───────────────┬────────────┬──────┐
    │ │     Node      │          Release           │ Erlang nodes  │Mnesia nodes│Uptime│
    ├─┼───────────────┼────────────────────────────┼───────────────┼────────────┼──────┤
    │ │core1@ecss2    │ecss-core-3.17.1.0.1771     │core1@ecss2    │not running │2m 27s│
    │ │ds1@ecss2      │ecss-ds-3.17.1.0.1771       │ds1@ecss2      │ds1@ecss2   │2m 32s│
    │ │md1@ecss2      │ecss-mediator-3.17.1.0.1771 │md1@ecss2      │md1@ecss2   │2m 16s│
    │ │mycelium1@ecss2│ecss-mycelium-3.17.1.0.1771 │mycelium1@ecss2│not running │2m 39s│
    │ │sip1@ecss2     │ecss-pa-sip-3.17.1.0.1771   │sip1@ecss2     │sip1@ecss2  │2m 22s│
    │ │sorm1@ecss2    │ecss-sorm-3.17.1.0.1771     │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.14.16.1.0 │ connected │ 00:00:10  │
    │             │ msr.ecss2 │ 3.17.1.0.28 │ connected │ 00:00:10  │
    └─────────────┴───────────┴─────────────┴───────────┴───────────┘
    Проверить перенос активных регистраций на обновлённый хост. Для этого выполнить контроль зарегистрированных абонентов на одном Verify that active registrations have been transferred to the updated host. To do this, check the registered subscribers on the first (3.14.16) и втором and second (31.177) хостах. Выполнить команду в hosts. Run the command in CoCon:
    Блок кода
    titleвыполняется в performed in CoCon на on ecss2
    /domain/test_domain/sip/user/registered sip *            
    450 make users list ...
    [**********************************************************************] 28mks    
    450 users information read ...
    [**********************************************************************] 1ms      
    Executed on the sip1@ecss2
    ┌───────────────┐
    │ elements: 436 │
    └───────────────┘

    Блок кода
    titleвыполняется в performed in CoCon на on ecss1
    /domain/test_domain/sip/user/registered sip *            
    450 make users list ...
    [**********************************************************************] 28mks    
    450 users information read ...
    [**********************************************************************] 1ms      
    Executed on the sip1@ecss1
    ┌───────────────┐
    │ elements: 438 │
    └───────────────┘
  19. Запуск сервиса Start the keepalived service:

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

4

...

Preparatory actions on ecss1

  1. Подготовить ecss1 к обновлению: для этого перевести весь трафик на ecss2 (команда выполняется на Prepare ecss1 for the update: To do this, redirect all traffic to ecss2 (run this command on ecss1):

    Блок кода
    titleна on ecss1
    sudo systemctl disable --now keepalived.service
  2. Командой ifconfig проверьте, что все VRRP-адреса Use the ifconfig command to verify that all VRRP addresses (VRRP IP-mysql / VRRP IP-SIP1 / VRRP IP-SIP2) находятся на are on ecss2:

    Блок кода
    titleна on ecss2
    ifconfig
  3. После разделения кластера необходимо выключить все ноды на сервере ecss1After splitting the cluster, shut down all nodes on the ecss1 server:
    Блок кода
    titleна on ecss1
    sudo systemctl mask --now ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm
  4. Perform database table migrations.
    Use the following command to check which data is available for transferВыполнить миграции таблиц DB (подробное описание).
    Проверить, какие данные доступны для переноса, можно командой:
    панель
    titleвыполняется в performed in CoCon

    /system/postgresql/migration/check <DATABASE> *
    где DATABASE:

    • address_book
    • audit
    • calls
    • dialer
    • history
    • meetings
    • subscribers

    Без форматированияcode
    titleПример:Example
    /system/postgresql/migration/check address_book *          
    ┌────────────┬────────────────┬────────────────────────────────────┬───────────────────────────────┐
    │     DB     │     Table      │               Status               │          Description          │
    ├────────────┼────────────────┼────────────────────────────────────┼───────────────────────────────┤
    │address_book│contact         │Needs migration.                    │Depends on: `source`.          │
    │            │                │Meegrated: 0 / 1785                 │                               │
    │            │                │                                    │                               │
    │-           │label           │Needs migration.                    │No dependencies.               │
    │            │                │Meegrated: 0 / 5                    │                               │
    │            │                │                                    │                               │
    │-           │phone           │Needs migration.                    │Depends on: `contact`, `label`.│
    │            │                │Meegrated: 0 / 2493                 │                               │
    │            │                │                                    │                               │
    │-           │changes         │Needs migration.                    │No dependencies.               │
    │            │                │Meegrated: 0 / 5                    │                               │
    │            │                │                                    │                               │
    │-           │email           │Needs migration.                    │Depends on: `contact`.         │
    │            │                │Meegrated: 0 / 588                  │                               │
    └────────────┴────────────────┴────────────────────────────────────┴───────────────────────────────┘
    Миграцию выполнить командой
    Migration is performed using the following command:
    Блок кода
    titleвыполняется в performed in CoCon
    /system/postgresql/migration/do <DATABASE> <TABLE>
    Проверить прохождение миграции можно командойYou can check the migration status using the command:
    Блок кода
    titleвыполняется в performed in CoCon
    /system/postgresql/migration/info <DATABASE> <TABLE>

    Без форматированияcode
    titleПример:Example
    /system/postgresql/migration/info address_book              
    ┌────┬────────────┬────────────────────┬──────────┬────────────────┬───────────────────┬───────────────────┐
    │ ID │     DB     │       Table        │  Status  │     Props      │    Start Time     │     End Time      │
    ├────┼────────────┼────────────────────┼──────────┼────────────────┼───────────────────┼───────────────────┤
    │1   │address_book│source              │finished  │current: 2      │22.01.2026 13:14:20│22.01.2026 13:14:20│
    │    │            │                    │          │overall: 2      │                   │                   │
    │2   │address_book│label               │failed    │current: 0      │22.01.2026 13:14:30│22.01.2026 13:14:30│
    │    │            │                    │          │overall: 5      │                   │                   │
    │3   │address_book│changes             │failed    │current: 0      │22.01.2026 13:14:49│22.01.2026 13:14:49│
    │    │            │                    │          │overall: 5      │                   │                   │
    │4   │address_book│contact             │finished  │current: 1785   │22.01.2026 13:14:56│22.01.2026 13:14:56│
    │    │            │                    │          │overall: 1785   │                   │                   │
    │5   │address_book│phone               │finished  │current: 2493   │22.01.2026 13:15:03│22.01.2026 13:15:03│
    │    │            │                    │          │overall: 2493   │                   │                   │
    │6   │address_book│email               │finished  │current: 588    │22.01.2026 13:15:07│22.01.2026 13:15:07│
    │    │            │                    │          │overall: 588    │                   │                   │
    └────┴────────────┴────────────────────┴──────────┴────────────────┴───────────────────┴───────────────────┘

5

...

Updating SSW

...

servcies on ecss1

  1. Выполнить на ecss2 объединение в кластерPerform clustering on ecss2:
    Блок кода
    titleна on ecss2
    sudo ecss-control attach
  2. Активация сервиса Enable the keepalived service:
    Блок кода
    titleна on ecss1
    sudo systemctl enable --now keepalived
  3. Обновление пакетаUpdating the ecss-dns-env package:

    Блок кода
    titleна on ecss1
    sudo apt install ecss-dns-env

    Подсказка
    При обновлении принимать новые конфигурационные файлы -Y.
    После обновления актуализировать конфигурацию командой

    Accept new configuration files during an update using Y.

    After the update, refresh the configuration using the command:
    Блок кода
    titleна on ecss1
    sudo dpkg-reconfigure ecss-dns-env
  4. Обновление пакетаUpdating the ecss-user package:

    Блок кода
    titleна on ecss1
    sudo apt install ecss-user
  5. Обновление пакета Updating the ecss-utils package:

    Блок кода
    titleна on ecss1
    sudo apt install ecss-utils
  6. Обновление пакета Updating the ecss-node package:

    Блок кода
    titleна on ecss1
    sudo apt install ecss-node

    Информация
    titleна on ecss1

    ВОПРОСЫ НА УСТАНОВКУ ecss-node installation questions:

    • ECSS-node ID in DNS format: <Согласно лицензии><According to the license>.
    • Default configuration: yes
    • Global config: yes

    Принимаем все изменения файлов конфигурации Accept all configuration file changes !

  7. Включить сервисы Enable SSW services:

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

    Блок кода
    titleна on ecss1
    sudo systemctl enable ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm
  8. Сервис ecss-sorm на ecss1 сразу замаскировать, так как у нас заявлена работа ecss-sorm на одном хосте в кластере:

    Блок кода
    titleна ecss1
    sudo systemctl mask ecss-sorm
  9.  ecss-mycelium ecss-mediator ecss-core ecss-pa-sip
  10. On ecss1, start the mycelium service and use CoCon to verify that the service is running and that the mycelium nodes of the ecss1 and ecss2 hosts are visibleНа ecss1 запустите сервис mycelium и в CoCon проверьте, что сервис поднялся и видны ноды mycelium хостов ecss1/ecss2:

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

    Без форматированияcode
    titleвыполняется в performed in CoCon
    /system-status
    Checking...
    ┌─┬───────────────┬────────────────────────────┬───────────────────────────────┬────────────┬───────┐
    │ │     Node      │          Release           │         Erlang nodes          │Mnesia nodes│Uptime │
    ├─┼───────────────┼────────────────────────────┼───────────────────────────────┼────────────┼───────┤
    │ │core1@ecss2    │ecss-core-3.17.1.0.1771     │core1@ecss2                    │not running │3h 5m  │
    │ │ds1@ecss2      │ecss-ds-3.17.1.0.1771       │ds1@ecss2                      │ds1@ecss2   │3h 5m  │
    │ │md1@ecss2      │ecss-mediator-3.17.1.0.1771 │md1@ecss2                      │md1@ecss2   │3h 5m  │
    │ │mycelium1@ecss1│ecss-mycelium-3.17.1.0.1771 │mycelium1@ecss1,mycelium1@ecss2│not running │10m 42s│
    │ │mycelium1@ecss2│ecss-mycelium-3.17.1.0.1771 │mycelium1@ecss1,mycelium1@ecss2│not running │3h 5m  │
    │ │sip1@ecss2     │ecss-pa-sip-3.17.1.0.1771   │sip1@ecss2                     │sip1@ecss2  │3h 5m  │
    │ │sorm1@ecss2    │ecss-sorm-3.17.1.0.1771     │sorm1@ecss2                    │not running │3h 5m  │
    └─┴───────────────┴────────────────────────────┴───────────────────────────────┴────────────┴───────┘
    
    All services are started.
    
      Active media resource selected list specific:
    ┌─────────────┬───────────┬───────────────┬───────────┬───────────┐
    │    Node     │    MSR    │      MSR      │ Cc-status │ Cc-uptime │
    │             │           │    version    │           │           │
    ├─────────────┼───────────┼───────────────┼───────────┼───────────┤
    │ core1@ecss2 │ msr.ecss1 │ 3.14.16.1.0   │ connected │ 00:21:09  │
    │             │ msr.ecss2 │ 3.17.1.0.28   │ connected │ 00:00:59  │
    └─────────────┴───────────┴───────────────┴───────────┴───────────┘
  11. Перед запуском Before starting ecss-ds на ecss1 необходимо переименовать директорию on ecss1, the /var/lib/ecss/oasys (создав резервную копию), чтобы загрузить актуальную БД с другого хостаdirectory should be renamed (after creating a backup) in order to load the current database from another host.

    Блок кода
    titleна on ecss1
    sudo mv /var/lib/ecss/oasys /var/lib/ecss/oasys-$(date +%Y%m%d-%H_%M)

    Подсказка

    После этого After that, ecss-ds на хосте ecss1 загрузит БД с on the ecss1 host will load the database from ecss2.



  12. На ecss1 запустите сервис ds и в CoCon проверить, что сервис ds доступен на обоих хостах ecss1/ On ecss1, start the ds service and use CoCon to verify that the ds service is available on both ecss1 and ecss2:
    Блок кода
    titleна on ecss1
    sudo systemctl start ecss-ds

    Без форматированияcode
    titleвыполняется в performed in CoCon
    /system-status
    Checking...
    ┌─┬───────────────┬────────────────────────────┬───────────────────────────────┬───────────────────┬───────┐
    │ │     Node      │          Release           │         Erlang nodes          │   Mnesia nodes    │Uptime │
    ├─┼───────────────┼────────────────────────────┼───────────────────────────────┼───────────────────┼───────┤
    │ │core1@ecss2    │ecss-core-3.17.1.0.1771     │core1@ecss2                    │not running        │3h 13m │
    │ │ds1@ecss1      │ecss-ds-3.17.1.0.1771       │ds1@ecss1,ds1@ecss2            │ds1@ecss1,ds1@ecss2│12s    │
    │ │ds1@ecss2      │ecss-ds-3.17.1.0.1771       │ds1@ecss1,ds1@ecss2            │ds1@ecss1,ds1@ecss2│3h 13m │
    │ │md1@ecss2      │ecss-mediator-3.17.1.0.1771 │md1@ecss2                      │md1@ecss2          │3h 13m │
    │ │mycelium1@ecss1│ecss-mycelium-3.17.1.0.1771 │mycelium1@ecss1,mycelium1@ecss2│not running        │18m 33s│
    │ │mycelium1@ecss2│ecss-mycelium-3.17.1.0.1771 │mycelium1@ecss1,mycelium1@ecss2│not running        │3h 13m │
    │ │sip1@ecss2     │ecss-pa-sip-3.17.1.0.1771   │sip1@ecss2                     │sip1@ecss2         │3h 13m │
    │ │sorm1@ecss2    │ecss-sorm-3.17.1.0.1771     │sorm1@ecss2                    │not running        │3h 12m │
    └─┴───────────────┴────────────────────────────┴───────────────────────────────┴───────────────────┴───────┘
    
    All services are started.
    
      Active media resource selected list specific:
    ┌─────────────┬───────────┬───────────────┬───────────┬───────────┐
    │    Node     │    MSR    │      MSR      │ Cc-status │ Cc-uptime │
    │             │           │    version    │           │           │
    ├─────────────┼───────────┼───────────────┼───────────┼───────────┤
    │ core1@ecss2 │ msr.ecss1 │ 3.14.16.1.0   │ connected │ 00:29:01  │
    │             │ msr.ecss2 │ 3.17.1.0.28   │ connected │ 00:08:50  │
    └─────────────┴───────────┴───────────────┴───────────┴───────────┘
  13. Далее такими же действиями запустить сервисыNext, follow the same steps to start the following services: ecss-mediator, ecss-pa-sip, and ecss-coreследующими командами using the following commands:
    Блок кода
    titleна on ecss1
    sudo systemctl start ecss-core

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

    Блок кода
    titleна on ecss1
    sudo systemctl start ecss-pa-sip
    Проверить статус в Check the status in CoCon:
    Без форматированияcode
    titleРезультатResult:
    /system-status 
    Checking...
    ┌─┬───────────────┬────────────────────────────┬───────────────────────────────┬─────────────────────┬──────┐
    │ │     Node      │          Release           │         Erlang nodes          │    Mnesia nodes     │Uptime│
    ├─┼───────────────┼────────────────────────────┼───────────────────────────────┼─────────────────────┼──────┤
    │ │core1@ecss1    │ecss-core-3.17.1.0.1771     │core1@ecss1,core1@ecss2        │not running          │3m 50s│
    │ │core1@ecss2    │ecss-core-3.17.1.0.1771     │core1@ecss1,core1@ecss2        │not running          │3h 22m│
    │ │ds1@ecss1      │ecss-ds-3.17.1.0.1771       │ds1@ecss1,ds1@ecss2            │ds1@ecss1,ds1@ecss2  │9m 42s│
    │ │ds1@ecss2      │ecss-ds-3.17.1.0.1771       │ds1@ecss1,ds1@ecss2            │ds1@ecss1,ds1@ecss2  │3h 22m│
    │ │md1@ecss1      │ecss-mediator-3.17.1.0.1771 │md1@ecss1,md1@ecss2            │md1@ecss1,md1@ecss2  │5m 22s│
    │ │md1@ecss2      │ecss-mediator-3.17.1.0.1771 │md1@ecss1,md1@ecss2            │md1@ecss1,md1@ecss2  │3h 22m│
    │ │mycelium1@ecss1│ecss-mycelium-3.17.1.0.1771 │mycelium1@ecss1,mycelium1@ecss2│not running          │28m 4s│
    │ │mycelium1@ecss2│ecss-mycelium-3.17.1.0.1771 │mycelium1@ecss1,mycelium1@ecss2│not running          │3h 23m│
    │ │sip1@ecss1     │ecss-pa-sip-3.17.1.0.1771   │sip1@ecss1,sip1@ecss2          │sip1@ecss1,sip1@ecss2│4m 40s│
    │ │sip1@ecss2     │ecss-pa-sip-3.17.1.0.1771   │sip1@ecss1,sip1@ecss2          │sip1@ecss1,sip1@ecss2│3h 22m│
    │ │sorm1@ecss2    │ecss-sorm-3.17.1.0.1771     │sorm1@ecss2                    │not running          │3h 22m│
    └─┴───────────────┴────────────────────────────┴───────────────────────────────┴─────────────────────┴──────┘
    
    All services are started.
    
      Active media resource selected list specific:
    ┌─────────────┬───────────┬───────────────┬───────────┬───────────┐
    │    Node     │    MSR    │      MSR      │ Cc-status │ Cc-uptime │
    │             │           │    version    │           │           │
    ├─────────────┼───────────┼───────────────┼───────────┼───────────┤
    │ core1@ecss1 │ msr.ecss1 │ 3.14.16.1.0   │ connected │ 00:02:37  │
    │ core1@ecss2 │ msr.ecss1 │ 3.14.16.1.0   │ connected │ 00:38:31  │
    │             │ msr.ecss2 │ 3.17.1.0.28   │ connected │ 00:18:20  │
    └─────────────┴───────────┴───────────────┴───────────┴───────────┘
  14. Обновление пакета Updating the ecss-restfs package:
    Блок кода
    titleна on ecss1
    sudo apt install ecss-restfs
  15. Обновление пакета Updating the ecss-media-server package:
    Блок кода
    titleна on ecss1
    sudo apt install ecss-media-server
    Актуализировать конфигурациюRefresh the configuration:
    Блок кода
    titleна on ecss1
    sudo dpkg-reconfigure ecss-media-server

    Проверить и при необходимости исправить вручную файл Check the /etc/ecss/ecss-media-server/config.xml file and manually correct it if necessary.

    Раскрыть
    titleпримерExample
    Без форматированияcode
    titleна on 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>


    Также, для регистрации media-сервера с ecss2 на ecss1 надо убрать ранее добавленные комментарии из файла Also, to register the media server from ecss2 to ecss1, you need to remove the previously added comments from the /etc/ecss/ecss-media-server/conf.d/default.xml на file on ecss2:

    Раскрыть
    titleна on ecss2
    <?xml version="1.0"?>
    <config>
      <accounts>
              <!--<dynamic msr_name="msr.ecss2" realm="sip:10.0.20.81:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password"/>-->
              <dynamic msr_name="msr.ecss2" realm="sip:10.0.20.82:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password"/>
      </accounts>
    </config>
    После чего перезапустить сервисAnd then restart the service:
    Блок кода
    titleна on ecss2
    sudo systemctl restart ecss-media-server.service
  16. Обновление пакетаUpdating the ecss-media-resources package:

    Блок кода
    titleна on ecss1
    sudo apt install ecss-media-resources
  17. Обновление пакета Updating the ecss-web-conf package:

    Блок кода
    titleна on ecss1
    sudo apt install ecss-web-conf
  18. Раскрыть
    titleОбновление пакетов опциональных сервисовUpdating optional service packages

    Updating the Обновление пакета ecss-teleconference-ui package:

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

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

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

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

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

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

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

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

    Блок кода
    titleна on ecss2
    sudo apt install ecss-peeper-client

6.

...

Checking the update

After updating check the SSW servcies operationПосле выполнения обновления проверить работу всех сервисов SSW.

7. 

...

Deleting MySQL

  1. Удалите Delete MySQL, выполнив следующие командыusing the following commands:
    Блок кода
    titleна обоих хостахon both hosts
    sudo apt purge ecss-mysql

    Подсказка

    На вопросы об удалении БД → положительно отвечаем на вопросы - удалить все базы данныхRegarding questions about deleting databases → answer “yes” to the questions – delete all databases