Настройка lsyncd centos 7

Обновлено: 04.07.2024

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

Как я его нашел, черт, я git клонировал код, хотел перейти на другой сервер, чтобы продолжить клонирование, но оказалось, черт, круто, у него говно!

LysncdА именно Live Syncing Daemon, это инструмент для синхронизации данных в реальном времени (фоновый процесс) с открытым исходным кодом, основанный на inotify и rsync.

lsyncd будет внимательно следить за справочным каталогом на локальном сервере. Когда он обнаруживает, что в каталоге есть файлы или изменения в каталоге, он немедленно уведомляет удаленный сервер и осуществляет синхронизацию файлов через rsync или rsync + ssh. Преимущество этого заключается в том, что вы можете использовать Lsyncd для создания синхронного зеркалирования VPS, сценариев приложений, таких как зеркальное отображение CDN, резервное копирование данных веб-сайтов, перемещение веб-сайтов и т. Д.

БольшеVPS хостингИ воспользуйтесь учебником, вы также можете посмотреть:

1. Метод установки Lsyncd

После успешной установки вы можете увидеть примеры использования конфигурации Lsyncd в: / usr / share / doc / lsyncd / examples, вы можете обратиться к этим примерам, чтобы написать конфигурацию самостоятельно.

Два, инструкции по настройке Lsyncd

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

Ниже приводится описание нескольких часто используемых опций:

logfile Определите файл журнала
stausFile Определяет файл состояния.
nodaemon = true Означает, что режим демона не включен, по умолчанию
statusInterval Интервал записи статуса lsyncd в statusFile выше, по умолчанию 10 секунд.
inotifyMode Укажите событие, отслеживаемое inotify, по умолчанию - CloseWrite, это также может быть Modify, CloseWrite или Modify
maxProcesses Максимальное количество процессов синхронизации. Если есть 20 файлов, которые необходимо синхронизировать одновременно, а maxProcesses = 8, вы можете увидеть до 8 процессов rysnc
maxDelays Сколько отслеживаемых событий накопилось для активации синхронизации, даже если время задержки последующей задержки не истекло.

Синхронизация предназначена для определения параметров синхронизации.Вы можете продолжать использовать maxDelays для перезаписи глобальных переменных настроек. Как правило, первый параметр указывает, в каком режиме работает lsyncd: rsync, rsyncssh и три режима прямого доступа:

default.rsync: синхронизация между локальными каталогами с помощью rsync, вы также можете добиться эффекта удаленного rsync с помощью ssh или подключения к удаленным процессам rsyncd в режиме демона;
default.direct: синхронизация между локальными каталогами, использование cp, rm и других команд для завершения резервного копирования дифференциальных файлов;
default.rsyncssh: синхронизация с каталогом удаленного хоста, режим ssh rsync, для аутентификации необходимо использовать ключ

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

/ tmp / dest: синхронизация локального каталога, может использоваться в режимах direct и rsync
172.29.88.223:/tmp/dest: синхронизация с каталогом удаленного сервера, который можно использовать в режимах rsync и rsyncssh. Команда соединения аналогична / usr / bin / rsync -ltsd –delete –include- from = - --exclude = * SOURCE TARGET, остальное - содержимое rsync, такое как указание имени пользователя, без синхронизации паролей
172.29.88.223::module: синхронизация с каталогом удаленного сервера, используемым в режиме rsync.

Другие варианты оптимизации:

init Это вариант оптимизации.Если init = false, синхронизируются только файлы, события которых изменились после запуска процесса, а исходные каталоги не будут синхронизированы, даже если есть различия. По умолчанию верно
delay Накапливать события, ждать времени задержки синхронизации rsync, по умолчанию 15 секунд (максимальное накопление 1000 событий, которые нельзя объединить). То есть изменения, которые происходят в каталоге мониторинга в течение 15 секунд, будут накапливаться за одну синхронизацию rsync, чтобы избежать слишком частой синхронизации. (Комбинируемость означает, что один и тот же файл изменяется дважды в течение 15 секунд, и в конце синхронизируется только последний файл)
delete Чтобы обеспечить полную синхронизацию цели и источника, Lsyncd по умолчанию принимает значение delete = true, чтобы разрешить синхронное удаление. Помимо false, он также имеет значения запуска и выполнения. См. Lsyncd 2.1.x ‖ Конфигурация уровня 4 ‖ Поведение по умолчанию.

