...
| Предупреждение |
|---|
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: | Блок кода |
|---|
/cluster/storage/ds1/licence/show-passport
SSW ID ECSS ХХХХХХ
Description ЭлтексEltex,
Create date 27.12.2024 07:07:09
. . .
Expired date 31.12.2025 23:59:59
. . . |
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. |
Preparing
...
to update the system
...
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 |
See View how many registered subscribers there are, example:
...
| Предупреждение |
|---|
The ecss-control command works with standard hostnames: ecss1/ecss2. |
| Блок кода |
|---|
|
sudo ecss-control detach |
...
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:
Installing ECSS-10 version 3.14.15
...
Update ecss-mysql on host 1:
| Блок кода |
|---|
|
sudo apt install ecss-mysql |
...
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: | Блок кода |
|---|
| sudo nano /etc/ecss/ecss-mycelium/mycelium1.config |
Enter the cluster name, in the example "test_cluster" | Без форматирования |
|---|
%%% -*- mode:erlang -*-
%%% Warning - this config file *must* end with <dot><whitespace>
[
{mycelium_broker, [
{cluster_name, test_cluster},
%{cluster_nodes, []}, % additional nodes
%{tcp_port, 5672},
%{auto_discoverer, true},
{compress_module, elx_data_nif}, %% elx_data_nif | elx_data
{session_gc_timeout, 3000},
{queue_gc_timeout, infinity}
%{info_realm, {local, "/ssw", "ssw", "ssw", 1, [{localhost, 0, {host, "localhost"}, 5672, 10}]}},
%{bind_ip_addresses, [{127,0,0,1}]} % do not forget to include lo interface
]}, |
|
...
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 "yes". |
| Подсказка |
|---|
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 Check the status of services with the command:
| Блок кода |
|---|
|
systemctl is-active ecss-core ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium |
...
| Предупреждение |
|---|
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. "Via" field: - dynamic-ifaces — value = "yes" or "no";
if dynamic-ifaces="no": — master registration proceeds as before. — otherwise, registration occurs ONLY if the interface is listed in the via list in the config. if dynamic-ifaces="yes" or the attribute is not specified, the previously implemented behavior remains. - ifacename — interface name;
- ip — interface IP address.
- If the IP address specified in the via section of the config doesn't exist, it is not processed (skippable). - If a valid IP address is specified, it is appended to the Via header for registration. - If there is no interface in the via config, the bind-address from the config is specified during master registration. For non-master registrations, the behavior remains the same. | Блок кода |
|---|
| title | example for a single host |
|---|
| <?xml version="1.0" encoding="utf-8"?>
<config date="14:39:00 10.03.2023">
<general log-level="3" log-rotate="yes" max-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="192.168.1.40" 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"/>
<codec pcma="1" pcmu="2" ilbc="0" gsm="0" g722="3" 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:192.168.1.40:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password">
<via dynamic-ifaces="no">
<iface name="bond1.75" ip="192.168.1.27"/>
<iface name="bond1.20" ip="192.168.1.28"/>
<iface name="bond1.35" ip="192.168.1.29"/>
<iface name="bond1.36" ip="192.168.1.30"/>
</via>
</dynamic>
</accounts>
<pbyte>
<mcc bind-addr="192.168.1.40" port="5700"/>
</pbyte>
<conf_dir path="/etc/ecss/ecss-media-server/conf.d"/>
<rtp>
<auto addr-v4=""/>
</rtp>
</config> |
| Блок кода |
|---|
| title | example for cluster configuration |
|---|
| <?xml version="1.0" encoding="utf-8"?>
<config date="14:39:00 10.03.2023">
<general log-level="3" log-rotate="yes" max-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="192.168.1.40" 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"/>
<codec pcma="1" pcmu="2" ilbc="0" gsm="0" g722="3" 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:192.168.1.40:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password">
<via dynamic-ifaces="no">
<iface name="bond1.75" ip="192.168.1.27"/>
<iface name="bond1.20" ip="192.168.1.28"/>
<iface name="bond1.35" ip="192.168.1.29"/>
<iface name="bond1.36" ip="192.168.1.30"/>
</via>
</dynamic>
<dynamic msr_name="msr.name" realm="sip:192.168.1.50:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password">
<via dynamic-ifaces="no">
<iface name="bond1.75" ip="192.168.1.27"/>
<iface name="bond1.20" ip="192.168.1.28"/>
<iface name="bond1.35" ip="192.168.1.29"/>
<iface name="bond1.36" ip="192.168.1.30"/>
</via>
</dynamic>
</accounts>
<pbyte>
<mcc bind-addr="192.168.1.40" port="5700"/>
</pbyte>
<conf_dir path="/etc/ecss/ecss-media-server/conf.d"/>
<rtp>
<auto addr-v4=""/>
</rtp>
</config> |
|
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 |
...
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:
Installing ecss-mysql
Update ecss-mysql on the second host:
| Блок кода |
|---|
|
sudo apt install ecss-mysql |
...
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:
| Блок кода |
|---|
sudo nano /etc/ecss/ecss-mycelium/mycelium1.config |
Enter the cluster name, in the example "test_cluster": | Без форматирования |
|---|
%%% -*- mode:erlang -*-
%%% Warning - this config file *must* end with <dot><whitespace>
[
{mycelium_broker, [
{cluster_name, test_cluster},
%{cluster_nodes, []}, % additional nodes
%{tcp_port, 5672},
%{auto_discoverer, true},
{compress_module, elx_data_nif}, %% elx_data_nif | elx_data
{session_gc_timeout, 3000},
{queue_gc_timeout, infinity}
%{info_realm, {local, "/ssw", "ssw", "ssw", 1, [{localhost, 0, {host, "localhost"}, 5672, 10}]}},
%{bind_ip_addresses, [{127,0,0,1}]} % do not forget to include lo interface
]}, |
|
...
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 |
...
Check the status of services with the command:
| Блок кода |
|---|
|
systemctl is-active ecss-core ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium |
...
| Информация |
|---|
/systemctl is-active ecss-core ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium inactive inactive inactive inactive inactive |
Assembling a
...
cluster
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 command 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.
| Без форматированияcode |
|---|
| title | выполняется в performed in CoCon |
|---|
|
/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:
| Без форматированияcode |
|---|
| title | выполняется в performed in CoCon |
|---|
|
/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 |
Uninstalling ECSS
...
components
Uninstalling ecss-mysql
To remove the ecss-mysql package while preserving it, use the following command:
...
| Без форматирования |
|---|
sudo apt purge ecss-media-server |
Removing
...
unneeded packages
To remove remaining packages that are no longer needed, use the autoremove switch:
...
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.
Verifying the update
After the update, check that all SSW services are working properly.