...
- Preparing the ecss1 partition for use with PostgreSQL:
Viewing the partition mounting for ecss-mysql:
Блок кода title on ecss1 cat /etc/fstab
Блок кода 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-sswdirectory 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-sswdirectory for PostgreSQL:
Update theБлок кода title on both hosts sudo mount --bind /var/lib/ecss-mysql /srv/ecss/ecss-postgres-bdr-ssw
/etc/fstabfile → 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
Блок кода 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
Install the new Postgres database (first on ecss1, then on ecss2):
Блок кода title 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 on all hosts, first on ecss1, then on ecss2 sudo apt install ecss-postgres-bdr-ssw
Информация 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).
- Verify that the replication configuration is correct.
During installation, thepostgresbdr_ssw.shscript is installed in the/srv/ecss/ecss-postgres-bdr-sswdirectory.
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.
Блок кода 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) Updating the
ecss-dns-env package:Блок кода title on ecss2 wsudo 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
Update the
ecss-userpackage:Блок кода title on ecss2 sudo apt install ecss-user
Update the
ecss-utilspackage:Блок кода title on ecss2 sudo apt install ecss-utils
Update the
ecss-nodepackage:Блок кода 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.
Perform
СoConusers migration (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):- Enable the nodes.
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
Блок кода title on ecss2 sudo systemctl enable ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip
- Starting SSW on ecss2. Enable the following services:
ecss-mycelium
ecss-dsБлок кода title on ecss2 sudo systemctl start ecss-mycelium
ecss-coreБлок кода title on ecss2 sudo systemctl start ecss-ds
ecss-mediatorБлок кода title on ecss2 sudo systemctl start ecss-core
Блок кода title on ecss2 sudo systemctl start ecss-mediator
Предупреждение DO NOT START PA-SIP YET!
Check the service status by running the
system-statuscommand in CoCon:Блок кода 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│ │ │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 │ └─────────────┴───────────┴─────────────┴───────────┴───────────┘
- 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.Блок кода 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:
Check the migration using the following command:Блок кода title performed in CoCon /system/postgresql/migration/do <DATABASE> <TABLE>
Блок кода title performed in CoCon /system/postgresql/migration/info <DATABASE> <TABLE>
Блок кода 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 │ │ │ └────┴────────────┴────────────────────┴──────────┴────────────────┴───────────────────┴───────────────────┘
- Updating the
ecss-restfspacket package.Подсказка Accept all new configuration files using Y. Блок кода title on ecss2 sudo apt install ecss-restfs
Обновление пакета Updating the
ecss-media-serverpackage.Предупреждение 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:
Актуализировать конфигурациюRefresh the configuration:Блок кода title на on ecss2 sudo apt install ecss-media-server
Выполнить проверку, и при необходимости отредактировать файл командойCheck the file and, if necessary, edit it using the command:Блок кода title на on ecss2 sudo dpkg-reconfigure ecss-media-server
Блок кода 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>Обновление пакетаUpdating the
ecss-media-resourcespackage:Блок кода title на on ecss2 sudo apt install ecss-media-resources
Обновление пакетаUpdating the
ecss-web-confpackage:Блок кода title на on ecss2 sudo apt install ecss-web-conf
Раскрыть title Обновление пакетов опциональных сервисов Updating optional service packages Updating theОбновление пакета
ecss-teleconference-uipackage:Блок кода title на on ecss2 sudo apt install ecss-teleconference-ui
Обновление пакета Updating the
ecss-crm-serverpackage:Блок кода title на on ecss2 sudo apt install ecss-crm-server
Обновление пакета Updating the
ecss-cc-uipackage:Блок кода title на on ecss2 sudo apt install ecss-cc-ui
Обновление пакета Updating the
ecss-call-apipackage:Блок кода title на on ecss2 sudo apt install ecss-call-api
Обновление пакета Updating the
ecss-peeper-clientpackage:Блок кода title на on ecss2 sudo apt install ecss-peeper-client
- Переносим актуальные регистрации абонентов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;
Проверить перенос активных регистраций на обновлённый хост. Для этого выполнить контроль зарегистрированных абонентов на одном 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 /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 │ └─────────────┴───────────┴─────────────┴───────────┴───────────┘
Блок кода 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 │ └───────────────┘
Запуск сервиса Start the
keepalivedservice:Блок кода title на on ecss2 sudo systemctl enable --now keepalived
4
...
Preparatory actions on ecss1
Подготовить 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
Командой 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
- После разделения кластера необходимо выключить все ноды на сервере 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
- Выполнить миграции таблиц DB (подробное описание).
Проверить, какие данные доступны для переноса, можно командойPerform database table migrations.
Use the following command to check which data is available for transfer:панель title выполняется в performed in CoCon /system/postgresql/migration/check <DATABASE> *где DATABASE:address_bookauditcallsdialerhistorymeetingssubscribers
Миграцию выполнить командойБез форматирования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:
Проверить прохождение миграции можно командойYou can check the migration status using the command:Блок кода title выполняется в performed in CoCon /system/postgresql/migration/do <DATABASE> <TABLE>
Блок кода 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
- Выполнить на ecss2 объединение в кластерPerform clustering on ecss2:
Блок кода title на on ecss2 sudo ecss-control attach
- Активация сервиса Enable the keepalived service:
Блок кода title на on ecss1 sudo systemctl enable --now keepalived
Обновление пакетаUpdating the
ecss-dns-envpackage:Блок кода title на on ecss1 sudo apt install ecss-dns-env
После обновления актуализировать конфигурацию командойПодсказка При обновлении принимать новые конфигурационные файлы -Y.
After the update, refresh the configuration using the command:Accept new configuration files during an update using Y.
Блок кода title на on ecss1 sudo dpkg-reconfigure ecss-dns-env
Обновление пакетаUpdating the
ecss-userpackage:Блок кода title на on ecss1 sudo apt install ecss-user
Обновление пакета Updating the
ecss-utilspackage:Блок кода title на on ecss1 sudo apt install ecss-utils
Обновление пакета Updating the
ecss-nodepackage:Блок кода 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 !
Включить сервисы Enable SSW services:
Блок кода title на on ecss1 sudo systemctl unmask ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip
Блок кода title на on ecss1 sudo systemctl enable ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip
На ecss1 запустите сервис mycelium и в CoCon проверьте, что сервис поднялся и видны ноды mycelium хостов ecss1/ecss2On 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:
Блок кода 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 │ └─────────────┴───────────┴───────────────┴───────────┴───────────┘
Перед запуском 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.
- На 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 │ └─────────────┴───────────┴───────────────┴───────────┴───────────┘
- Далее такими же действиями запустить сервисы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
Проверить статус в Check the status in CoCon:Блок кода title на on ecss1 sudo systemctl start ecss-pa-sip
Без форматирования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 │ └─────────────┴───────────┴───────────────┴───────────┴───────────┘
- Обновление пакета Updating the
ecss-restfspackage:Блок кода title на ecss1 sudo apt install ecss-restfs
- Обновление пакета Updating the
ecss-media-serverpackage:
Актуализировать конфигурациюRefresh the configuration:Блок кода title на ecss1 sudo apt install ecss-media-server
Блок кода title на on ecss1 sudo dpkg-reconfigure ecss-media-server
Проверить и при необходимости исправить вручную файл Check the
/etc/ecss/ecss-media-server/config.xmlfile and manually correct it if necessary.
Также, для регистрации media-сервера с ecss2 на ecss1 надо убрать ранее добавленные комментарии из файла Also, to register the media server from ecss2 to ecss1, you need to remove the previously added comments from theРаскрыть 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>
/etc/ecss/ecss-media-server/conf.d/default.xmlна file on ecss2:
После чего перезапустить сервисAnd then restart the service:Раскрыть 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>Блок кода title на on ecss2 sudo systemctl restart ecss-media-server.service
Обновление пакетаUpdating the
ecss-media-resourcespackage:Блок кода title на on ecss1 sudo apt install ecss-media-resources
Обновление пакета Updating the
ecss-web-confpackage:Блок кода title на on ecss1 sudo apt install ecss-web-conf
Раскрыть title Обновление пакетов опциональных сервисов Updating optional service packages Updating the Обновление пакета
ecss-teleconference-uipackage:Блок кода title на on ecss1 sudo apt install ecss-teleconference-ui
Обновление пакета Updating the
ecss-crm-serverpackage:Блок кода title на on ecss1 sudo apt install ecss-crm-server
Обновление пакета Updating the
ecss-cc-uipackage:Блок кода title на on ecss1 sudo apt install ecss-cc-ui
Обновление пакета Updating the
ecss-call-apipackage:Блок кода title на on ecss2 sudo apt install ecss-call-api
Обновление пакета Updating the
ecss-peeper-clientpackage:Блок кода title на on ecss2 sudo apt install ecss-peeper-client
6.
...
Checking the update
7.
...
Deleting MySQL
- Удалите 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