В условиях развития онлайн-бизнеса и, соответственно, виртуализации всех рабочих процессов, актуальным становится вопрос обеспечения согласованности данных, хранящихся на разных компьютерах сети, то есть, их синхронизация между собой. Существует множество вариантов решения этого вопроса, наиболее оптимальным из которых будет использование специального программного обеспечения (ПО), синхронизирующего данные в автоматическом режиме без привязки к стороннему централизованному хранилищу. Программа Syncthing относится к указанному ПО и является одной из лучших в своём сегменте. Рассмотрим более подробно её возможности и продемонстрируем их использование на практике.
Синхронизация файлов и папок
Автоматическая синхронизация данных избавляет пользователей от рутины ручного копирования в случае необходимости иметь копию данных на другом узле локальной или глобальной сети, в особенности, если для дублирования информации используется нескольких узлов. В случае автоматической синхронизации копирование происходит в фоновом режиме, незаметно для пользователей. К тому же, ряд программ синхронизации, в том числе и Syncthing, используют шифрованные каналы передачи данных, что гарантирует защиту информации от взлома. Это делает программу незаменимым инструментом для организации разветвлённой сети рабочих узлов с данными, которые синхронизируются в автоматическом режиме.
Альтернативным вариантом может быть использование облачных сервисов и других централизованных хранилищ данных, однако в этом случае значительно повышается риск утечки информации, поскольку она будет храниться на стороннем сервере. Кроме того, владельцы качественных хранилищ, как правило, со временем повышают оплату за их использование и / или ужесточают требования по ряду некоторых параметров.
Использование децентрализованных хранилищ в пределах собственного динамически масштабируемого кластера машин, на наш взгляд, является лучшим решением проблемы. В особенности, если в качестве программы синхронизации будет использоваться свободное ПО с открытым исходным кодом, как у Syncthing. Исходя из указанных характеристик и ряда других параметров, можно констатировать, что программа Syncthing действительно является одним из наиболее перспективных программных средств синхронизации данных.
Возможности Syncthing
Укажем наиболее значимые характеристики Syncthing, отличающие её от большинства других программных средств синхронизации:
- Относится к свободному бесплатному ПО;
- Возможность использования для локальных и глобальных сетей;
- Децентрализованное хранение данных;
- Надёжная идентификация узлов кластера с помощью криптографического сертификата;
- Лёгкость и простота масштабирования кластера любого размера и типа;
- Кроссплатформенность – возможность работы на многих платформах – Linux, Windows, Mac и некоторых других;
- Для передачи данных используются шифрованные TLS каналы и механизм обмена ключами;
- Открытые разработка и программный код;
- Обмен данными в пределах кластера осуществляется на уровне блоков;
- Использование специального протокола собственной разработки для обнаружения устройств;
- Разветвлённая структура серверов Discovery для обнаружения новых узлов на глобальном уровне;
- Наличие веб-интерфейса для управления программой.
Практическое использование Syncthing
Для использования программы для своих проектов достаточно скачать нужную версию для конкретной платформы на сайте разработчика и загрузить её на рабочий узел. После её установки и развёртывания станет доступным идентификатор устройства, который следует передать пользователям или Администраторам удалённых машин, на которых планируется размещение общих синхронизируемых данных. Те, в свою очередь, после установки программы также должны поделиться своими идентификаторами со всеми участниками кластера. Это необходимое условие функционирования кластера.
Сразу же после развёртывания программы на любом из узлов, становится доступным веб-интерфейс для её администрирования, находящийся по адресу http://127.0.0.1:8384. По умолчанию, пароль для доступа к Панели управления отсутствует, но позже его можно будет при необходимости установить.
Мы настроим наш кластер на основе двух удалённых друг от друга узлов – на одном из которых установлена ОС Ubuntu, на другом – ОС Windows. Узел на Ubuntu был подготовлен нами заранее, в результате чего мы получили идентификатор устройства ID, который нам понадобится в дальнейшем для подключения устройства к кластеру.
Теперь нам остаётся развернуть программу на локальном узле под управлением ОС Windows и произвести нужные настройки.
Развёртывание Syncthing на ОС Windows
Для начала, скачиваем с сайта разработчиков 32-х разрядную версию программы для платформы х86 и загружаем на свой узел. Это файл архива с именем syncthing-windows-386-v0.14.30. С помощью архиватора извлекаем каталог с аналогичным названием, в котором находим все системные файлы и папки программы.
Запускаем исполнимый файл с именем syncthing для начала процесса установки. В результате, генерируются ключи шифрования и конфигурационный файл программы. В течение двух минут после инициализации процесса установки производится автоматический запуск браузера с доступом к веб-интерфейсу Панели управления Syncthing по адресу http://127.0.0.1:8384, как показано ниже.
Окно программы разделено на два блока. В левом блоке отображаются названия каталогов, которые являются общими для всех добавленных узлов кластера. В данном случае отображается только каталог, установленный по умолчанию (Default Folder), который пока не является общедоступным.
В правом блоке отображаются имена и характеристики всех устройств кластера – в верхней части для текущего устройства, в нижней – только для удалённых устройств.
Управление кластером с помощью веб-интерфейса программы
Первое, что мы должны сделать, это подключить каталог с данными, который в дальнейшем станет общим ресурсом для всех узлов кластера. Для этого в левом блоке интерфейса нажимаем кнопку Добавить папку. В результате появляется окно ввода значений параметров хранилища, как показано ниже.
Наиболее важными здесь являются первые три поля, в которых указываются название хранилища, его идентификатор и локальный путь к месту его размещения. После их заполнения нажимаем кнопку Сохранить, после чего программа возвращает нас к главному окну интерфейса (см. скриншот).
После этого в течение какого-то времени будет идти обработка данных (обычно несколько минут), после окончания которой напротив названия подключенного каталога появится надпись зелёным цветом – «В актуальном состоянии».
Следующим этапом формирования кластера будет его расширение путём последовательного добавления новых узлов. Нажмём кнопку Добавить удалённое устройство в правом блоке окна интерфейса программы. В результате, появится окно ввода значений параметров нового устройства, как показано ниже.
Введём значения обязательных параметров – идентификатор устройства, его название и адрес. Как уже говорилось, программа имеет встроенные средства поиска новых устройств, поэтому для поля «Адреса» достаточно указать способ динамического определения адреса, не вводя реального IP.
Также необходимо разрешить доступ устройства ко всем или к некоторым уже существующим каталогам, поставив флажки напротив названий нужных нам.
После окончания ввода данных, нажимаем кнопку Сохранить и вновь попадаем в главное окно программы.
Здесь мы видим в правом блоке появление информации о новом узле кластера, где видны его IP-адреса для разных портов, а также список доступных для него каталогов в нижней части блока.
В результате, мы получили готовый кластер, состоящий из двух узлов с разными платформами. В дальнейшем возможно расширение кластера за счёт добавления новых устройств, количество которых ограничено только техническими возможностями вашего сервера по управлению кластером больших размеров.
Программа предоставляет возможности динамичного управления всеми процессами с помощью набора команд главного меню, которые сконцентрированы в пункте меню Действия, как показано ниже.
Здесь можно выполнить широкий спектр программных настроек, перезапустить её или выключить.
К примеру, в окне настроек можно установить надёжный пароль доступа к интерфейсу управления программой, а также включить защищённый протокол, что значительно повысит надёжность работы с данными.