Приложение Н. Описание утилиты ecss-control
Утилита ecss-control служит для создания резервных архивов конфигурации, восстановления ECSS-10 из этих архивов, а также для разделения кластера на 2 независимые ноды для дальнейшего независимого обновления каждой из них. Данная утилита включена в состав пакета ecss-node.
Описание аргументов ecss-control
man
ECSS-10(8) BSD System Manager's Manual ECSS-10(8) NAME ecss-control SYNOPSIS ecss-controlS ACTION Actions debug | de Включить отладочный режим verbose | v Включить отладочные логи stash <DESTINATION DIRECTORY> Архивация текущей конфигурации и логов ECSS-10 stash-config | stash-cfg <DESTINATION DIRECTORY> Архивация текущей конфигурации ECSS-10 без логов. rollback | rb <SOURCE FILE> Применить конфигурацию ECSS-10 из указанного файла detach Изолировать текущий хост, кроме SSH/22 и KA/112 attach Снять изолицию с хоста log-clean | lc Очистить логи ECSS-10 help Показать справку DESCRIPTION ecss-control — Утилита для управления ECSS-10. Предназначена для сохранения/восстановления конфигурации. Также возможно использовать для изоляции хоста. FILES /usr/bin/ecss-control Manual page ecss-control(8) line 1/45 90% (press h for help or q to quit)
debug
Данный аргумент является необязательным и используется в связке с другими аргументами. При его использовании на терминале отображается подробный трейс выполняемых команд.
Пример:
ssw@ecss1:~$ sudo ecss-control debug stash + export DEBUG=true + DEBUG=true + shift + [[ -n stash ]] + CMD=stash
verbose
Данный аргумент является необязательным и используется в связке с другими аргументами. При его использовании в терминале отображается последовательность действий, выполняемых той или иной командой.
Пример:
ssw@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...
stash
Синтаксис:
stash [--no-sql | --no-log | --no-config | --last-log | --push ] [<каталог>] — в имени итогового файла будет указано, с какими опциями он был создан
Данный аргумент без параметров создает резервную копию конфигурации ECSS-10 вместе с логами(/var/log/ecss). При выполнении команды будет запрошен пароль root пользователя базы данных mysql, в которой хранится часть настроек ECSS-10.
Опции:
- --no-sql — не копировать базы MySQL
- --no-log — не копировать логи
- --no-config — не копировать конфигурацию
- --last-log — брать только последние логи;
- --push — отправка данных для анализа в техподдержку;
Push options:
- --clear — удалить архив после успешной отправки;
- --files — все файлы или каталоги, указанные между этим и другим параметром, будут включены в отправку;
- --comment — описание проблемы;
sasha@ecss1:~/ssw1_3.14$ sudo ecss-control stash --push --last-log [sudo] password for sasha: please enter root password for mysql db: Enter password: stashing ECSS-10 ... create stashed file: /home/sasha/ssw1_3.14/ecss-stash-full-20190623-173101.tar.gz done connecting to cloud ... make subdir 20190623 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 make subdir 20190623/issue-20190623-173101 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 done pushing issue ... start % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 216M 0 0 100 216M 0 3017k 0:01:13 0:01:13 --:--:-- 0 done Issue ID: 20190623/issue-20190623-173101
Сохраняемые каталоги конфигурации:
/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/snmp /var/lib/ecss/ecss-data.jso
Сохраняемые каталоги логов
/var/log/ecss # всегда должен быть первым, важно для работы команды log-clean /var/log/atop /var/log/syslog
Сохраняемые базы:
MYSQLDB=( ecss_audit ecss_subscribers web_conf )
Для настройки бекапа используется файл /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/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 web_conf )
Кроме того, добавил возможность задавать эти параметры через окружение:
- ECSS_STASH_BACKUP_CONFIGS — список файлов/каталогов с конфигурациями (должны быть указаны через пробел)
- ECSS_STASH_BACKUP_LOGS — список файлов/каталогов с логами (должны быть указаны через пробел)
- ECSS_STASH_BACKUP_MYSQLDB — список имен БД (должны быть указаны через пробел)
В дальнейшем при помощи созданного архива можно восстановить конфигурацию ECSS-10 при помощи команды rollback.
Пример:
sasha@ecss1:~/ssw1_3.12$ sudo ecss-control stash [sudo] password for sasha: please enter root password for mysql db: Enter password: stashing ECSS-10... tar: /var/log/ecss/mycelium/mycelium1@ecss1/watchdog.log.bin: file changed as we read it tar: /var/log/ecss/pa-sip/sip1@ecss1/warning.log: file changed as we read it tar: /var/log/ecss/pa-sip/sip1@ecss1/config.log: file changed as we read it
rollback
Данный аргумент позволяет восстановить конфигурацию ECSS-10 из ранее созданного архива.
Синтаксис:
rollback|rb [--no-clean] [--no-stash] <DESTINATION FILE>
rollback работает следующим образом:
выполняется stash текущей конфигурации и логов, при этом парсится имя файла на наличие опций (можно пропустить опцией --no-stash)
выполняется clean с теми же опциями (можно пропустить опцией --no-clean)
выполняется rollback
Пример:
sasha@ecss1:~/ssw1_3.12$ sudo ecss-control rollback ecss-stash-full-20181217-104135.tar.gz WARNING: Before rollback current configuration and logs will be stashed and then cleared Stash archive will be saved at /home/sasha/ssw1_3.12 please enter root password for mysql db: Enter password: stashing ECSS-10... create stashed file: /home/sasha/ssw1_3.12/ecss-stash-full-20181217-111939.tar.gz done cleaning ECSS-10... done rollback configuration from ecss-stash-full-20181217-104135.tar.gz please enter root password for mysql db: Enter password: stashed file successfull rollbacked
detach
Использование данного аргумента позволяет вывести ноду из кластера. Это требуется для обновления обновления ПО на новую версию без перерыва в обслуживании, подробное описание данного процесса приведено в пункте Методика разделения (split) кластера. В результате выполнения команды будет заблокирован весь трафик между нодами за исключением SSH, keepalive/multicast, а в консоле будет вывод о том, от какой ноды было произведено отсоединение + ее IP адрес.
Пример:
sasha@ecss1:~/ssw1_3.14$ sudo ecss-control detach detach host: ecss2, ip: 192.168.1.22
attach
Аргумент возвращает ранее изолированную ноду в кластер и разблокирует весь трафик между ними, подробное описание данного процесса приведено в пункте Методика разделения (split) кластера. В выводе команды будет отображаться разблокированный IP адрес.
Пример:
sasha@ecss1:~/ssw1_3.14$ sudo ecss-control attach unlock ip: 192.168.1.22, rules: 7 complete
status
Позволяет просмотреть статус ноды, находится ли она в кластере или же изолирована от него.
Пример:
ssw@ecss1:~$ sudo ecss-control status all nodes attached
clean
Команда с данным аргументом удаляет логи, сохраняя структуру каталогов, а также файлы конфигурации
Синтаксис:
clean [<OPTIONS>]
Опции:
--no-log — не удалять логи
--no-config — не удалять конфигурацию (аналогично log-clean)
Пример:
sasha@ecss1:~/ssw1_3.14$ sudo ecss-control clean --no-config [sudo] password for sasha: cleaning ECSS-10... don
log-clean
Команда с данным аргументом удаляет файлы логов из каталога /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
Другие подсистемы перезапускать не нужно.
help
Вывод справки.
Пример:
sasha@ecss2:/var/log/ecss$ 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 ~