Sincronizarea datelor între două servere cu LsyncD

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:

Se adaugă mapă pentru setările lsyncd:

Se adaugă fișierul de configurare:

Se inserează următorul conținut în el:

Î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:

Se afișează conținutul cheiei private:

Cheia are următoarea formă:

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:

Se verifică logurile pentu a determina dacă sincronizarea funcționează:

Pentru monitorizare continuă:

Salvarea setărilor curente pentru iptables ca script sh

Pentru aceasta vom folosi un script perl.  Creați un fișier cu numele:

Adăugați în el următorul conținut:

Folosiți următoarea comandă pentru a genera scriptul:

Convert iptables-save output to shell script.

Configurarea serverului ProFTPD pentru autentificare cu utilizatori de sistem şi conexiune SFTP

Implicit, serverul SSH pe sisteme GNU/Linux permite transferul de date prin protocolul SFTP. Pentru un sistem care nu implică conexiunea persoanelor cu drepturi restricţionate, e suficient.

Dar dacă este nevoie de a configura accesul unor persoane terţe, atunci apare necesitatea de izola aceşti utilizatori. Cea mai simplă şi funcţională soluţie în cazul dat este configurarea unui server FTP ce va lucra şi pe protocolul SFTP, pe un port aparte.

În acest exemplu vom utiliza ProFTPD şi un sistem de operare Ubuntu/Debian.

Instalăm serverul ProFTPD:

În fişierul /etc/proftpd/conf.d/sftp.conf adăugăm următorul conţinut:

În fişierul /etc/proftpd/proftpd.conf decomentaţi şi modificaţi (sau adăugaţi dacă lipsesc) următoarele rînduri:

Dacă doriţi să dezactivaţi posibilitatea de conectare SFTP oferită de SSH (pe portul 22), atunci comentaţi (sau ştergeţi) în fişierul /etc/ssh/sshd_config următorul rînd:
Subsystem sftp /usr/lib/openssh/sftp-server

Reporniţi serverul ProFTPD:

Reporniţi serverul SSH (dacă aţi făcut modificări în el):

Pentru autentificare se for folosi datele utilizatorilor din sistem. Pentru a adăuga un utilizator nou folosiţi instrucţiunea:

Pentru conectare puteţi folosi FileZilla sau oarecare alt client. Setările sînt următoarele:
Host: hostname sau IP
Port: 2222
Protocol: SFTP
User: numele_utilizatorul
Password: parola_utilizatorului

Apache/PHP, Sendmail și SELinux împreună

SELinux este un modul de securitate a nucleului linux. Implicit, SELinux nu permite ca WEB-Serverul Apache să poată expedia mesaje prin intermediul componentei Sendmail, afișînd în mail.log următoarea eroare:
NOQUEUE: SYSERR(apache): can not chdir(/var/spool/clientmqueue/): Permission denied

Această eroare poate induce în eroare, pentru că e un banal mesaj ce indică permisiuni greșite asupra dosarului. Variabila SELinux care gestionează permisiunea de expediere este httpd_can_sendmail

Pentru a verifica ce valoare are, se folosește instrucțiunea:

Rezultat:

Dacă rezultatul este off, atunci trebuie setat în on pentru a permite expedierea mesajelor. Se folosește instrucțiunea:

Montarea adițională a dosarelor în Linux (Permanent mount and bind)

Montare permanentă a unui dosar. fstab bind

Utilizînd un sistem de operare Linux, poate apărea necesitatea de a monta un dosar în altă locație.

Scop

Principalele motive sînt două: Pentru a oferi unui dosar spațiu de pe altă partiție fără a modifica structura partițiilor sau pentru a oferi unui utilizator acces într-un dosar în care el nu are acces direct. În primul caz se face montarea adițională atunci cînd conținutul unui dosar depășește spațiul alocat inițial și nu se dorește redimensionarea partițiilor, care implică mai multe cunoștințe, riscuri și timp. În cazul al doilea, montarea adițională reprezintă o modalitate eficientă și comodă de a oferi acces unor utilizatori sau programe în dosarele spre care ei/ele nu au acces direct, spre exemplu acces pentru un utilizator FTP în alt dosar decît dosarul gazdă. Montarea poate fi curentă, ceea ce înseamnă că la repornirea calculatorului va dispărea, sau permanentă.

Realizare

Pentru montarea curentă, în consola linux executați cu drepturile de administrator o comandă de tipul:
mount –bind /locație/nouă/ /dosarul/sursă/
Unde: /dosarul/sursă/ – este locul real unde se va afla tot conținutul, iar /locație/nouă/ – este dosarul în care conținutul se va afișa repetat.

Pentru montare permanentă, în fișierul de configurare /etc/fstab se adaugă pentru fiecare montare adițională cîte o înregistrare de tipul:
/dosarul/sursă/ /locație/nouă/ bind rw,bind 0 0

Atenție!

Dacă conținutul /etc/fstab va fi incorect, sistemul de operare nu va putea să se încarce! Orice modificare care o faceți în una din locații se va răsfrînge asupra conținutului real! Dacă la același dosar cu conținut au acces mai mulți utilizatori, modificați drepturile de acces conform necesităților!