Cbackup — Резервное Копирование Конфигураций Сетевого Оборудования

Единственное, что может быть лучше резервной копии, — это резервная копия с контролем версий и проверкой целостности.

Существует множество софта различного платного уровня для разных операционных систем для резервного копирования файлов, баз данных и образов, а также для управления конфигурациями серверов и ПО.

Но решений для работы с конфигурациями сетевого оборудования не так много.



cBackup — резервное копирование конфигураций сетевого оборудования

Мы создали приложение cBackup (из резервной копии конфигурации) для работы с конфигурациями сетевого оборудования.

Помимо непосредственно резервного копирования конфигов, вы можете отслеживать изменения между их версиями, что помогает локализовать источник проблемы при восстановлении после сбоев.

cBackup имеет открытый исходный код и распространяется бесплатно, включая отдельно загружаемые шаблоны для поддержки различных сетевых устройств.



Для кого?

cBackup был разработан администраторами для администраторов, которым не нужен такой тяжеловес, как NOC Project. В своей работе мы администрируем несколько тысяч свитчей и маршрутизаторов, поэтому поддержание конфигурации сети в должном порядке является жизненной необходимостью.

Отсюда и вполне ощутимые параллели в основных принципах работы: обнаружение, как в системах мониторинга сетевой инфраструктуры; терминология уже встречалась где-то в большинстве разделов; управление расписанием, как в crontab и так далее.



Что уже существует?

Текущая версия доступна для скачивания в виде архива tar.gz, а также пакетов rpm и deb. Доступна документация.

Система изначально разрабатывалась для Linux, но ее можно запустить и под Windows, хотя официальной поддержки пока нет. После установки пакета или распаковки его на подготовленный сервер вам необходимо будет пройти установку на саму систему через веб-установщик.

В документации этот процесс описан максимально подробно, поэтому установка и эксплуатация не будут описываться в рамках материала в пиар-хабе.

Если возникнут какие-то запросы, о технической стороне работы и вариантах использования я расскажу в отдельном материале в профильном хабе.

Если кратко описать архитектуру, то интерфейс cBackup представляет собой веб-приложение, написанное на платформе Yii2, с демоном, написанным на Java 8 с использованием Spring Boot. MySQL используется в качестве базы данных, а Git — для контроля версий.

Система, обрабатывающая 1200 свитчей и роутеров, вполне комфортно чувствует себя на виртуальной машине с двумя ядрами и двумя гигабайтами оперативной памяти, обрабатывая задачи по сбору конфигураций, STP и геокарт в 30 потоков.

Место на жестком диске также используется экономно – за год использования папка приложения с данными занимает 350 МБ, а база данных – 35 МБ.



cBackup — резервное копирование конфигураций сетевого оборудования

cBackup бесплатен и распространяется под лицензией Affero GPL v3. Наши плагины, обновления и загружаемый контент также бесплатны и поддерживаются поставщиками и устройствами.

На данный момент интерфейс системы поддерживает английский и русский языки.

Никаких скрытых комиссий, ограничений функциональности или микротранзакций нет и не планируется.

Однако наша команда открыта к сотрудничеству по внедрению, запросам на официальную поддержку бизнеса с SLA и корпоративную поддержку, в том числе индивидуальных разработок.



Регистрация подсетей и оборудования, автоматический поиск новых устройств

cBackup может работать как с предварительно заданным вручную списком хостов, так и с указанными подсетями, обнаруживая установленные устройства (обнаружение).

Отдельно вы можете исключить адреса из любых процессов и задач.

Аппаратная поддержка загружается и устанавливается из официального репозитория.

Если сервер с резервной копией находится в изолированной сети и не имеет доступа в Интернет, вы можете загружать файлы вручную или самостоятельно добавить поддержку нового оборудования.

Само по себе управление реестром подсетей и оборудования может показаться слишком сложным, но поработав с разными поставщиками, мы убедились, что каждый придумывает какие-то свои хитрости в протоколах и процессах.

И речь даже не о STP, реализация которого может отличаться как день от ночи, а о банальной работе с командной строкой через SSH. Таким образом, управление инфраструктурой является очень детальным, предоставляя возможность создавать плагины и фабрики для отдельных моделей и/или поставщиков, переопределяя взаимодействие с устройством или моделью на любом этапе.



Резервное копирование конфигурации

Непосредственные задачи взаимодействия с узлами возлагаются на системный сервис, который работает в многопоточном режиме.

Сервис представляет собой исполняемый файл на Java и не использует системный crontab, используя исключительно его функционал.

Демон общается с ядром системы через RESTful API и теоретически его можно даже перенести на отдельный сервер, если возникнет такая необходимость.

Взаимодействие с конечными устройствами оформляется в виде последовательностей команд с обработкой полученных данных и может осуществляться по протоколам Telnet, SSH и SNMP v1/v2.

Система контроля версий

Одной из основных целей для нас было предоставить возможность не только прочитать и восстановить конфиг из резервной копии в рамках аварийного восстановления, но и найти проблему в случае факапа с конфигурацией.

Поскольку с оборудованием работает значительное количество операторов, поиск и локализация изменений были для нас крайне важной задачей.

В целом Git в нашей системе имеет довольно много функций: контроль версий конфигурации, обновления системы, загрузка и обновление оборудования и поддержка вендоров.



Плагины и API

Мы убеждены, что каждая система должна выполнять свою работу.

Поэтому, если в названии программы присутствует слово «резервное копирование», то она должна в первую очередь заниматься самим резервным копированием.

Все остальное строго необязательно.

В cBackup реализован функционал подключения плагинов, но на данный момент их всего два — позиционирование узла на карте на основе информации в OID system.sysLocation.0 и рисование STP-деревьев.

Если возникнет реальная необходимость и запрос, мы будем рады добавить необходимый функционал.

Сюда также входит API, который позволяет интегрировать cBackup с другими сервисами.



Что случится?

Изначально проект писался «для внутренних нужд» и по сути представлял собой переделку с нуля самописной утилиты для сохранения конфигураций коммутаторов.

Уже в процессе рефакторинга пришла идея, что проект может быть полезен за пределами наших сетей.

Система приобрела массу новых возможностей с прицелом на универсальность, получила многоязычность и более серьезную документацию и теперь выложена в открытый доступ.

Есть планы по развитию, а на доске позади меня — дорожная карта будущих версий.

Но поскольку cBackup в настоящее время покрывает все наш потребности, хотелось бы прислушаться к пожеланиям сообщества и пользователей, если кто-то начнет использовать это программное обеспечение.

Предложения и вопросы можно оставлять по почте, на нашем форуме, в трекере задач на Github или в нашем чате на Discord. Среди ключевых функций в нашей очереди на реализацию: поддержка SNMP v3, поддержка IPv6, проверка конфигов по заданным правилам и импорт узлов из внешних баз данных или API. Список поддерживаемого оборудования будет дополняться по просьбам пользователей «в работе»; к счастью, для этого не требуется обновление установленной системы.

Мы постараемся сделать этот процесс плавным, в надежде, что ни один из поставщиков не придумает трюков лучше, чем MikroTik. Также в планах изменения в архитектуре демона, чтобы добавить к нему плагины.



Где ссылки?

Теги: #Сетевые технологии #Системное администрирование #Резервное копирование #сетей #сетевое администрирование #резервное копирование #резервное копирование систем
Вместе с данным постом часто просматривают: