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:

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

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:

apt-get update && apt-get install proftpd

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

<IfModule mod_sftp.c>
 SFTPEngine on
 Port 2222
 SFTPLog /var/log/proftpd/sftp.log
 SFTPHostKey /etc/ssh/ssh_host_rsa_key
 SFTPHostKey /etc/ssh/ssh_host_dsa_key
 SFTPAuthMethods password
 SFTPCompression delayed
 </IfModule>

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

DefaultRoot ~
 PassivePorts 50000 50010
 AuthOrder mod_auth_pam.c* mod_auth_unix.c

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:

service proftpd restart

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

service ssh restart

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

adduser numele_utilizatorul

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

Rapoarte zilnice despre activitatea postfix

Dacă aveți un server pe linux, care are configurat un server poștal postfix, puteți vedea zilnic statistica mesajelor. Unul din instrumentele care vă permit acest lucru este scriptul PFLogSumm: https://calomel.org/pflogsumm.html.

1. Înainte de a începe, asigurați-vă că aveți instalate componentele necesare.

Debian: aptitude install libdate-calc-perl mailutils

CentOS: yum install perl-Date-Calc mailx

2. Să purcedem!

Descărcăm: wget http://jimsun.linxnet.com/downloads/pflogsumm-1.1.3.tar.gz

Dezarhivăm: tar -zxvf pflogsumm-1.1.3.tar.gz

3. Copiem scriptul: cp pflogsumm-1.1.3/pflogsumm.pl /usr/local/bin/pflogsumm.pl

3′. Dacă rulați pe Debian, atunci trebuie să corectați numele fișierelor de logare a activităților postfix:

sed -i ‘s/maillog.0/mail.log.1/g’  /usr/local/bin/pflogsumm.pl

sed -i ‘s/maillog/mail.log/g’ /usr/local/bin/pflogsumm.pl

4. Redactăm crontab-ul: crontab -e

Adăugăm rularea scriptului pflogsumm.pl la urmă: /usr/local/bin/pflogsumm.pl -u 5 -h 5 –problems_first -d today /var/log/mail.log | mail -s „pflogsumm report `date`” root

După care obligatoriu lăsăm un rînd liber. Salvăm modificările.

5. Testăm dacă scriptul se execută fără erori – din consolă: /usr/local/bin/pflogsumm.pl -u 5 -h 5 –problems_first -d today /var/log/mail.log | mail -s „pflogsumm report `date`” root

Dacă nu apare niciun text – înseamnă că scriptul s-a executat cu succes.

6. Dacă nu aveți configurată readresarea scrisorilor de la utilizatorul root către un cont de e-mail valid, atunci puteți vedea e-mailurile direct din consolă, cu una din opțiunile: mail, mailx sau cone (pe asta v-o recomand, dacă nu este în sistem – se instalează cu: aptitude install cone) sau direct cu:  cat /var/spool/mail/root

În fiecare zi, la ora 23:59 veți primi un e-mail cu statistica detaliată pentru această zi.

Avantajul acestui script este că el doar prelucrează logurile mail.log(sau maillog), fără a se implica în funcționalitatea sistemului.

Despre rețea, internet și Internet

Un articol despre principiile de funționare, topologii, tipuri și exemple de rețele, despre ce este o adresă IP și de care adrese există, despre schimbul de date și organizarea unei rețele.

internet rețea

Articolul precedent din această serie: Despre calculator.

Principii generale

În timpurile de demult, înainte de a deveni „personal”, calculatorul era un sistem de dimensiuni enorme, încît putea ocupa o clădire cu două etaje, implicînd un număr considerabil de specialiști ce asigurau întreținerea mașinăriei. Pe atunci au apărut conceptul și noțiunile de „server” – calculator performant cu ajutorul căruia se procesează un volum mare de date și „client” – calculator cu performanță redusă, care asigură conexiunea spre un server. Cu timpul această relație „client-server” a suferit modificări, astfel încît un anumit calculator poate fi și server (dacă alte calculatoare folosesc resursele și datele lui) și client în același timp (dacă el folosește resursele și datele altui calculator din rețea), însă ca noțiune rămîne valabilă și astăzi, mai ales în cazul conceptualizării interacțiunii calculatoarelor în rețea.

