Регламент обновления/деинсталляции ECSS
Обновление с версии 3.14.14 на 3.14.15
Рекомендуется производить обновление с новой установки операционный системы (Ubuntu Server 18.04.x LTS 64bit) и новой разметки дискового пространства.
В данном разделе описан процесс обновления операционной системы и программных компонентов ECSS-10, когда по каким-либо причинам новая установка невозможна.
Подготовка к обновлению системы
Выполнить полный «бэкап» (см. «Регламентное обслуживание и резервное копирование»).
Если нужны последние данные биллинга, то необходимо финализировать текущую cdr и скачать в надежное место, например:
/domain/bsk.test/cdr/make_finalize_cdr bsk3 Created file(s): cdrbsk3_20210330_11_05_38_t.csv
Посмотреть, сколько зарегистрированных абонентов, пример:
/domain/bsk.test/sip/user/registered * .... ┌───────────────┐ │ elements: 320 │ └───────────────┘
При обновлении кластера следует обновлять сервера по очереди. Таким образом, при обновлении один из серверов будет всегда запущен и работа сервисов не будет прервана. Для разделения кластера следует использовать инструмент ecss-control на обоих серверах (Описание команд утилиты приведено в «Приложении Н»).
Переведите трафик на второй сервер, выключив keepalive на первом хосте:
на ecss1
sudo systemctl stop keepalived.service
Командой ifconfig проверьте, что все IP-адреса находятся на ecss2.
Выполните разделение SSW на два независимых сервера следующей командой:
на ecss1
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
После разделения кластера необходимо выключить все ноды на сервере, который будет обновляться первым:
на ecss1
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
Выполнить обновление:
на ecss1
sudo apt update
Установка ECSS-10 версии 3.14.15
Подробнее в разделе «Инсталляция пакетов ECSS».
Установка ecss-mysql
Обновите ecss-mysql на первом хосте:
sudo apt install ecss-mysql
Если возникла проблема с какой-либо базой данных, следует произвести перезагрузку сервиса aparmor, затем удалить базу данных из mysql, а после снова установить ecss-mysql:
sudo systemctl restart apparmor.service mysql -uroot -p<root_mysql_password> -e 'DROP DATABASE <проблемная база данных>' sudo apt install ecss-mysql
- Произведите мониторинг состояния реплики с помощью SHOW SLAVE STATUS; и дождитесь, пока показатель Seconds_Behind_Master станет равным NULL;
Установка ecss-node
Установите пакет ecss-node:
sudo apt install ecss-node
В процессе установки будут задаваться вопросы о сохранении текущих версий конфигурационных файлов. Рекомендуется ставить новые, т. е. отвечать «Y».
на ecss1
Во время установки пакета ecss-node , система сбросит конфигурацию кластера на дефолтное значение. Поэтому потребуется отредактировать файл /etc/ecss/ecss-mycelium/mycelium1.config.
Выполните команду:
sudo nano /etc/ecss/ecss-mycelium/mycelium1.config
Пропишите имя кластера, в примере "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 ]},
Установка остальных пакетов
Установите пакеты, содержащие основные подсистемы:
sudo apt upgrade
При установке ecss-media-server рекомендуется ответить на вопрос о конфигурировании утвердительно.
В процессе установки будут задаваться вопросы о сохранении текущих версий конфигурационных файлов. Рекомендуется ставить новые, т. е. отвечать «Y».
Запустите сервисы следующими командами:
на ecss1
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
Проверите статус сервисов командой:
systemctl is-active ecss-core ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium
Проверьте состояние сервисов в CoCon:
выполняется в 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 │
└─────────────┴───────────┴─────────────┴───────────┴───────────┘
В версии 3.14.15 появилась возможность использовать любые имена хостов, поэтому нужно указать какие имена мы будем использовать, для этого выполнить следующую команду (в примере имена хостов ecss1/ecss2):
выполняется в CoCon
/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 │ │ └────────┴──────────────┴──────────────┘
Хост ecss1 обновлен, активизируйте трафик командой:
на ecss1
sudo systemctl start keepalived.service
Обновление второго сервера, если система в кластере
Чтобы перевести трафик на обновленный сервер, необходимо на втором сервере остановить службу keepalived:
на ecss2
sudo systemctl stop keepalived.service
Если нужны последние данные биллинга, то необходимо финализировать текущую cdr и скачать в надежное место, например:
admin@mycelium1@ecss1:/$ domain/bsk.test/cdr/make_finalize_cdr bsk3 Created file(s): cdrbsk3_20220128_10_06_40_t.csv
Выключить все ноды на сервере, который будет обновляться вторым:
на ecss2
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
Выполнить обновление:
на ecss2
sudo apt update
Установка ecss-mysql
Обновите ecss-mysql на втором хосте:
на ecss2
sudo apt install ecss-mysql
Если возникла проблема с какой-либо базой данных, следует произвести перезагрузку сервиса aparmor, затем удалить базу данных из mysql, а после снова установить ecss-mysql:
sudo systemctl restart apparmor.service mysql -uroot -p<root_mysql_password> -e 'DROP DATABASE <проблемная база данных>' sudo apt install ecss-mysql
- Произведите мониторинг состояния реплики с помощью SHOW SLAVE STATUS; и дождитесь, пока показатель Seconds_Behind_Master станет равным NULL;
Установка ecss-node
Установить пакет ecss-node:
на ecss2
sudo apt install ecss-node
В процессе установки будут задаваться вопросы о сохранении текущих версий конфигурационных файлов. Рекомендуется ставить новые, т. е. отвечать «Y».
на ecss2
Во время установки пакета ecss-node система сбросит конфигурацию кластера на дефолтное значение. Поэтому потребуется отредактировать файл /etc/ecss/ecss-mycelium/mycelium1.config.
Выполните команду:
sudo nano /etc/ecss/ecss-mycelium/mycelium1.config
Пропишите имя кластера, в примере "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 ]},
Установка остальных пакетов
Установите пакеты, содержащие основные подсистемы:
на ecss2
sudo apt upgrade
При установке ecss-media-server рекомендуется ответить на вопрос о конфигурировании утвердительно.
В процессе установки будут задаваться вопросы о сохранении текущих версий конфигурационных файлов. Рекомендуется ставить новые, т. е. отвечать «Y».
Проверьте статус сервисов командой:
на ecss2
systemctl is-active ecss-core ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium
Сервисы должны быть в статусе "inactive":
/systemctl is-active ecss-core ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium
inactive
inactive
inactive
inactive
inactive
Сборка кластера
После действий в предыдущем разделе можно открывать серверы друг другу, чтобы свести в кластер. На первом сервере выполните команду sudo ecss-control attach. Описание команд утилиты приведено в «Приложении Н».
Пример:
на ecss1
sudo ecss-control attach
unlock ip: 10.10.0.2, rules: 7
complete
sudo ecss-control status
all nodes attached
Запустите сервисы следующими командами:
на ecss2
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
Проверка работы системы в кластере
Проверьте выполнение обновления. Команда CLI system-status должна показать, что все ноды в кластере, версии подсистем одинаковые.
/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 │ └─────────────┴───────────┴─────────────┴───────────┴───────────┘
Хост ecss2 обновлен, запустите трафик командой:
на ecss2
sudo systemctl start keepalived.service
Убедитесь, что абоненты зарегистрированы. Проверьте количество зарегистрированных абонентов, оно должно быть приблизительно тем же, что и в начале обновления:
/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 │ └───────────────┘
Вызовы проходят во всех направлениях, CFC проигрывает сообщения, Web-conf и прочие web-сервисы запускаются, в системный журнал не пишется ошибок. Команда shell:
journalctl -f
Деинсталляция компонентов ECSS
Удаление ecss-mysql
Для удаления пакета ecss-mysql с сохранением используйте команду:
sudo apt remove ecss-mysql
При этом базы и конфигурационные файлы не удаляются.
Для полного удаления пакета вместе с базами и конфигурационными файлами используйте ключ purge:
sudo apt purge ecss-mysql
При этом по каждой базе нужно подтверждение удаления. После этого каталог /var/lib/ecss-mysql/ будет очищен.
Если нужно полностью удалить все пакеты mysql* :
Удаление пакетов mysql-* удалит также пакеты ecss-web-conf и ecss-restfs.
При удалении ecss-restfs задается вопрос об удалении записей разговоров:
А также об удалении всех БД MySQL:
sudo apt purge mysql-*
Удаление пакета ecss-node
Для удаления пакета используйте команду:
sudo apt purge ecss-node
Удаление пакета ecss-media-server
Для удаления пакета с сохранением конфигурационных файлов используйте команду:
sudo apt remove ecss-media-server
При этом в каталоге /etc/ecss/ecss-media-server/ остаются файлы конфигурации.
Для полного удаления используйте команду:
sudo apt purge ecss-media-server
Удаление ненужных пакетов
Для удаления остальных пакетов, которые больше не требуются, используйте ключ autoremove:
sudo apt autoremove
Удаление пакетов по маске
Для удаления сразу нескольких пакетов можно пользоваться масками (см. man apt).
Пример команды для удаления всех пакетов ecss:
sudo apt purge ecss-*
Команды полной деинсталляции ECSS
Для полного удаления всех компонентов ECSS выполните 3 команды:
sudo apt purge ecss-* sudo apt purge mysql-* sudo apt autoremove
После следует перезагрузить сервер для удаления некоторых процессов из оперативной памяти.
В каталоге /var/log/ecss/security/ в служебных целях остаются логи. Их нельзя удалить штатными средствами. Если необходима очистка этого каталога, следует обратиться в техническую поддержку.
Debconf
В некоторых случаях вместо переустановки пакета требуется только изменение конфигурации. Здесь следует применять команду dpkg-reconfigure <имя_пакета>. Также при необходимости можно использовать команды пакета debconf-utils.
Описание приведено на странице «Приложение В».