Скрипт ecss-control служит для создания резервных архивов конфигурации, восстановления ECSS-10 из этих архивов, а также для разделения кластера на 2 независимые ноды для дальнейшего независимого обновления каждой из них. Данный скрипт включен в состав пакета ecss-node. Расположен в /usr/bin.
Для настройки используется файл /etc/ecss/ecss-control.conf:
#BACKUP_CONFIGS=( )
BACKUP_CONFIGS=(
/etc/ecss
/var/lib/ecss/adaptation
/var/lib/ecss/backups
/var/lib/ecss/cp
/var/lib/ecss/ecss-media-server
/var/lib/ecss/eep
/var/lib/ecss/modification
/var/lib/ecss/mycelium
/var/lib/ecss/oasys
/var/lib/ecss/oasys.backup
/var/lib/ecss/regime
/var/lib/ecss/routing
/var/lib/ecss/numbers
/var/lib/ecss/snmp
/var/lib/ecss/ecss-data.json
)
#BACKUP_LOGS=( )
BACKUP_LOGS=(
/var/log/ecss # always must be first, important for the clean-log command # всегда должен быть первым, важно для работы команды clean-log
/var/log/atop
/var/log/syslog*
)
#BACKUP_MYSQLDB=( )
BACKUP_MYSQLDB=(
ecss_audit
ecss_subscribers
ecss_dialer_db
web_conf
)
|
Вывод справки.
Пример:
sasha@ecss1:/$ sudo ecss-control help
Usage: sudo /usr/bin/ecss-control [ACTION]
where ACTION - one of:
attach - back host to opertate
detach - isolate current host from other ecss hosts, except SSH/22 and KA/112
debug|de - enable debug trace
help - print current help
log-clean|lc - clean logs
rollback|rb [--no-clean] [--no-stash] <DESTINATION FILE> - rollback configuration ecss10 from selected archive
For correct execution before rollback current configuration and logs will be stashed and then cleared.
After will be started rollback.
Options:
--no-clean - current configuration and logs won't be cleared;
--no-stash - current configuration and logs won't be stashed;
stash [<OPTIONS>] [<DESTINATION DIRECTORY>] [--push [<PUSH OPTIONS>]] - make archive of current configuration and logs ecss10
If <DESTINATION DIRECTORY> not specified, then using current directory
Options:
--last-log - stash only last logs;
--no-sql - skip SQL-database stashing;
--no-config - skip configuration stashing$;
--no-log - skip logs stashing;
--push - push stashed data to tech support;
Push options:
--clear - archive will be removed after executing;
--files - all files or directories specified between this and another option will be included to pushing;
--comment - all input between this and another option will be used as issue description in pushing;
clean [<OPTIONS>] - clean current configuration and logs ecss10
Options:
--no-config - skip configuration cleaning
--no-log - skip logs cleaning
verbose|v - enable verbose output
examples:
/usr/bin/ecss-control stash ~/
|
Данный аргумент является необязательным и используется в связке с другими аргументами. При его использовании на терминале отображается подробный трейс выполняемых команд.
Пример:
|
Данный аргумент является необязательным и используется в связке с другими аргументами. При его использовании в терминале отображается последовательность действий, выполняемых той или иной командой.
Пример:
sasha@ecss1:/$ sudo ecss-control verbose stash please enter root password for mysql db: Enter password: -- Connecting to localhost... -- Starting transaction... -- Setting savepoint... -- Retrieving table structure for table ecss_audit_commands... -- Sending SELECT query... -- Retrieving rows... ... /var/log/syslog.5.gz /var/log/syslog.6.gz /var/log/syslog.7.gz /tmp/ecss-stash-20220711-151809/stash_db.sql /tmp/ecss-stash-20220711-151809/info/versions /tmp/ecss-stash-20220711-151809/info/sysinfo removed '/tmp/ecss-stash-20220711-151809/info/sysinfo' removed '/tmp/ecss-stash-20220711-151809/info/versions' removed directory '/tmp/ecss-stash-20220711-151809/info' removed '/tmp/ecss-stash-20220711-151809/stash_db.sql' removed directory '/tmp/ecss-stash-20220711-151809' create stashed file: /ecss-stash-full-20220711-151809.tar.gz done |
Синтаксис: stash [<OPTIONS>] [<DESTINATION DIRECTORY>] [--push [<PUSH OPTIONS>]] - make archive of current configuration and logs ecss10 Опции:
Push options:
Сохраняемые каталоги конфигурации:
Сохраняемые каталоги логов:
Сохраняемые базы:
Кроме того, есть возможность задавать эти параметры через окружение:
В дальнейшем при помощи созданного архива можно восстановить конфигурацию ECSS-10 при помощи команды rollback. Примеры: Сохранение конфигурации, логов и БД MySQL:
Сохранение конфигурации и БД MySQL (без log-файлов):
|
Данный аргумент позволяет восстановить конфигурацию ECSS-10 из ранее созданного архива. Синтаксис: rollback|rb [--no-clean] [--no-stash] <DESTINATION FILE> rollback работает следующим образом:
Пример:
|
Использование данного аргумента позволяет вывести ноду из кластера. Это требуется для обновления обновления ПО на новую версию без перерыва в обслуживании, подробное описание данного процесса приведено в пункте Методика разделения (split) кластера. В результате выполнения команды будет заблокирован весь трафик между нодами за исключением SSH, keepalive/multicast, а в консоле будет вывод о том, от какой ноды было произведено отсоединение + ее IP-адрес.
Пример:
sasha@ecss1:/$ sudo ecss-control detach detach host: ecss2, ip: 192.168.1.22 complete |
Аргумент возвращает ранее изолированную ноду в кластер и разблокирует весь трафик между ними, подробное описание данного процесса приведено в пункте Методика разделения (split) кластера. В выводе команды будет отображаться разблокированный IP-адрес.
Пример:
sasha@ecss1:/$ sudo ecss-control attach unlock ip: 192.168.1.22, rules: 7 complete |
Позволяет просмотреть статус ноды, находится ли она в кластере или же изолирована от него.
Пример:
sasha@ecss1:/$ sudo ecss-control status all nodes attached |
Команда с данным аргументом удаляет логи, сохраняя структуру каталогов, а также файлы конфигурации.
Файлы конфигурации удаляются из тех же каталогов, которые прописаны в /etc/ecss/ecss-control.conf.
Перед запуском команды с этим параметром нужно обязательно остановить все сервисы ecss на данном хосте! |
Синтаксис:
clean [<OPTIONS>]
Опции:
--no-log — не удалять логи;
--no-config — не удалять конфигурацию (аналогично log-clean).
Пример:
sasha@ecss1:/$ sudo ecss-control clean cleaning ECSS-10... Clean logs... find: cannot delete ‘/var/log/ecss/security/2021-10-week40-events.log.gz’: Operation not permitted find: cannot delete ‘/var/log/ecss/security/2022-01-week52-events.log.gz’: Operation not permitted find: cannot delete ‘/var/log/ecss/security/2021-10-week43-events.log.gz’: Operation not permitted find: cannot delete ‘/var/log/ecss/security/2022-01-week01-events.log.gz’: Operation not permitted find: cannot delete ‘/var/log/ecss/security/2022-02-week05-events.log.gz’: Operation not permitted find: cannot delete ‘/var/log/ecss/security/2021-09-week35-events.log.gz’: Operation not permitted find: cannot delete ‘/var/log/ecss/security/2022-01-week05-events.log.gz’: Operation not permitted find: cannot delete ‘/var/log/ecss/security/2021-08-week35-events.log.gz’: Operation not permitted find: cannot delete ‘/var/log/ecss/security/2021-12-week49-events.log.gz’: Operation not permitted find: cannot delete ‘/var/log/ecss/security/2021-09-week39-events.log.gz’: Operation not permitted find: cannot delete ‘/var/log/ecss/security/2021-12-week50-events.log.gz’: Operation not permitted find: cannot delete ‘/var/log/ecss/security/2021-10-week39-events.log.gz’: Operation not permitted find: cannot delete ‘/var/log/ecss/security/2022-02-week08-events.log.gz’: Operation not permitted find: cannot delete ‘/var/log/ecss/security/2022-02-week07-events.log.gz’: Operation not permitted find: cannot delete ‘/var/log/ecss/security/2021-11-week45-events.log.gz’: Operation not permitted find: cannot delete ‘/var/log/ecss/security/2021-10-week42-events.log.gz’: Operation not permitted find: cannot delete ‘/var/log/ecss/security/2022-01-week03-events.log.gz’: Operation not permitted find: cannot delete ‘/var/log/ecss/security/2021-09-week38-events.log.gz’: Operation not permitted find: cannot delete ‘/var/log/ecss/security/2021-12-week52-events.log.gz’: Operation not permitted find: cannot delete ‘/var/log/ecss/security/2022-01-week04-events.log.gz’: Operation not permitted find: cannot delete ‘/var/log/ecss/security/2021-09-week37-events.log.gz’: Operation not permitted find: cannot delete ‘/var/log/ecss/security/2021-11-week47-events.log.gz’: Operation not permitted |
Команда с данным аргументом удаляет файлы логов из каталога /var/log/ecss/
Синтаксис:
ecss-conrol log-clean|lc
Пример:
sasha@ecss1:~/ssw1_3.14$ sudo ecss-control debug log-clean
+ export DEBUG=true
+ DEBUG=true
+ shift
+ [[ -n log-clean ]]
+ CMD=log-clean
+ case "${CMD,,}" in
+ sudo-test
++ id -u root
+ [[ 0 -ne 0 ]]
+ clean-log
+ local ecss_log=/var/log/ecss
+ echo 'Clean logs...'
Clean logs...
+ find /var/log/ecss -name '*.log' -type f -exec truncate -s0 '{}' ';'
+ find /var/log/ecss -not -name '*.log' -type f -delete |
Если во время выполнения команды сервисы ecss были запущены, нужно перезапустить сервис ecss-web-conf, чтобы создались новые файлы логов.
sudo systemctl restart ecss-web-conf.service |
Другие подсистемы перезапускать не нужно.