Prelucrarea datelor pentru a fi transmise în rețea între două noduri (dispozitive din rețea) are loc în mai multe trepte, la fiecare etapă fiind aplicate anumiți algoritmi de împărțire a datelor în entități mai mici, astfel încît la final să ajungă a fi impulsuri electrice, optice sau electromagnetice. Acest model ierarhic de comunicare a fost standardizat, fiind numit modelul ISO-OSI. Dispozitivul fizic atașat sau integrat unui calculator care permite conectarea la o rețea este un modem (GSM, DialUP) sau o placă de rețea (Network Interface Card).

Cea mai răspîndită tehnologie de interconectare a calculatoarelor la moment este Ethernet, care își trage originea încă din 1973, suferind ulterior multiple îmbunătățiri, încît de la viteza inițială de 3 Mb/s să ajungă pînă la 100 Gb/s în curent și nu se oprește aici, în următorii ani va fi depășită viteză de 1Tb/s! Avantajul acestei tehnologii constă în posibilitatea de a opera independent de mediul fizic în care sînt transmise semnalele (cablu telefonic, cablu coaxial, cablu torsadat, fibră optică, unde electromagnetice), principiul simplu și eficient de interconectare a nodurilor în rețea (fiecare nod în rețea primește o adresă MAC unică, orice pachet de date transmis conține informație despre sursă și destinație), scalabilitatea (indiferent de viteza de operare a unei porțiuni a rețelei, schimbul de date se realizează prin același mecanism).

Mai multe calculatoare interconectate formează o rețea de calculatoare. Adresele MAC sînt valide doar în interiorul unei singure rețele. Pentru a conecta două sau mai multe rețele a fost implementat protocolul IP (există și alte protocoale mai puțin răspîndite și avînd aplicabilitate specifică), acesta prevede cîte o  adresă IP unică pentru fiecare nod într-o rețea, cel puțin un nod pentru interacțiunea cu alte rețele legate și o mască de rețea pentru a putea împărți o rețea fizică în mai multe rețele logice.

Pentru a construi o rețea izolată este suficient un dispozitiv de comunicare numit comutator de rețea (network switch). Pentru a conecta două rețele este necesar un ruter (router). Deseori un ruter are incorporat și un switch, permițînd a folosi un sigur dispozitiv pentru ambele funcții (interacțiune în rețea, interacțiunea între rețele). La configurarea unui nod în rețea se indică obligatoriu adresa ruterului, care va fi folosită pentru a comunica cu dispozitive din afara rețelei (Poartă implicită, Default Gateway). Ruterul cel mai des implică capacitatea de a securiza conectarea între rețele (Paravan de protecție, Firewall).

Tipuri de rețele

Topologia care definește o rețea de calculatoare poate fi diversă, în dependență de numărul de noduri și distribuția lor. Istoric au existat topologii standarde pentru rețele locale (magistrală, inel, stea), rețele mari reprezintă o topologie mixtă.

În dependență de aria de acoperire, rețelele se împart în mai multe tipuri:

  • Rețea personală (PAN, Personal Area Network) – o rețea în raza a cîțiva metri, formată din dispozitive proprii unei persoane (telefon mobil, scanner, imprimantă, etc) conectate la un calculator; conexiunea se bazează pe fire, bluetooth, infraroșu, etc;
  • Rețea locală (LAN, Local Area Network) – o rețea constituită în raza unui apartament, oficiu sau bloc, formată dintr-un număr mic de calculatoare; o rețea locală fără fir se numește WLAN (Wireless LAN); conexiunea se bazează pe cablu torsadat sau Wi-Fi;
  • Rețea metropolitană (MAN, Metropolitan Area Network) – o rețea extinsă, la nivel de cartier sau oraș; conexiunea se bazează pe cablu optic, cablu telefonic, cablu coaxial, tehnologii CDMA, GSM, WiMax;
  • Rețea de arie largă (WAN, Wide Area Network) – o rețea cu o întindere mare, la nivel de regiune,țară sau continent; conexiunea se bazează pe cabluri optice cu capacitate de transfer înaltă;
  • Rețea globală (GAN, Global Area Network) – rețeaua globală.