excludeFrom exclude, укажите файл списка, который будет исключен позже, например excludeFrom = "/etc/lsyncd.exclude", если это простое исключение, вы можете использовать exclude = LIST. Правило исключения здесь немного отличается от собственного rsync, и оно проще:

Любая часть пути мониторинга, соответствующая тексту, будет исключена. Например, / bin / foo / bar может соответствовать правилу foo
Если правило начинается с косой черты /, оно должно соответствовать всем с начала
Если правило заканчивается на /, оно должно соответствовать концу пути мониторинга.
? соответствует любому символу, но не включает /
* Соответствует 0 или более символов, но не включает /
** Соответствует 0 или более символов, может быть /

Параметры конфигурации rsync:

bwlimit speed limit, единица измерения - кб / с, то же, что и rsync (такая важная опция в документе не отмечена)
Передача со сжатием со сжатием по умолчанию истинна. При выборе компромисса между пропускной способностью и загрузкой процессора при синхронизации локального каталога можно установить значение false.
perms по умолчанию резервирует права доступа к файлам.
Существуют и другие элементы конфигурации, уникальные для режима rsyncssh, такие как host, targetdir, rsync_path, password_file, см. следующие примеры. rsyncOps = не поддерживается в версии 2.1. *.
lsyncd.conf может иметь несколько синхронизаций, каждая со своим собственным источником, собственной целью и собственным режимом.

Три, локальная синхронизация Lsyncd

Сначала создайте файл журнала для отслеживания.

Затем создайте файл конфигурации.

Запишите следующее в файл конфигурации (обратите внимание, что Source и Target заменяют путь к исходному каталогу и путь к целевому каталогу соответственно):

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

Четыре, удаленная синхронизация Lsyncd

Используйте Lsyncd для синхронизации между двумя хост-серверами VPS в реальном времени. Сначала введите исходный хост VPS и используйте команду S-S-H для удаленного входа на целевой хост VPS.

Затем выполните команду для генерации ключа на целевом VPS:


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

Затем повторно введите исходный VPS, выполните команду: ssh-copy-id root @ your_remote_server_IP, снова введите пароль удаленного входа и подтвердите добавление ключа.


После успешного добавления ключа вы можете использовать его непосредственно на исходном VPS: ssh root @ your_remote_server_IP, вы можете войти в удаленный VPS без ввода пароля. Затем выполните описанный выше метод локальной синхронизации, чтобы создать журналы и файлы конфигурации, обращая внимание на замену собственного исходного каталога и пути к целевому каталогу.

Если порт вашего целевого VPS отличается от значения по умолчанию 22, вы можете указать порт следующими способами:

Наконец, перезапустите: systemctl restart lsyncd.


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


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


Примеры других режимов Lsyncd (замените путь и IP-адрес в соответствии с реальной ситуацией):

Пять, резюме

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

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

Настройте Lsyncd для загрузки. код показан ниже:

Интеллектуальная рекомендация

совместный запрос mysql с тремя таблицами (таблица сотрудников, таблица отделов, таблица зарплат)

1. Краткое изложение проблемы: (внизу есть инструкция по созданию таблицы, копирование можно непосредственно практиковать с помощью (mysql)) Найдите отделы, в которых есть хотя бы один сотрудник. Отоб.


[Загрузчик классов обучения JVM] Третий день пользовательского контента, связанного с загрузчиком классов


IP, сеанс и cookie

Lsyncd позволяет отслеживать состояние каталога с помощью подсистемы ядра inotify, и при помощи утилиты синхронизации rsync, менять содержимое другого каталога, таким образом, приводя оба каталога к единому виду. Это может использоваться для зеркалирования кластерной системы или создания оперативного бэкапа (не путать с полноценной резервной копией).

В данной инструкции мы рассмотрим процесс установки и настройки Lsyncd на компьютер с Linux CentOS версий 8 и 7. Также мы настроим синхронизацию папок как на локальном компьютере, так и удаленных по сети.

Установка и тестовый запуск

Выполним установку lsyncd на CentOS, а также настроим сервис для синхронизации двух каталогов на локальном компьютере.

Установка

yum install epel-release

yum install lsyncd

Разрешаем автозапуск сервиса:

systemctl enable lsyncd

Настройка и запуск

Открываем конфигурационный файл:

Приводим его к виду:

