1 Preparing hosts for the update
ECSS-10 version 3.17 supports two licensing types: file-based licensing (with or without a token) and ELM licensing. Depending on the licensing type, different commands will be executed during the update.
You can check which type is used on your SSW with the following command:
performed in CoCon/cluster/storage/ds1/licence/list-licence
The output for file-based license is as follows:
File-based license/cluster/storage/ds1/licence/list-licence ┌──┬───────────────────┬────────────┬──────┬───────────────────┬────────────────────┬────────────┐ │Id│Creation date(UTC) │ SSW ID │Active│ Description │Expiration date(UTC)│ Time left │ ├──┼───────────────────┼────────────┼──────┼───────────────────┼────────────────────┼────────────┤ │1 │31.10.2025 14:16:00│ECSS 010070 │* │Eltex SC softswitc │31.12.2026 23:59:59 │112d 21h 31m│ │0 │ │ECSS DEFAULT│ │Default licence │ │ │ └──┴───────────────────┴────────────┴──────┴───────────────────┴────────────────────┴────────────┘
The output for ELM license is as follows:
ELM license/cluster/storage/ds1/licence/list-licence ┌──┬───────────────────┬────────────┬──────┬────────────────┬────────────────────┬────────────┐ │Id│Creation date(UTC) │ SSW ID │Active│ Description │Expiration date(UTC)│ Time left │ ├──┼───────────────────┼────────────┼──────┼────────────────┼────────────────────┼────────────┤ │1 │02.12.2025 13:51:39│ECSS2000000 │* │ECSS ELM License│02.12.2026 13:51:39 │364d 11h 47m│ │0 │01.01.1990 00:00:00│ECSS DEFAULT│ │Default licence │ │ │ └──┴───────────────────┴────────────┴──────┴────────────────┴────────────────────┴────────────┘
- Preparing
gluster volumefor an update.
If one of the cluster nodes becomes unavailable, issues with the files may arise. Once the node is back online, the files will be out of sync, requiring you to manually initiate synchronization between the nodes.
To resolve this issue, use the cluster.favorite-child-policy parameter.
When enabled, all files that are split will be automatically synchronized with each other according to the specified rule.
To enable this parameter, use the following command:on ecss1sudo gluster volume set ecss_volume cluster.favorite-child-policy size
Result:sudo gluster volume set ecss_volume cluster.favorite-child-policy size volume set: success
Result:sudo gluster volume info Volume Name: ecss_volume Type: Replicate Volume ID: 4bc875b1-f966-44e2-9b3f-04f3a7af83f3 Status: Started Snapshot Count: 0 Number of Bricks: 1 x 2 = 2 Transport-type: tcp Bricks: Brick1: 10.0.10.51:/var/lib/ecss/glusterfs Brick2: 10.0.10.52:/var/lib/ecss/glusterfs Options Reconfigured: cluster.favorite-child-policy: size performance.client-io-threads: off nfs.disable: on transport.address-family: inet storage.fips-mode-rchecksum: on cluster.granular-entry-heal: on
- 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-controltool on both servers.
SIP signaling is exchanged via the SIP-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 managed by thekeepalivedservice on each host.
To redirect traffic to the first server (ecss1), you must stopkeepalivedon the second host (ecss2). In this case, both SIP-VRRP IP addresses will be on the first host (ecss1). Run the following command:on ecss2sudo systemctl disable --now keepalived.service
- Use the
ifconfigcommand to check that all VRRP IP addresses are located on ecss1 (VRRP-SIP1/VRRP-SIP2):on ecss1ifconfig
- All nodes on the server that is being updated first should be masked and have their autorun disabled:on ecss2
sudo systemctl mask --now ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm
After the specified command is executed, the notification will appear.
Warning: The unit file, source configuration file or drop-ins of ecss-ds.service changed on disk. Run 'systemctl daemon-reload' to reload units. Warning: The unit file, source configuration file or drop-ins of ecss-mycelium.service changed on disk. Run 'systemctl daemon-reload' to reload units. Warning: The unit file, source configuration file or drop-ins of ecss-mediator.service changed on disk. Run 'systemctl daemon-reload' to reload units. Warning: The unit file, source configuration file or drop-ins of ecss-core.service changed on disk. Run 'systemctl daemon-reload' to reload units. Warning: The unit file, source configuration file or drop-ins of ecss-pa-sip.service changed on disk. Run 'systemctl daemon-reload' to reload units.
These messages are not an error. Continue the procedure.
- On ecss1, split SSW into two independent servers using the following command:
The
ecss-controlcommand uses standard hostnames: ecss1/ecss2.Check the status:on ecss1sudo ecss-control detach
on ecss1sudo ecss-control status
Result:sudo ecss-control detach detach host: ecss2, ip: 10.0.10.52 complete sudo ecss-control status locked ip: 10.0.10.52
2 Preparing for updating SSW services
- Update the SSW repository:on both hosts
sudo sh -c "echo deb [arch=amd64] http://archive.eltex.org/ssw/jammy/3.18 stable main extras external > /etc/apt/sources.list.d/eltex-ecss10-stable.list"
- Update the packets:on both hosts
sudo apt update
3 Updating SSW services on ecss2
Pay attention
Make a full backup.- Update PostgreSQL:
- Check the addresses where the Postgres database is running, run the following command:on ecss2
psql -Upostgres -decss_storekeeper_db -h localhost -p5439 -c "SELECT node_local_dsn FROM bdr.bdr_nodes;"
Default password is "postgres1"
Example:psql -Upostgres -decss_storekeeper_db -h localhost -p5439 -c "SELECT node_local_dsn FROM bdr.bdr_nodes;" Password for user postgres: node_local_dsn --------------------------------------------------------------------------------------- host=10.0.10.51 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1 host=10.0.10.52 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1 (2 rows) - Disable the Docker container:on ecss2
sudo docker compose -f /srv/ecss/ecss-postgres-bdr-ssw/docker-compose.container.yml down
Examplesudo docker compose -f /srv/ecss/ecss-postgres-bdr-ssw/docker-compose.container.yml down [+] down 2/2 ✔ Container ecss-postgres-bdr-ssw-postgres-container-1 Removed ✔ Network ecss-postgres-bdr-ssw_default Removed
- Remove the old deb packet, since it doesn't support the upgrade option:on ecss2
sudo apt remove ecss-postgres-bdr-ssw
Important!
Execut the remove command, not purge, because 'remove' saves the 'volumes' directory containing the database tables.
Example:sudo apt remove ecss-postgres-bdr-ssw Reading package lists… Ready . . . The following packages will be DELETED: ecss-postgres-bdr-ssw . . . Would you like to continue? [Y/N] y Removing ecss-postgres-bdr-ssw (17.1.0.59+ssw) …
- Install the new deb package:on ecss2
sudo apt install ecss-postgres-bdr-ssw
Important!
During installation, you will be asked the same questions as during the initial installation:
Your answers must match the instructions in the procedure exactly; otherwise, the system will attempt to create a new database, and the installation will fail.Question Answer Example Current IP address of the network interface.
Select an IP address: the same one used during the initial installation,
since replication is tied to specific IP addresses.(checked in step "a", 10.0.10.52 in the example).
10.0.10.52 (must be specified) Installation in a cluster?
Select <Yes> if the package is being installed on a cluster node.Yes (default value) Is this node master?
Important!
Answer NO! Otherwise it'll try to create new bdr,
which will be impossible and will lead to installation error).No (default value) IP address used to connect to the cluster:
Important!
IP of the neighbor node (specified during its installation, checked in step "a", 10.0.10.51 in the example).
10.0.10.51 (must be specified) If the installation is successful, during the replication setup phase, we will seesudo apt install ecss-postgres-bdr-ssw . . . ============================= Checking replication status ============================= BDR replication is configured correctly: the data matches. . . . ======================================================= ======================================================= ecss-postgres-bdr-ssw successfully installed/updated! ======================================================= ======================================================= ┏┓┏┓┏┓┏┳┓┏┓┳┓┏┓┏┓ ┳┓┳┓┳┓ ┏┓┏┓┓ ┏ ┃┃┃┃┗┓ ┃ ┃┓┣┫┣ ┗┓ ┣┫┃┃┣┫ ┗┓┗┓┃┃┃ ┣┛┗┛┗┛ ┻ ┗┛┛┗┗┛┗┛ ┻┛┻┛┛┗ ┗┛┗┛┗┻┛
- After the installation make sure, that the new image is loaded and the docker started. Run the following command:on ecss2
docker ps
Example:docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 80ef72d3b125 git.eltex.loc:4567/ecss/ecss-postgresbdr:3.18 "/docker-entrypoint.…" 8 minutes ago Up 8 minutes 0.0.0.0:5439->5432/tcp, [::]:5439->5432/tcp ecss-postgres-bdr-ssw-postgres-container-1
- Check the addresses where the Postgres database is running, run the following command:
- Updating SSW.
- Updating the
ecss-dns-envpackage:on ecss2sudo apt install ecss-dns-env
- Updating the
ecss-userpackage:on ecss2sudo apt install ecss-user
- Updating the
ecss-utilspackage:on ecss2sudo apt install ecss-utils
- Update the ecss-node package:on ecss2
sudo apt install ecss-node
ecss-nodeinstallation questions:Question Answer Example Cookie for the core node: (specify the unique cookie for the core, the example uses ecss-core-example)
In a cluster cookies should be unique for the nodes of the same type.
ecss-core-example (needs to be entered) Cookie for the ds node: (specify the unique cookie for the ds, the example uses ecss-ds-example)
In a cluster cookies should be unique for the nodes of the same type.
ecss-ds-example (needs to be entered) Cookie for the mediator node: (specify the unique cookie for the mediator, the example uses ecss-mediator-example)
In a cluster cookies should be unique for the nodes of the same type.
ecss-mediator-example (needs to be entered) Cookie for the pa-sip node: (specify the unique cookie for the pa-sip, the example uses ecss-pa-sip-example)
In a cluster cookies should be unique for the nodes of the same type.
ecss-pa-sip-example(needs to be entered)Cookie for the mycelium node: (specify the unique cookie for the mycelium, the example uses ecss-mycelium-example)
In a cluster cookies should be unique for the nodes of the same type.
ecss-mycelium-example (needs to be entered) Accept all configuration file changes
- Updating the
- Enable the nodes.
Enable the SSW services using the following commands:on ecss2sudo systemctl unmask ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm
on ecss2sudo systemctl enable ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm
Pay attention
Before starting the SSW nodes, change the cluster name (to any other name—just make sure it doesn’t match that of a neighbor (ecss1) or any other potential PBX in your network, otherwise it will try to connect to it). To do this, in the
/etc/ecss/ecss-mycelium/mycelium.configfile change the "{cluster_name, 'eltex.test'}" line to "{cluster_name, 'eltex1.test'}", for example.on ecss2sudo nano /etc/ecss/ecss-mycelium/mycelium.config
Example:[ {mycelium_broker, [ {cluster_name, 'eltex1.test'}, {compress_module, elx_data_nif}, {session_gc_timeout, 3000}, {queue_gc_timeout, infinity} . . . - Starting SSW on ecss2. Start the following services:
ecss-myceliumon ecss2sudo systemctl start ecss-mycelium
ecss-dson ecss2sudo systemctl start ecss-ds
ecss-coreon ecss2sudo systemctl start ecss-core
ecss-mediatoron ecss2sudo systemctl start ecss-mediator
Do not start PA-SIP yet
- Check the status of services by running the
system-statuscommand in CoCon:performed in CoCon/system-status Checking... ┌─┬───────────────┬────────────────────────┬───────────────┬────────────┬──────┐ │ │ Node │ Release │ Erlang nodes │Mnesia nodes│Uptime│ ├─┼───────────────┼────────────────────────┼───────────────┼────────────┼──────┤ │ │core1@ecss2 │ecss-core-3.18.0.217 │core1@ecss2 │not running │1m 28s│ │ │ds1@ecss2 │ecss-ds-3.18.0.217 │ds1@ecss2 │ds1@ecss2 │1m 32s│ │ │md1@ecss2 │ecss-mediator-3.18.0.217│md1@ecss2 │md1@ecss2 │1m 23s│ │ │mycelium1@ecss2│ecss-mycelium-3.18.0.217│mycelium1@ecss2│not running │1m 37s│ │ │sorm1@ecss2 │ecss-sorm-3.18.0.217 │sorm1@ecss2 │not running │1m 56s│ └─┴───────────────┴────────────────────────┴───────────────┴────────────┴──────┘ All services are started. Active media resource selected list specific: ┌─────────────┬───────────┬─────────────┬───────────┬───────────┐ │ Node │ MSR │ MSR │ Cc-status │ Cc-uptime │ │ │ │ version │ │ │ ├─────────────┼───────────┼─────────────┼───────────┼───────────┤ │ core1@ecss2 │ msr.ecss1 │ 3.17.1.0.27 │ connected │ 00:00:14 │ │ │ msr.ecss2 │ 3.17.1.0.27 │ connected │ 00:00:16 │ └─────────────┴───────────┴─────────────┴───────────┴───────────┘
- Updating the
ecss-restfspackage.Accept all new configuration files by choosing Y.on ecss2sudo apt install ecss-restfs
- Updating the
ecss-media-serverpackage.on ecss2sudo apt install ecss-media-server
- Updating the
ecss-media-resourcespackage.on ecss2sudo apt install ecss-media-resources
- Updating the
ecss-web-confpackage.on ecss2sudo apt install ecss-web-conf
4 Transferring the load to ecss2
- Start the
keepalivedservice.
Before starting thekeepalivedservice, theecss-pa-sipservice should be started:on ecss2sudo systemctl start ecss-pa-sip
on ecss2sudo systemctl enable --now keepalived
Starting the
ecss-pa-sipandkeepalivedservices transfers traffic from ecss1 to ecss2. This is the first step of switching traffic to ecss2, complete transfer will happen after disabling thekeepalivedservcie on ecss1 during the following steps. - Prepare ecss1 for the update by transfering all traffic to ecss2 (the command is performed on ecss1):on ecss1
sudo systemctl disable --now keepalived.service
- Use the
ifconfigcommand to make sure that all VRRP addresses (VRRP IP-SIP1 / VRRP IP-SIP2) are located on ecss2.on ecss2ifconfig
5 Preparations on ecss1
Pay attention
Do a complete backup- After splitting the cluster is is necessary to disable all nodes on the ecss1 server:on ecss1
sudo systemctl mask --now ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip ecss-sorm
After executing the command the following notification will appear.
Warning: The unit file, source configuration file or drop-ins of ecss-ds.service changed on disk. Run 'systemctl daemon-reload' to reload units. Warning: The unit file, source configuration file or drop-ins of ecss-mycelium.service changed on disk. Run 'systemctl daemon-reload' to reload units. Warning: The unit file, source configuration file or drop-ins of ecss-mediator.service changed on disk. Run 'systemctl daemon-reload' to reload units. Warning: The unit file, source configuration file or drop-ins of ecss-core.service changed on disk. Run 'systemctl daemon-reload' to reload units. Warning: The unit file, source configuration file or drop-ins of ecss-pa-sip.service changed on disk. Run 'systemctl daemon-reload' to reload units.
These messages are not an error. Continue the procedure.
6 Updating the SSW services on ecss1
- Perform clusterization on ecss1:
The
ecss-control attachcommand is run at this step to make replicating Postgres database possible. This behavior is safe because the node has already been shut down.on ecss1sudo ecss-control attach
- Updating PostgreSQL:
- Check on which addresses the Postgres database is connected and run the following command:on ecss1
psql -Upostgres -decss_storekeeper_db -h localhost -p5439 -c "SELECT node_local_dsn FROM bdr.bdr_nodes;"
Example: default password is "postgres1"psql -Upostgres -decss_storekeeper_db -h localhost -p5439 -c "SELECT node_local_dsn FROM bdr.bdr_nodes;" Password for user postgres: node_local_dsn --------------------------------------------------------------------------------------- host=10.0.10.51 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1 host=10.0.10.52 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1 (2 rows) - Disable the Docker container:on ecss1
sudo docker compose -f /srv/ecss/ecss-postgres-bdr-ssw/docker-compose.container.yml down
Example:sudo docker compose -f /srv/ecss/ecss-postgres-bdr-ssw/docker-compose.container.yml down [+] down 2/2 ✔ Container ecss-postgres-bdr-ssw-postgres-container-1 Removed ✔ Network ecss-postgres-bdr-ssw_default Removed
- Delete the old deb package since it doesn't support the upgrade option:on ecss1
sudo apt remove ecss-postgres-bdr-ssw
Important!
Run remove, not purge, because remove saves the volumes directory containing the database tables.
Example:sudo apt remove ecss-postgres-bdr-ssw Reading packet lists… Ready . . . The following packets will be REMOVED: ecss-postgres-bdr-ssw . . . Do you want to continue? [y/n] y Removing ecss-postgres-bdr-ssw (17.1.0.59+ssw) …
- Install the new deb package:on ecss1
sudo apt install ecss-postgres-bdr-ssw
Important!
During the installation the same questions will be asked as during the initial installation:
The answers should be exactly as specified in the procedure, otherwise there will be an attempt to create a new database and the installation will result in error.Question
Answer Example Current IP address of the network interface.
Select an IP: the same one used during the initial installation,
since replication is tied to specific IPs.(checked in step "a" of the instruction, 10.0.10.51 is used in the example)
10.0.10.51 (needs to be selected) Installing to cluster?
Select <Yes>, if the package is installed to the cluster node.Yes (default value) Is this node master?
NO! (Important! If a different answer is given, the impossible attempt
at creating a new bdr will be made and the installation will result in error)No (default value) IP address used to connect to the cluster:
IP of the neighboring node (specified during its installation)
(checked in step "a" of the instruction, 10.0.10.52 is used in the example)
10.0.10.52 (needs to be specified) If the installation is successful, during the replication setup phase, we will seesudo apt install ecss-postgres-bdr-ssw . . . ============================= Checking replication status ============================= BDR replication is configured correctly: the data matches. . . . ======================================================= ======================================================= ecss-postgres-bdr-ssw successfully installed/updated! ======================================================= ======================================================= ┏┓┏┓┏┓┏┳┓┏┓┳┓┏┓┏┓ ┳┓┳┓┳┓ ┏┓┏┓┓ ┏ ┃┃┃┃┗┓ ┃ ┃┓┣┫┣ ┗┓ ┣┫┃┃┣┫ ┗┓┗┓┃┃┃ ┣┛┗┛┗┛ ┻ ┗┛┛┗┗┛┗┛ ┻┛┻┛┛┗ ┗┛┗┛┗┻┛
- After the installation, to make sure that the new image is uploaded and Docker has started, run the following command:on ecss1
docker ps
Example:docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f53bd28c78ff git.eltex.loc:4567/ecss/ecss-postgresbdr:3.18 "/docker-entrypoint.…" 3 minutes ago Up 3 minutes 0.0.0.0:5439->5432/tcp, [::]:5439->5432/tcp ecss-postgres-bdr-ssw-postgres-container-1
- Check on which addresses the Postgres database is connected and run the following command:
- Updating the
ecss-dns-envpackage.on ecss1sudo apt install ecss-dns-env
When updating, accept all new configuration files using Y. - Updating the
ecss-userpackage:on ecss1sudo apt install ecss-user
- Updating the
ecss-utilspackage:on ecss1sudo apt install ecss-utils
- Updating the
ecss-nodepackage:on ecss1sudo apt install ecss-node
on ecss1
ecss-nodeinstallation questionsQuestion Answer Example Cookie for the core node: (specify the unique cookie for the core, the example uses ecss-core-example)
In a cluster configuration, nodes of the similar type should have the same cookies.
ecss-core-example (needs to be entered) Cookie for the ds node: (specify the unique cookie for the ds, the example uses ecss-ds-example)
In a cluster configuration, nodes of the similar type should have the same cookies.
ecss-ds-example (needs to be entered) Cookie for the mediator node: (specify the unique cookie for the mediator, the example uses ecss-mediator-example)
In a cluster configuration, nodes of the similar type should have the same cookies.
ecss-mediator-example (needs to be entered) Cookie for the pa-sip node: (specify the unique cookie for the pa-sip, the example uses ecss-pa-sip-example)
In a cluster configuration, nodes of the similar type should have the same cookies.
ecss-pa-sip-example (needs to be entered) Cookie for the mycelium node: (specify the unique cookie for the mycelium, the example uses ecss-mycelium-example)
In a cluster configuration, nodes of the similar type should have the same cookies.
ecss-mycelium-example (needs to be entered) Accept all configuration file changes
- Enable SSW services: on ecss1
sudo systemctl unmask ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip
on ecss1sudo systemctl enable ecss-ds ecss-mycelium ecss-mediator ecss-core ecss-pa-sip
Attention
Before starting the SSW nodes, change thename of the cluster to the name specified for the ecss2 server (in step 3.4). To do that, in the
/etc/ecss/ecss-mycelium/mycelium.configfile change the line "{cluster_name, 'eltex.test'}," to "{cluster_name, 'eltex1.test'}," for example.on ecss1sudo nano /etc/ecss/ecss-mycelium/mycelium.config
Example:[ {mycelium_broker, [ {cluster_name, 'eltex1.test'}, {compress_module, elx_data_nif}, {session_gc_timeout, 3000}, {queue_gc_timeout, infinity} . . . - Launch mycelium service on ecss1 and use CoCon to make sure that the service is up and mycelium nodes of the ecss1 and ecss2 hosts are visible:on ecss1
sudo systemctl start ecss-mycelium
performed in CoCon/system-status Checking... ┌─┬───────────────┬────────────────────────┬───────────────────────────────┬─────────────────────┬───────┐ │ │ Node │ Release │ Erlang nodes │ Mnesia nodes │Uptime │ ├─┼───────────────┼────────────────────────┼───────────────────────────────┼─────────────────────┼───────┤ │ │core1@ecss2 │ecss-core-3.18.0.249 │core1@ecss1,core1@ecss2 │not running │12m 12s│ │ │ds1@ecss2 │ecss-ds-3.18.0.249 │ds1@ecss1,ds1@ecss2 │ds1@ecss1,ds1@ecss2 │12m 12s│ │ │md1@ecss2 │ecss-mediator-3.18.0.249│md1@ecss1,md1@ecss2 │md1@ecss1,md1@ecss2 │12m 12s│ │ │mycelium1@ecss1│ecss-mycelium-3.18.0.249│mycelium1@ecss1,mycelium1@ecss2│not running │12m 14s│ │ │mycelium1@ecss2│ecss-mycelium-3.18.0.249│mycelium1@ecss1,mycelium1@ecss2│not running │12m 13s│ │ │sip1@ecss2 │ecss-pa-sip-3.18.0.249 │sip1@ecss1,sip1@ecss2 │sip1@ecss1,sip1@ecss2│12m 13s│ └─┴───────────────┴────────────────────────┴───────────────────────────────┴─────────────────────┴───────┘ All services are started. Active media resource selected list specific: ┌─────────────┬───────────┬─────────────┬───────────┬───────────┐ │ Node │ MSR │ MSR │ Cc-status │ Cc-uptime │ │ │ │ version │ │ │ ├─────────────┼───────────┼─────────────┼───────────┼───────────┤ │ core1@ecss2 │ msr.ecss1 │ 3.17.1.0.27 │ connected │ 00:10:50 │ │ │ msr.ecss2 │ 3.18.0.7 │ connected │ 00:10:51 │ └─────────────┴───────────┴─────────────┴───────────┴───────────┘
- On ecss1, start the ds service and use CoCon to verify that the ds service is available on both ecss1 and ecss2:on ecss1
sudo systemctl start ecss-ds
performed in CoCon/system-status Checking... ┌─┬───────────────┬────────────────────────┬───────────────────────────────┬─────────────────────┬───────┐ │ │ Node │ Release │ Erlang nodes │ Mnesia nodes │Uptime │ ├─┼───────────────┼────────────────────────┼───────────────────────────────┼─────────────────────┼───────┤ │ │core1@ecss2 │ecss-core-3.18.0.249 │core1@ecss1,core1@ecss2 │not running │12m 12s│ │ │ds1@ecss1 │ecss-ds-3.18.0.249 │ds1@ecss1,ds1@ecss2 │ds1@ecss1,ds1@ecss2 │12m 14s│ │ │ds1@ecss2 │ecss-ds-3.18.0.249 │ds1@ecss1,ds1@ecss2 │ds1@ecss1,ds1@ecss2 │12m 12s│ │ │md1@ecss2 │ecss-mediator-3.18.0.249│md1@ecss1,md1@ecss2 │md1@ecss1,md1@ecss2 │12m 12s│ │ │mycelium1@ecss1│ecss-mycelium-3.18.0.249│mycelium1@ecss1,mycelium1@ecss2│not running │12m 14s│ │ │mycelium1@ecss2│ecss-mycelium-3.18.0.249│mycelium1@ecss1,mycelium1@ecss2│not running │12m 13s│ │ │sip1@ecss2 │ecss-pa-sip-3.18.0.249 │sip1@ecss1,sip1@ecss2 │sip1@ecss1,sip1@ecss2│12m 13s│ └─┴───────────────┴────────────────────────┴───────────────────────────────┴─────────────────────┴───────┘ All services are started. Active media resource selected list specific: ┌─────────────┬───────────┬─────────────┬───────────┬───────────┐ │ Node │ MSR │ MSR │ Cc-status │ Cc-uptime │ │ │ │ version │ │ │ ├─────────────┼───────────┼─────────────┼───────────┼───────────┤ │ core1@ecss2 │ msr.ecss1 │ 3.17.1.0.27 │ connected │ 00:10:50 │ │ │ msr.ecss2 │ 3.18.0.7 │ connected │ 00:10:51 │ └─────────────┴───────────┴─────────────┴───────────┴───────────┘
- Next, follow the same steps to start the
ecss-mediator,ecss-pa-sip, andecss-coreservices using the following commands:on ecss1sudo systemctl start ecss-core
on ecss1sudo systemctl start ecss-mediator
Check the status in CoCon:on ecss1sudo systemctl start ecss-pa-sip
Result:/system-status Checking... ┌─┬───────────────┬────────────────────────┬───────────────────────────────┬─────────────────────┬───────┐ │ │ Node │ Release │ Erlang nodes │ Mnesia nodes │Uptime │ ├─┼───────────────┼────────────────────────┼───────────────────────────────┼─────────────────────┼───────┤ │ │core1@ecss1 │ecss-core-3.18.0.249 │core1@ecss1,core1@ecss2 │not running │12m 14s│ │ │core1@ecss2 │ecss-core-3.18.0.249 │core1@ecss1,core1@ecss2 │not running │12m 12s│ │ │ds1@ecss1 │ecss-ds-3.18.0.249 │ds1@ecss1,ds1@ecss2 │ds1@ecss1,ds1@ecss2 │12m 14s│ │ │ds1@ecss2 │ecss-ds-3.18.0.249 │ds1@ecss1,ds1@ecss2 │ds1@ecss1,ds1@ecss2 │12m 12s│ │ │md1@ecss1 │ecss-mediator-3.18.0.249│md1@ecss1,md1@ecss2 │md1@ecss1,md1@ecss2 │12m 14s│ │ │md1@ecss2 │ecss-mediator-3.18.0.249│md1@ecss1,md1@ecss2 │md1@ecss1,md1@ecss2 │12m 12s│ │ │mycelium1@ecss1│ecss-mycelium-3.18.0.249│mycelium1@ecss1,mycelium1@ecss2│not running │12m 14s│ │ │mycelium1@ecss2│ecss-mycelium-3.18.0.249│mycelium1@ecss1,mycelium1@ecss2│not running │12m 13s│ │ │sip1@ecss1 │ecss-pa-sip-3.18.0.249 │sip1@ecss1,sip1@ecss2 │sip1@ecss1,sip1@ecss2│12m 14s│ │ │sip1@ecss2 │ecss-pa-sip-3.18.0.249 │sip1@ecss1,sip1@ecss2 │sip1@ecss1,sip1@ecss2│12m 13s│ └─┴───────────────┴────────────────────────┴───────────────────────────────┴─────────────────────┴───────┘ All services are started. Active media resource selected list specific: ┌─────────────┬───────────┬─────────────┬───────────┬───────────┐ │ Node │ MSR │ MSR │ Cc-status │ Cc-uptime │ │ │ │ version │ │ │ ├─────────────┼───────────┼─────────────┼───────────┼───────────┤ │ core1@ecss1 │ msr.ecss1 │ 3.17.1.0.27 │ connected │ 00:10:51 │ │ │ msr.ecss2 │ 3.18.0.7 │ connected │ 00:10:48 │ │ core1@ecss2 │ msr.ecss1 │ 3.17.1.0.27 │ connected │ 00:10:50 │ │ │ msr.ecss2 │ 3.18.0.7 │ connected │ 00:10:51 │ └─────────────┴───────────┴─────────────┴───────────┴───────────┘
- Enable the
keepalivedservice.on ecss1sudo systemctl enable --now keepalived
- Updating the
ecss-restfspackage:on ecss1sudo apt install ecss-restfs
- Updating the
ecss-media-serverpackage:Update the configuration:on ecss1sudo apt install ecss-media-server
To check and fix theна ecss1sudo dpkg-reconfigure ecss-media-server
/etc/ecss/ecss-media-server/config.xmlfile if needed: - Updating the
ecss-media-resourcespackage:on ecss1sudo apt install ecss-media-resources
- Updating the
ecss-web-confpackage:on ecss1sudo apt install ecss-web-conf