Legătura dintre cîteva rețele locale se numește internetwork sau pe scurt internet (se scrie cel mai des cu minusculă). Rețeaua globală poartă numele de Internet (se scrie cel mai des cu majusculă).

În dependență de numărul și specificul destinațiilor, se disting mai multe raporturi de legătură:

  • Unicast – un singur destinatar concret (pentru conexiuni ce presupun un singur traseu posibil);
  • Anycast – un singur destinatar oarecare(pentru conexiuni ce presupun mai multe trasee posibile);
  • Multicast – mai mulți destinatari;
  • Broadcast – toate nodurile din rețea sînt destinatari;
  • Geocast – destinatarii reprezintă o arie geografică.

Așa cum o rețea locală presupune ca toate calculatoarele să aibă adrese IP unice, la fel și rețeaua Internet presupune ca toate nodurile conectate direct să aibă adrese unice. La nivel global, responsabilă de gestiunea domeniilor de adrese IP este compania IANA (The Internet Assigned Numbers Authority), supusă companiei private americane ICANN (The Internet Corporation for Assigned Names and Numbers). Deci juridic Internetul este gestionat de o companie privată, aflată sub jurisdicția SUA.

La nivel de țară, există mai mulți Furnizori de servicii Internet (ISP, Internet Service Provider) care obțin în gestiune domenii de adrese IP, pe care le folosesc ulterior pentru propria infrastructură și pentru a fi alocate clienților ce beneficiază de serviciile lor.

Implementare

În prezent sînt în uz două standarde pentru adresele IP: versiunea 4 (IPv4) și versiunea 6 (IPv6).

În cazul IPv4, o adresă este formată din patru numere cu valoare între 0 și 255 (primul număr între 1 și 255) despărțite prin puncte. Masca de rețea (uneori i se mai spune și mască de subrețea) definește porțiunile care sînt rezervate pentru definirea rețelei și porțiunea pentru noduri. Într-o rețea locală cel mai des se folosește masca de 24 de biți (primele 3 numere rezervate pentru rețea, ultimul număr rezervat pentru noduri) ce are forma: 255.255.255.0, de exemplu pentru rețeaua 192.168.0.0/24 cu masca 255.255.255.0 porțiunea 192.168.0 este fixă și se numește rețea, iar ultima cifră este diferită pentru toate dispozitive de rețea, numite noduri, ea variază de la 0 la 255. Într-o rețea, prima și ultima adresă IP sînt rezervate pentru sistem, 192.168.0.0 și 192.168.0.255 în cazul dat, deci într-o rețea de 24 de biți pot opera pînă la 254 de noduri.

Există mai multe rețele de adrese IP rezervate pentru diferite scopuri. Domeniile de adrese 10.0.0.0 – 10.255.255.255 (10.0.0.0/8), 172.16.0.0 – 172.31.255.255 (172.16.0.0/12), 192.168.0.0 – 192.168.255.255 (192.168.0.0./16) și 169.254.0.0 – 169.254.255.255 (169.254.0.0/16) sînt rezervate, pot fi folosite în cazul LAN și nu pot fi folosite pentru noduri conectate la internet. Domeniul de adrese 127.0.0.0/8 (adrese valide între 127.0.0.1 și 127.255.255.254) este folosit pentru funcționalitățile interne ale calculatorului (localhost). Rețeaua 224.0.0.0/4 este folosită pentru gestionarea infrastructurii Internetului.

Mai există un domeniu de adrese rezervate: 240.0.0.0/4 care are o istorie interesantă. Aceste adrese IP (248 de milioane de adrese unice!) au fost rezervare în zorii adoptării IPv4 pentru „Utilizare în viitor”. La moment este un deficit mare de adrese IPv4 și ar fi cazul să fie atribuite și aceste adrese, dar aproape toate dispozitivele de rețea au fost programate să nu accepte adresele din acest interval drept valide, astfel pentru a fi funcționale, ar fi necesar un efort enorm al tuturor producătorilor și posesorilor de dispozitive ca să rescrie și să implementeze „permisiunea” de a folosi aceste adrese pe toate dispozitivele vechi și noi, ceea ce este practic imposibil.