settings logfile = "/var/log/lsyncd.log",
statusFile = "/var/log/lsyncd.stat",
statusInterval = 5,
insist = true,
nodaemon = false,
>

  • settings — общие настройки.
    • logfile — путь до файла логов.
    • statusFile — файл, в который заносятся изменения, найденные с помощью inotify.
    • statusInterval — интервал в секундах для обновления statusFile.
    • insist — позволяет продолжить работу сервиса, даже если одна или несколько целевых директорий недоступны.
    • nodaemon — отключаться или нет от вызывающей стороны. Проще говоря, если разрешить, то будет больше информации по его работе. Для боевого режима можно отключить.
    • default.rsync — должен использоваться протокол для синхронизации rsync.
    • source — источник, откуда синхронизируем данные.
    • target — куда синхронизируем.

    * в данном примере мы синхронизируем два каталога на локальном компьютере. Таким же образом, можно синхронизировать данные и в подмонтированных каталогах, например, по nfs или cifs (smb).

    Создадим два тестовых каталога:

    Перезапускаем сервис lsyncd:

    systemctl restart lsyncd

    Пробуем создать тестовый файл к каталоге-источнике:

    Ждем 5-10 секунд. Проверяем содержимое каталога-цели:

    Мы должны увидеть файл:

    Сервис готов к работе.

    Синхронизация по сети (SSH)

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

    SSH без пароля (по сертификату)

    На компьютере, с которого будем передавать файлы (lsyncd) генерируем ключи:

    ssh-keygen -t rsa

    . на все запросы просто нажимаем Enter.

    Переносим id_rsa.pub на целевой компьютер (куда будем передавать данные с помощью lsyncd):

    scp /root/.ssh/id_rsa.pub dmosk@192.168.1.15:/home/dmosk/.ssh/authorized_keys

    * если мы получим ошибку scp: /home/<user>/.ssh/authorized_keys: No such file or directory, необходимо на удаленном компьютере создать каталог .ssh в профиле пользователя, которому мы пытаемся передать ключ. Например, командами, mkdir /home/dmosk/.ssh и chown dmosk:dmosk /home/dmosk/.ssh.
    * обратите внимание, что мы передаем созданный ключ в каталог пользователя dmosk. Это значит, что мы будем подключаться к целевому компьютеру от этого пользователя. Важно, чтобы у последнего были подходящие права для редактирования файлов в целевой папке, в которую мы будем синхронизировать данные.

    Пробуем подключиться к удаленному компьютеру:

    Мы должны подключиться по SSH без ввода пароля. В противном случае, на целевом компьютере (к которому у нас не получилось подключиться) открываем конфигурационный файл для ssh:

    В этой статье я объясню, как установить Lsyncd (Live Syncing Mirror Daemon) в системах Linux и как синхронизировать удаленные и локальные каталоги в Linux.

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

    По умолчанию это только rsync.

    Все пользовательские файлы конфигурации написаны на языке Lua, таким образом, можно получить мощную, гибкую и простую конфигурацию.

    Lsyncd 2.2.1 требует rsync 3.1 для всех исходных и целевых машин.

    Установка Lsyncd на RHEL / CentOS 7

    Чтобы включить lsyncd в системе CentOS 7.5, нам нужно включить репозиторий EPEL.

    Вы можете просто запустить эту команду для ее установки.

    Вы можете подтвердить установленную версию, выполнив следующую команду:

    Настройка Lsyncd

    Файл конфигурации Lsyncd создается автоматически в /etc/lsyncd.conf в системе RHEL / CentOS 7.5.

    По умолчанию его содержимое выглядит следующим образом:

    Мы должны изменить этот файл конфигурации в соответствии с нашей целью.

    Как упоминалось в этом файле конфигурации, все примеры сценариев доступны в следующем месте: /usr/share/doc/lsyncd-2.2.2/examples/

    Все эти файлы представляют собой файлы конфигурации lsyncd.

    Ниже приведены примеры файлов конфигурации:

    Пример конфигурации для локальной синхронизации:

    Пример конфигурации для удаленной синхронизации:

    Чтобы сохранить этот процесс синхронизации вместо запуска задания cron каждые X минут, lsyncd использует хуксы ядра Linux, чтобы получать уведомления, когда какой-либо файл в каталоге был изменен.

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

    После создания или изменения файла конфигурации lsyncd необходимо перезапустить процесс lsyncd.

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

    Ниже перечислены некоторые важные параметры rsync:

    Синхронизация локальных каталогов

    Теперь давайте посмотрим, как синхронизировать две локальные папки с помощью lsyncd.

    Мы можем создать исходную папку, а именно SRC_DIR и целевую папку, а именно DEST_DIR, чтобы более подробно объяснить этот процесс.

    Давайте создадим папки и добавим некоторые файлы в исходный каталог для выполнения синхронизации.

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

    Эти шаги являются необязательными.

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

    Теперь нам нужно изменить наш конфигурационный файл lsyncd для выполнения локального rsync.

    Нам нужно обновить эти файлы конфигурации с помощью исходных и целевых каталогов и наших файлов журналов.

    Вы можете заменить исходный и целевой каталоги на свои собственные значения.

    Сохраните и закройте файл конфигурации.

    Как только это будет сделано, перезапустите и включите службу lsyncd.

    Теперь сравните содержимое исходных и целевых каталогов, чтобы подтвердить корректность его работы.

    Ура! Содержимое исходного каталога SRC_DIR успешно синхронизировано с целевым каталогом.

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

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

    Высокая доступность — это больше, чем просто размещение вашего проекта в надежном облаке. По-настоящему высокодоступный сайт должен работать в нескольких регионах облака и его пользователи не должны замечать каких-то изменений даже если один из регионов облака станет недоступным. Разработчик веб-сайта должен обеспечить работоспособность сайта даже в случае чрезвычайной ситуации. Системы высокой доступности дублируются: при сбое у провайдера сайт будет доступен. При сбое репликации пользователя сайт также должен быть доступен. Если необходимо провести работы на сервере разработчику или перезагрузить его — пользователи не должны замечать этого.


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

    Lsyncd

    Lsyncd (Live Syncing Daemon) – приложение для своевременного интерактивного зеркалирования данных серверов для использования в кластерах высокой доступности. Особенно хорошо lsyncd подходит для систем с небольшим трафиком синхронизации. Приложение собирает информацию об изменениях данных через подсистему ядра Linux inotify в течение определенного в конфигурации периода и запускает процессы зеркалирования изменений (через rsync по умолчанию, но есть и другие варианты). По-умолчанию lsyncd запускается как демон в фоне и протоколирует свои действия с помощью syslog. Для целей тестирования можно запустить приложение без демонизации, чтобы видеть происходящие действия в терминале для отладки.

    Lsyncd не использует отдельную файловую систему или блочное устройство и не влияет сильно на производительность локальной файловой системы.

    Использование опции Rsync + SSH позволяет передавать файлы сразу в целевую директорию вместо передачи места размещения на удаленный сервер.

    Установка и настройка георепликации файлов веб-сервера

    Получение доступа к разным регионам InfoboxCloud


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


    Создайте 2 сервера: один в Москве, другой в Амстердаме.


    В качестве операционной системы выберите CentOS 7. В статье рассматривается именно она, но можно использовать и другую операционную систему Linux при необходимости. При этом настройки могут отличаться. Вы можете использовать любой тип виртуализации на выбор. Разница для конкретного сценария в том, что если вы не поставите галочку «разрешить управление ядром ОС» — сможете использовать автомасштабирование по памяти для серверов, что позволит использовать ресурсы эффективнее. А если поставите — сможете настроить подсистему ядра inotify, что будет полезно при высоких нагрузках (пример настройки), но не имеет смысла для обычного небольшого сайта. Обязательно при создании каждого из серверов добавьте по одному публичному ip–адресу, чтобы к серверам был доступ из внешней сети:


    После создания серверов данные для доступа придут к вам на email.

    Настройка DNS


    Настройка серверов

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

    Создайте файл index.html в директории /var/www/html каждого из серверов и убедитесь, что страница корректно открывается в браузере с каждого из серверов.

    Для работы lsyncd нужно, чтобы был предоставлен доступ к каждому из серверов по ключу друг для друга.
    Сгенерируйте ключ SSH (на вопросы можно просто нажать Enter):

    С сервера в Москве добавьте ключ на сервер в Амстердаме:

    С сервера в Амстердаме добавьте ключ на сервер в Москве:

    Устанавливаем и настраиваем lsyncd

    Указанные ниже действия нужно провести на обоих серверах.

    Для установки lsyncd в CentOS 7 добавьте репозиторий EPEL командой:

    Теперь установите lsyncd:


    Создайте директорию для хранения логов и временных файлов lsyncd:

    Создайте файл конфигурации lsyncd по адресу: /etc/lsyncd.conf

    Для отладки установите параметр nodaemon=true и сохраните изменения. Создайте файл на одном из серверов:

    Запустите lsyncd вручную для проверки, что все корректно синхронизируется.


    Если все прошло хорошо — на сервере в другом регионе в папке /var/www/html вы увидите созданный тестовый файл.


    Теперь верните значение nodaemon=false в /etc/lsyncd.conf. Добавьте lsyncd в автозагрузку и запустите сервис:

    Убедитесь, что данные реплицируются и после перезагрузки.

    Репликация в 2 стороны

    Чтобы работала репликация и в обратную сторону — на сервере в другом регионе проведите такие же настройки, но в файле конфигурации lsyncd укажите адрес первого сервера. Проверьте, что данные реплицируются и в обратном направлении. В конфигурации lsyncd уже указана временная директория temp_dir, использование которой необходимо для двусторонней синхронизации.

    Реплицировать в 2 стороны необходимо не всегда, так как в mysql не рекомендуется использовать master-master репликацию и в случае выхода первого сервера из строя при использовании такой базы данных придется настроить репликацию из второго рабочего сервера на третий. Это делается просто, если мы заранее подготовим шаблон резервного сервера для облака, о чем будет рассказано в последующих статьях. Сегодня мы работаем только с файлами и для статического сайта двусторонняя репликация вполне применима.

    Проверяем доступность сайта

    Давайте зайдем на наш сайт:


    Оба сервера доступны.

    Далее выключим сервер в Москве.


    Наш сайт доступен:


    Включим сервер в Москве и выключим в Амстердаме:


    Наш сайт доступен:


    Почему это работает?

    Современные браузеры при наличии нескольких А-записей сначала пытаются зайти на один ip–адрес, а если он не доступен — на другой. Таким образом если хотя бы один сервер доступен — сайт будет работать.

    Данный подход в более сложном виде давно используется большими сайтами и резервных серверов для них сделано много. Например у Google их 11:


    Заключение

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

    Если вы обнаружили ошибку в статье, автор ее с удовольствием исправит. Пожалуйста напишите в ЛС или на почту о ней. Если вы не можете оставлять комментарии на Хабре — напишите их в Сообществе InfoboxCloud.


    Основные Lsyncd функции:

    Установка Lsyncd в Unix/Linux

    Процесс установки очень прост и не требует очень больших усилий. Я приведу несколько примеров по установки данной утилиты на различные Unix/Linux ОС.

    Установка Lsyncd в Debian/Ubuntu

    После установки, переходим к настройке.

    Установка Lsyncd в CentOS/RedHat/Fedora

    И, установим дополнительные пакеты:

    После установки, переходим к настройке.

    Установка Lsyncd в Mac OS X

    Ставим себе на машину homebrew:

    И выполняем установку:

    После установки, переходим к настройке.

    Настройка и использование Lsyncd в Unix/Linux

    Чтобы все хорошо работало, нужно сгенерировать RSA ключ и положить его на удаленный сервер. Я пропущу данный шаг, т.к я это уже сделал, а если не знаете как это сделать вот статья:

    Настройка и использование Lsyncd на Mac OS X

    И так, я у себя на mac OS X хотел бы настроить lsyncd таким образом, чтобы он синхронизировал все изменения.

    И так, я установил данную утилиту и следующим действием, я создам папку где будет хранится лог-файлы:

    И создаю нужные файлы:

    PS: В ОС Linux они могут лежать в /var/log/lsyncd. Если не имеется такой папки, то создаем.

    Далее, я создаю каталог lsyncd в /etc/ для настройки конфига:

    После создания данной папки, я создаю конфигурационный файл:

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

    файл имеет следующее содержание:

    Теперь мы можем запустить службу lsyncd, выполнив следующую команду:

    Настройка и использование Lsyncd на CentOS

    Вот еще пример (проверялось на CentOS 7):

    ИЛИ, если использовать RSYNC:

    Добавляем в автозагрузку ОС:

    Если используете CentOS 7:

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

    Репликация в 2 стороны

    Чтобы работала репликация и в обратную сторону — на сервере в другом регионе проведите такие же настройки, но в файле конфигурации lsyncd укажите адрес первого сервера. Проверьте, что данные реплицируются и в обратном направлении. В конфигурации lsyncd уже указана временная директория temp_dir, использование которой необходимо для двусторонней синхронизации.

    Репликация на несколько серверов

    Вот пример конфиругации:

    Читайте также: