Pentru sincronizarea datelor între servere, de obicei se folosește rsync pornit de un cronjob. Dar acesta presupune verificarea tuturor fișierelor dintr-o mapă ceea ce consumă resurse și timp în cazul unui volum mare de date.
LsyncD monitorizează fișierele modificate și le sincronizează doar pe ele, astfel impactul asupra performanței este practic nul. Pentru asta LsyncD utilizează inotify / fsevents.
Sincronizarea datelor este necesară cel mai des în cazul balansării sarcinii între două WEB Servere și mai multe, cînd conținutul dintre ele trebuie mențiunut identic.
Setările din acest tutorial au fost verificate pe sisteme Debian 7.9 și lsyncd 2.0.7.
Se instalează pachetele necesare:
apt-get install lsyncd pkg-config lua5.2 liblua5.2 rsync
Se adaugă mapă pentru setările lsyncd:
mkdir /etc/lsyncd/
Se adaugă fișierul de configurare:
vim /etc/lsyncd/lsyncd.conf.lua
Se inserează următorul conținut în el:
settings = { logfile = "/var/log/lsyncd.log", statusFile = "/var/log/lsyncd.status", statusInterval = 10 }
sync { default.rsync, source="/var/www/", target="server2.md:/var/www/", delete = false,
rsync = { compress = true, acls = true, verbose = true, owner = true, group = true, perms = true, delete = false, rsh = "/usr/bin/ssh -o StrictHostKeyChecking=no" } }
În loc de server2.md se indică numele sau adresa IP a celui de-al doilea server. Pentru source și target se indică dosarele corespunzătoare. Pentru al doilea server se procedează la fel, indicîndu-se corect numele/adresa primului server.
Parametrul delete = false este foarte important în cazul dat, pentru că în caz contrar foarte ușor s-ar putea pierde date în caz de careva probleme de sincronizare.
Pe primul server se generează o cheie de securitate pentru utilizatorul root:
ssh-keygen -t rsa
Se afișează conținutul cheiei private:
cat /root/.ssh/id_rsa.pub
Cheia are următoarea formă:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAvmyHLLtwnZY9xDFOLV1oKteecmfukqgT+nK0Yr5DMySM7gvqNKiJbIjdxnYrpuQP1mNYWWCtvgf146LUiC9bVjeZIgjZZl93yi5PGKLGSknTNB0pQVNWx3aT6+UqbtEJVBUHWCu3KxWD5VIXD0gIpnqyPbIVft5hZXzmGZ2+F+TF6S++W5ygiYD47GkC9Ljs2iwvl6xKxlkRuZ4lrgsQng92AErBAjsH+dVGQx0I3niZEcCMagp4KOadxrEoqH/uEbr8i+MyaE1wG8opqsZ5KueCBvEdPS+K3S9DQ4D1MxHml2YVfgr/aGozb0rUpTJU9OQE1Qsy63HGt+VLTAOD root@server1.md
Se inserează această cheie în fișierul /root/.ssh/authorized_keys de pe cel de-al doilea server.
În același mod se generează o cheie pe serverul al doilea și se autorizează conexiunea pe primul server.
Aceeași procedură se folosește pentru a permite conexiunea dintre servere fără parole.
Se pornește serviciul LsyncD:
service lsyncd start
Se verifică logurile pentu a determina dacă sincronizarea funcționează:
cat /var/log/lsyncd.log
Pentru monitorizare continuă:
tail -f /var/log/lsyncd.log