Pentru a depăși această limită de puțin peste 4 miliarde adrese IPv4 unice în rețeaua Internet, încă din 1996 a fost elaborat standardul IPv6, care oferă 1015 (340 miliarde de miliarde de miliarde de miliarde!) adrese IPv6 unice.

Acest standard presupune flexibilitate și securitate mult mai înalte decît standardul precedent. În IPv6 adresa IP cel mai des este reprezentată ca 8 grupuri de cîte 4 cifre hexazecimale (de exemplu: 2001:0db8:85a3:08d3:1319:8a2e:0370:7334). Spre deosebire de IPv4, în IPv6 reprezentarea poate avea lungime variabilă, datorită faptului că grupurile ce sînt formate din patru zerouri pot fi omise (omiterea se face o singură dată), astfel 2001::2001, 2001:0000::0000:0000:0000:2001 și 2001:0000:0000:0000:0000:0000:0000:2001 reprezintă aceeași adresă.

Aplicație practică

Haideți să analizăm și cîteva exemple practice.

Rețea locală izolată (fără conexiune la alte rețele).

Cel mai ușor mod de conectare a două sau mai multe calculatoare constă în a folosi un comutator de rețea. În acest caz toate calculatoarele se vor conecta la comutator prin cabluri torsadate. Fiecărui calculator îi vor fi setate adrese IP diferite, dar din aceeași rețea, masca de rețea va fi identică pentru toate calculatoarele, implicit 255.255.255.0. De exemplu, pentru rețeaua 192.168.0.0/24, primul calculator va avea adresa 192.168.0.1, al doilea 192.168.0.2, al treilea 192.168.0.3, etc. În asemenea caz interacțiunea dintre oarecare două calculatoare din rețea depinde doar de aceste calculatoare, comutator și cablaj, alte calculatoare din rețea nefiind implicate în schimbul de date.

Două sau mai multe calculatoare pot fi conectate și fără un comutator, în acest mod unul sau mai multe calculatoare din rețea vor rolul de punte pentru calculatoare (regimul punte presupune că un calculator are două sau mai multe interfețe de rețea, conectate la nivel de program astfel încît sînt percepute de sistem ca o singură interfață și avînd o singură adresă IP). Acest mod de conectare face ca schimbul de date între două calculatoare să depinde de toate calculatoarele intermediare.

Rețea locală cu acces la altă rețea sau Internet.

În acest caz, pe lîngă rețeaua descrisă anterior, mai este nevoie de un ruter (sau ca unul din calculatoare să îndeplinească această funcție) pentru comunicarea în afara rețelei. La toate calculatoarele din această rețea va fi nevoie de a seta Poarta implicită (adresa IP a ruterului). Pentru comoditate practică, cel mai des ruterului i se atribuie prima sau ultima adresă validă din rețeaua dată (în cazul nostru ar fi 192.168.0.1 sau 192.168.0.254).

În următorul articol din această serie voi scrie despre Rețeaua WWW.

Transfer de fişiere prin protocolul SFTP (alternativă pentru FTP)

Atunci cînd trebuie să vă conectați pentru a transfera fișiere la un server sau calculator obișnuit ce folosește Linux, dacă nu aveți configurat serverul FTP, puteți să vă conectați prin SFTP (SSH File Transfer Protocol). Acest protocol presupune autentificarea și transferul fișierelor prin SSH, deci absolut fără alte setări decît activarea serverului SSH, cunoașterea portului (dacă a fost modificat cel implicit – 22) și datele de autentificare.

În calitate de client puteți folosi pentru Windows: Filezilla, CoreFTP, WinSCP sau BitKinex, iar Linux are integrată posibilitatea de conectare SFTP chiar în managerul de fișiere a interfeței grafice (comanda: sftp://user@example.com:22) sau puteți folosi versiunea Filezilla pentru Linux.

Setările pentru Filezilla:

filezilla sftp

Setările pentru WinSCP:

winscp sftp