It is recommended to upgrade from a fresh installation of the operating system (Ubuntu Server 18.04.x LTS 64-bit) and a new disk layout.
This section describes the process for updating the operating system and ECSS-10 software components when, for some reason, a fresh installation is not possible.
Version 3.14.15 changes the algorithm for checking license passport validity. Previous versions allowed licenses with no expiration date, but this is no longer allowed. To avoid issues after the update, we recommend checking the license passport parameters first with the following command:
If the Expired date line is missing (passport does not have an expiration date), it is necessary to contact the Eltex sales department on foreign.sales@eltex-co.ru to renew your passport and license before starting the renewal. |
Run a full backup.
If you need the latest billing data, you must finalize the current CDR and download it to a secure location, such as:
/domain/bsk.test/cdr/make_finalize_cdr bsk3 Created file(s): cdrbsk3_20210330_11_05_38_t.csv |
View how many registered subscribers there are, example:
/domain/bsk.test/sip/user/registered * .... ┌───────────────┐ │ elements: 320 │ └───────────────┘ |
When upgrading a cluster, upgrade servers one at a time. This way, one server will always be running during an upgrade, and services won't be interrupted. To split the cluster, use the ecss-control tool on both servers.
Divert traffic to the second server by disabling keepalive on the first host:
sudo systemctl stop keepalived.service |
Use the ifconfig command to verify that all IP addresses are on ecss2.
Split the SSW into two independent servers using the following command:
The ecss-control command works with standard hostnames: ecss1/ecss2. |
sudo ecss-control detach |
sudo ecss-control detach detach host: ecss2, ip: 10.10.0.2 complete sudo ecss-control status locked ip: 10.10.0.2 |
After splitting the cluster, you must shut down all nodes on the server that will be updated first:
sudo systemctl stop ecss-mediator.service sudo systemctl stop ecss-pa-sip.service sudo systemctl stop ecss-core.service sudo systemctl stop ecss-ds.service sudo systemctl stop ecss-mycelium.service |
Update:
sudo apt update |
Update ecss-mysql on host 1:
sudo apt install ecss-mysql |
If a problem occurs with any database, you should restart the aparmor service, then remove the database from mysql, and then reinstall ecss-mysql:
sudo systemctl restart apparmor.service mysql -uroot -p<root_mysql_password> -e 'DROP DATABASE <проблемная база данных>' sudo apt install ecss-mysql |
Monitor the replica status using SHOW SLAVE STATUS; and wait until the Seconds_Behind_Master indicator becomes equal to "0";
Install the ecss-node package:
sudo apt install ecss-node |
During the installation process, you'll be asked whether to preserve current versions of configuration files. It's recommended to install the new ones, i.e., answer "Y." |
During installation of the ecss-node package, the system will reset the cluster configuration to the default value. Therefore, you will need to edit the file /etc/ecss/ecss-mycelium/mycelium1.config. Run the command:
Enter the cluster name, in the example "test_cluster"
|
Install packages containing the main subsystems:
sudo apt install ecss-restfs |
sudo apt install ecss-media-server |
sudo apt install ecss-media-resources |
sudo apt install ecss-web-conf |
When installing ecss-media-server, it is recommended to answer "yes" to the configuration question. |
During the installation process, you'll be asked whether to preserve current versions of configuration files. It's recommended to install the new ones, i.e., answer "Y." |
Start the services with the following commands:
sudo systemctl start ecss-mycelium.service |
sudo systemctl start ecss-ds.service |
sudo systemctl start ecss-core.service |
sudo systemctl start ecss-pa-sip.service |
sudo systemctl start ecss-mediator.service |
Check the status of services with the command:
systemctl is-active ecss-core ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium |
Check the status of services in CoCon:
/system-status Checking... ┌─┬───────────────┬──────────────────────────┬───────────────┬────────────┬──────┐ │ │ Node │ Release │ Erlang nodes │Mnesia nodes│Uptime│ ├─┼───────────────┼──────────────────────────┼───────────────┼────────────┼──────┤ │ │core1@ecss1 │ecss-core-3.14.15.1163 │core1@ecss1 │not running │3m 45s│ │ │ds1@ecss1 │ecss-ds-3.14.15.1163 │ds1@ecss1 │ds1@ecss1 │3m 51s│ │ │md1@ecss1 │ecss-mediator-3.14.15.1163│md1@ecss1 │md1@ecss1 │3m 32s│ │ │mycelium1@ecss1│ecss-mycelium-3.14.15.1163│mycelium1@ecss1│not running │3m 58s│ │ │sip1@ecss1 │ecss-pa-sip-3.14.15.1163 │sip1@ecss1 │sip1@ecss1 │3m 39s│ └─┴───────────────┴──────────────────────────┴───────────────┴────────────┴──────┘ All services are started. Active media resource selected list specific: ┌─────────────┬───────────┬─────────────┬───────────┬───────────┐ │ Node │ MSR │ MSR │ Cc-status │ Cc-uptime │ │ │ │ version │ │ │ ├─────────────┼───────────┼─────────────┼───────────┼───────────┤ │ core1@ecss1 │ msr.ecss1 │ 3.14.15.221 │ connected │ 00:02:28 │ │ │ msr.ecss2 │ 3.14.14.24 │ connected │ 00:02:28 │ └─────────────┴───────────┴─────────────┴───────────┴───────────┘ |
In version 3.14.15 it became possible to use any host names (there are no standard names), so we need to specify which names we will use. To do this, run the following command (in the example, the host names are ecss1/ecss2):
/system/clusters/set [ecss1, ecss2] |
/system/clusters/set [ecss1, ecss2] Success: System initialized on hosts: ["ecss2","ecss1"] /system/clusters/list ┌────────┬──────────────┬──────────────┐ │ Role │ Cluster │ Nodes │ ├────────┼──────────────┼──────────────┤ │storage │ds1 │ds1@ecss2 │ │ │ │ds1@ecss1 │ │core │core1 │core1@ecss2 │ │ │ │core1@ecss1 │ │adapter │sip1 │sip1@ecss2 │ │ │ │sip1@ecss1 │ │adapter │megaco1 │megaco1@ecss2 │ │ │ │megaco1@ecss1 │ │adapter │sigtran1 │sigtran1@ecss2│ │ │ │sigtran1@ecss1│ │adapter │sorm1 │sorm1@ecss2 │ │ │ │sorm1@ecss1 │ │mediator│md1 │md1@ecss2 │ │ │ │md1@ecss1 │ │virtual │.system_bridge│ │ │virtual │.virtual │ │ └────────┴──────────────┴──────────────┘ |
If you use multiple VLANs for the signaling network, you must adjust the /etc/ecss/ecss-media-server/config.xml configuration file by defining the "via" parameter: via — specifies a list of interfaces that can be sent in the "Via" field of the "SIP REGISTER" message:
- If the IP address specified in the via section of the config doesn't exist, it is not processed (skippable).
|
The ecss1 host has been updated. Enable traffic with the command:
sudo systemctl start keepalived.service |
To redirect traffic to the updated server, you need to stop the keepalived service on the second server:
sudo systemctl stop keepalived.service |
If you need the latest billing data, you need to finalize the current cdr and download it to a safe place, for example:
admin@mycelium1@ecss1:/$ domain/bsk.test/cdr/make_finalize_cdr bsk3 Created file(s): cdrbsk3_20220128_10_06_40_t.csv |
Shut down all nodes on the server that will be updated second:
sudo systemctl stop ecss-mediator.service sudo systemctl stop ecss-pa-sip.service sudo systemctl stop ecss-core.service sudo systemctl stop ecss-ds.service sudo systemctl stop ecss-mycelium.service |
Perform update:
sudo apt update |
Update ecss-mysql on the second host:
sudo apt install ecss-mysql |
If a problem occurs with any database, you should restart the aparmor service, then remove the database from mysql, and then reinstall ecss-mysql:
sudo systemctl restart apparmor.service mysql -uroot -p<root_mysql_password> -e 'DROP DATABASE <проблемная база данных>' sudo apt install ecss-mysql |
Monitor the replica status using SHOW SLAVE STATUS; and wait until the Seconds_Behind_Master indicator becomes equal to "0";
Install the ecss-node package:
sudo apt install ecss-node |
During the installation process, you'll be asked whether to preserve current versions of configuration files. It's recommended to install the new ones, i.e., answer "Y." |
During installation of the ecss-node package, the system will reset the cluster configuration to the default value. Therefore, you will need to edit the /etc/ecss/ecss-mycelium/mycelium1.config file. Run the command:
Enter the cluster name, in the example "test_cluster":
|
Install the packages containing the core subsystems:
sudo apt install ecss-restfs |
sudo apt install ecss-media-server |
sudo apt install ecss-media-resources |
sudo apt install ecss-web-conf |
When installing ecss-media-server, it is recommended to answer the configuration question affirmatively. |
During the installation process, you'll be asked whether to preserve current versions of configuration files. It's recommended to install the new ones, i.e., answer "Y." |
Check the status of services with the command:
systemctl is-active ecss-core ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium |
Services must be in "inactive" status:
/systemctl is-active ecss-core ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium |
After completing the steps in the previous section, you can connect servers to each other to form a cluster. On the first server, run the sudo ecss-control attach command.
Example:
sudo ecss-control attach unlock ip: 10.10.0.2, rules: 7 complete sudo ecss-control status all nodes attached |
Start the services with the following commands:
sudo systemctl start ecss-mycelium.service |
sudo systemctl start ecss-ds.service |
sudo systemctl start ecss-core.service |
sudo systemctl start ecss-pa-sip.service |
sudo systemctl start ecss-mediator.service |
Check that the update is progressing. The CLI system-status command should show that all nodes in the cluster and subsystem versions are the same.
/system-status Checking... ┌─┬───────────────┬──────────────────────────┬───────────────────────────────┬─────────────────────┬──────┐ │ │ Node │ Release │ Erlang nodes │ Mnesia nodes │Uptime│ ├─┼───────────────┼──────────────────────────┼───────────────────────────────┼─────────────────────┼──────┤ │ │core1@ecss1 │ecss-core-3.14.15.1163 │core1@ecss1,core1@ecss2 │not running │1h 5m │ │ │core1@ecss2 │ecss-core-3.14.15.1163 │core1@ecss1,core1@ecss2 │not running │3m 8s │ │ │ds1@ecss1 │ecss-ds-3.14.15.1163 │ds1@ecss1,ds1@ecss2 │ds1@ecss1,ds1@ecss2 │1h 5m │ │ │ds1@ecss2 │ecss-ds-3.14.15.1163 │ds1@ecss1,ds1@ecss2 │ds1@ecss1,ds1@ecss2 │59s │ │ │md1@ecss1 │ecss-mediator-3.14.15.1163│md1@ecss1,md1@ecss2 │md1@ecss1,md1@ecss2 │1h 5m │ │ │md1@ecss2 │ecss-mediator-3.14.15.1163│md1@ecss1,md1@ecss2 │md1@ecss1,md1@ecss2 │2m 53s│ │ │mycelium1@ecss1│ecss-mycelium-3.14.15.1163│mycelium1@ecss1,mycelium1@ecss2│not running │1h 5m │ │ │mycelium1@ecss2│ecss-mycelium-3.14.15.1163│mycelium1@ecss1,mycelium1@ecss2│not running │3m 17s│ │ │sip1@ecss1 │ecss-pa-sip-3.14.15.1163 │sip1@ecss1,sip1@ecss2 │sip1@ecss1,sip1@ecss2│1h 5m │ │ │sip1@ecss2 │ecss-pa-sip-3.14.15.1163 │sip1@ecss1,sip1@ecss2 │sip1@ecss1,sip1@ecss2│2m 57s│ └─┴───────────────┴──────────────────────────┴───────────────────────────────┴─────────────────────┴──────┘ All services are started. Active media resource selected list specific: ┌─────────────┬───────────┬─────────────┬───────────┬───────────┐ │ Node │ MSR │ MSR │ Cc-status │ Cc-uptime │ │ │ │ version │ │ │ ├─────────────┼───────────┼─────────────┼───────────┼───────────┤ │ core1@ecss1 │ msr.ecss1 │ 3.14.15.221 │ connected │ 01:04:13 │ │ │ msr.ecss2 │ 3.14.15.221 │ connected │ 00:15:04 │ │ core1@ecss2 │ msr.ecss1 │ 3.14.15.221 │ connected │ 00:01:59 │ │ │ msr.ecss2 │ 3.14.15.221 │ connected │ 00:01:57 │ └─────────────┴───────────┴─────────────┴───────────┴───────────┘ |
The ecss2 host is updated, start the traffic with the command:
sudo systemctl start keepalived.service |
Make sure subscribers are registered. Check the number of registered subscribers; it should be approximately the same as when the update began:
/domain/bsk.test/sip/user/registered * 320 make users list ... [**********************************************************************] 223mks 320 users information read ... [**********************************************************************] 22ms Executed on the sip1@ecss1 ┌──────────────────┬────────┬─────────┬─────────────────────────────────────────────────────────────────────┬────────────────────────────────────────────────────────────────────┐ │ Interface │ Number │ Dynamic │ Contact │ Registration info │ ├──────────────────┼────────┼─────────┼─────────────────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────────────────┤ ... ┌───────────────┐ │ elements: 320 │ └───────────────┘ |
Calls are processed in all directions, CFC plays messages, Web-conf and other web services are running, and no errors are written to the system log. Shell command:
journalctl -f |
To remove the ecss-mysql package while preserving it, use the following command:
sudo apt remove ecss-mysql |
This does not delete the databases and configuration files.
To completely remove the package along with its databases and configuration files, use the purge key:
sudo apt purge ecss-mysql |
Confirmation of deletion is required for each database. After this, the /var/lib/ecss-mysql/ directory will be cleared.
If you need to completely remove all mysql* packages:
Removing the mysql-* packages will also remove the ecss-web-conf and ecss-restfs packages. |
When uninstalling ecss-restfs, you are asked whether you want to delete call records:

And also about deleting all MySQL databases:

sudo apt purge mysql-* |
To remove the package, use the command:
sudo apt purge ecss-node |
To remove the package while preserving configuration files, use the command:
sudo apt remove ecss-media-server |
However, configuration files remain in the /etc/ecss/ecss-media-server/ directory.
For a complete removal, use the command:
sudo apt purge ecss-media-server |
To remove remaining packages that are no longer needed, use the autoremove switch:
sudo apt autoremove |
You can use masks to remove multiple packages at once (see man apt).
Example command to remove all ecss packages:
sudo apt purge ecss-* |
To completely remove all ECSS components, run these three commands:
sudo apt purge ecss-* sudo apt purge mysql-* sudo apt autoremove |
Afterwards, you should reboot the server to remove some processes from RAM.
Logs remain in the /var/log/ecss/security/ directory for service purposes. They cannot be deleted using standard tools. If you need to clear this directory, please contact technical support. |
In some cases, instead of reinstalling a package, you only need to change its configuration. In this case, use the dpkg-reconfigure <package_name> command. You can also use commands from the debconf-utils package if necessary.