Записки криворукого админа
  • Записки криворукого админа
  • SaltStack
    • State
      • Name active interface
      • watch, require, *_in
    • Salt-api
      • tokens
    • ERROR
      • No module named tornado.stack_context
      • Got a bad pillar from master
  • Jinja
    • Last comma
  • Python
    • проверка версии модуля
  • Gitlab
    • Example values CI
    • gitlab multi pipeline
  • Linux
    • qemu/kvm
    • Cron all user
    • OpenVPN GUI
    • Group Linux
    • passwd
    • Systemctl
    • chmod для взрослых ;)
    • Comand0s
      • disck
      • grep
      • link
      • mkdir
    • Supervisor
    • Изменение hostname
    • WiFi - broadcom
    • cockpit
    • Viber
    • Время в терминале
    • Chmod
    • Docker ?
    • Тмух
    • Количество ядер
  • Utility
    • scp
      • zsh: no matches found
    • rsyslog
      • stop not work
    • Vi/Vim
      • Hotkeys
    • parted
      • Create over 2TB partition
    • lsyncd
    • mdadm
      • /boot on RAID1
  • MySQL
    • Типы таблиц (ENGINE)
    • Доступ для пользователя
    • Xtrabackup
    • WSREP - help
    • Примитивы
  • NetWork
    • OpenVPN
    • Установка Pure-FTP
  • Ansiblya
    • unmanaged files
  • Restore
    • Safest way to clean up boot partition
  • Редис
    • High Performance Redis
  • SSL
    • API cloudflare
    • bundel
  • Apache
    • Nginx, Apache, REMOTE_ADDR 127.0.0.1
  • Openresty/Nginx
    • default, Not $host
    • NGINX+Lua=parser_ip
    • NGINX+Lua=Size_img
  • Mong0
  • Mac
    • VirtualBox
  • Hobby
    • 🖖XMage
Powered by GitBook
On this page
  • Установка
  • Папки
  • Конфиг
  • Синк одного файла
  • Исключения
  • Настройки ядра
  • Example
  • Синк на несколько серверов
  • Отдельный файл для каждого sync
  • Start/stop
  • Errors
  • ssh_exchange_identification: read: Connection reset by peer
  1. Utility

lsyncd

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

PreviousCreate over 2TB partitionNextmdadm

Last updated 4 years ago

Установка

apt instal lsyncd

Папки

mkdir -p /etc/lsyncd && mkdir -p /var/log/lsyncd && mkdir -p /etc/lsyncd/conf.d/

Конфиг

vi /etc/lsyncd/lsyncd.conf.lua

Для синка в обе стороны, обязательный параметр "temp_dir"

ssh - указывать не обязательно, если настройки стандартны

settings {
      logfile    = "/var/log/lsyncd/lsyncd.log",
      statusFile = "/var/log/lsyncd/lsyncd_status.log",
      statusInterval = 20,
      nodaemon   = false
}
sync {
      default.rsyncssh,
      source="/path/to/dir",
      host="new_server",
      targetdir="/path/to/dir/new_server",
      excludeFrom="/etc/lsyncd/linux_notes.exclude",
      delay=10,
      delete = true,
      rsync = {
               archive = true,
               compress = false,
               whole_file = false,
               sparse = true,
               update = true,
               temp_dir="/tmp/",
               links = true,
               times = true,
               protect_args = false,
               acls = true,
               verbose = true
              },
      ssh = {
        port = 22,
        _extra = {"/usr/bin/ssh -l user -p 22 -i /home/user/.ssh/id_rsa -o StrictHostKeyChecking=no"}
    } 
}

Синк одного файла

sync {
      default.rsyncssh,
      source="/etc/security",
      host="new_server",
      targetdir="/etc/security",
      delay=10,
      delete=false,
      rsync = {
               archive = true,
               compress = false,
               whole_file = false,
               sparse = true,
               update = true,
               temp_dir="/tmp/",
               links = true,
               times = true,
               protect_args = false,
               acls = true,
               verbose = true,
               _extra = {
                    "--include=limits.conf",
                    "--exclude=*"
               }
      },
      ssh = {
        port = 22
      }
}

Исключения

vi /etc/lsyncd/linux_notes.exclude
.git/*
.*

Настройки ядра

У inotify есть три параметра (см. ls /proc/sys/fs/inotify/):

max_queued_events — максимальное число событий в очереди; default = 16384;

max_user_instances — сколько инстансов inotify может запустить один пользоваетль; default = 128;

max_user_watches — сколько файлов может отслеживать один пользоваль; default = 8192.

echo "
fs.inotify.max_user_watches = 16777216
fs.inotify.max_queued_events = 65536
" >> /etc/sysctl.conf
sysctl -p
echo 16777216 > /proc/sys/fs/inotify/max_user_watches
echo 65536 > /proc/sys/fs/inotify/max_queued_events

Example

Синк на несколько серверов

settings = {
   delay        = 1,
   maxProcesses = 3,
   logfile = "/var/log/lsyncd/lsyncd.log",
   statusFile = "/var/log/lsyncd/lsyncd.stat",
}

targetlist = {
 "1.0.0.2:/var/www/html", 
 "1.0.0.3:/var/www/html"
}

for _, server in ipairs(targetlist) do
  sync{ default.rsync,
    source="/var/www/html",
	rsyncOps="-rltvupgo"
    target=server
  }
end

Отдельный файл для каждого sync

local confdir = '/etc/lsyncd/conf.d/'
local entries = readdir( confdir )

for name, isdir in pairs( entries ) do
    if not isdir then
        dofile( confdir .. name )
    end
end

Start/stop

systemctl restart lsyncd
systemctl enable lsyncd

Errors

ssh_exchange_identification: read: Connection reset by peer

при большом количестве файлов для синхронизации, правим в файле /etc/ssh/sshd_config на сервере приемнике правим:

MaxSessions 100
MaxStartups 100:30:1000

MaxSessions Задает максимальное количество открытых сеансов, разрешенных для одного сетевого подключения. По умолчанию 10.

MaxStartups. Запись параметра имеет форму "start:rate:full". В нашем случае она означает отключение с вероятностью 30% при наличии 100 неаутентифицированных связей, с линейным ростом вероятности до 100% при достижении 1000.

https://github.com/axkibe/lsyncd/issues/441#issuecomment-293287126
Lsyncd - Live Syncing (Mirror) Daemon