clsync - live sync utility
LVEE Winter 2014
Поддержка синхронности файлов между узлами — это типовая задача при реализации большинства кластеров. Для решеиня разных задач формулируются разные требования к синхронности файлов между узлами, но в рамках данной работы в первую очередь рассматриваются системы высокой доступности (от англ. «high availability», далее — «HA»). В HA-системах типовыми требованиями являются:
- высокая производительность (сравнимая с производительностью локальной файловой системы на локальной дисковой подсистеме);
- высокая доступность (отказ сервиса не более нескольких секунд);
- высокая надёжность (не создавать дополнительных отказов сервиса за счёт использования данного решения);
- универсальность (применимость для широкого спектра разных решений, разворачиваемых на данной системе).
В общем случае, данная задача на данный момент остаётся нерешённой. Однако создано большое множество решений, которые в разных приближениях решают эту задачу, определяя свои порядоки приоритетов данных требований. И основными подходами на данный момент являются:
- файловые системы только для чтения — это простое и надёжное решение, однако имеет очень узкий спект применимости;
- единые общие файловые хранилища — простое и универсальное решение, но создаёт единую точку отказа;
- блочная репликация — надёжное и универсальное решение, но создаёт большие потери производительности и очень чувствительно к качеству интерконнекта;
- файловая репликация — компромиссное решение, которое не выполняет ни одно требование полностью;
- комбинации вышеперечисленных подходов.
В НИЯУ МИФИ кроме прочих задач необходимо поддерживать HA-инфраструктуру c резервным копированием для быстрого создания VPS, в которых допускается работать малоопытным web-программистам 1. Опыт показал, что использование блочной репликации для в данной ситуации приводит к недопустимой потере производительности. Поэтому был использован lsyncd 2 для синхронизации LXC-контейнеров между узлами кластера и их резервного копирования.
Однако lsyncd оказался сложным в настройке для ряда экзотических ситуаций, малопроизводительным, а также недостаточно надёжным, простым в отладке, гибким и переносимым. В результате был написана альтернативная реализация под внутренние нужды отдела UNIX-технологий НИЯУ МИФИ — clsync 3. Далее clsync был документирован и опубликован через репозитории пакетов Debian.
Clsync написан на GNU C99 с использованием inotify 4 и адаптирован для реализации LXC HA-кластера (в связке с rsync 5), создания системы резервного копирования (аналогично) и синхронизации конфигурационных файлов на HPC-кластере (в связке с pdcp6).
Для реализации LXC HA-кластера в clsync начата реализация подсистемы уведомления других инстанций посредством multicast. Однако данная подсистема перестала быть актуальной после перенастройки кластера для запуска отдельной инстанции для каждого LXC контейнера. На данный момент в процессе реализации API и менеджер для централизованного управления инстанциями clsync.
Список литературы:
1. «Опыт внедрения отказоустойчивого web-кластера для портала приёмной комиссии НИЯУ МИФИ», Окунев Д.Ю., научная сессия НИЯУ МИФИ, 2012, http://www.pandia.ru/text/78/343/297.php
2. «Manual to Lsyncd 2.1.x», https://github.com/axkibe/lsyncd/wiki/Manual-to-Lsyncd-2.1.x
3. «file live sync daemon based on inotify, written in GNU C», https://github.com/xaionaro/clsync
4. «inotify – monitoring file system events», http://linux.die.net/man/7/inotify
5. «rsync — a fast, versatile, remote (and local) file-copying tool», http://linux.die.net/man/1/rsync
6. «pdcp(1) – Linux man page», http://linux.die.net/man/1/pdcp
Abstract licensed under Creative Commons Attribution-ShareAlike 4.0 International license
Back