Meniu Blog
Detalii vizitator
Dacă am dreptate dă-mi un like pe Facebook!
Caută cod poștal
Articole pe blog
Recomand
Tutorial web server replication (rsync și MySQL)
Înainte de începerea tutorialului să discutăm puțin despre ce înseamnă web server replication și la ce ne folosește. Să spunem că avem un server web pe care ținem un site foarte vizitat, prin urmare, vom ajunge în situația în care server-ul, din punct de vedere hardware, nu o să mai facă față traficului mare al vizitatorilor. În acest caz, putem face două lucruri: să facem upgrade la server-ul existent sau să redirecționăm și să împărțim traficul către mai multe servere web identice (în cazul nostru, două). Această a doua variantă o vom parcurge în tutorialul următor.
Presupunem că deja avem un server web funcțional (cu sistem de operare Centos, Apache, MySQL, PHP) iar pe lângă el mai avem un server care stă degeaba și dorim să îl folosim tot pentru același site. Foarte important pentru ca această operațiune să decurgă fără probleme este ca pe server-ul nou să instalăm aceleași versiuni de soft, și aici mă refer la sistem de operare (să fie aceiași distribuție, același kernel), Apache, MySQL, PHP, etc.
La început facem setările necesare pentru MySQL replication pe server-ul existent, pe care îl vom numi server master.
În primul rând trebuie să activăm log-urile binare în MySQL și să atribuim server-ului un id (pentru că este server-ul master îi vom pune id 1). Deschidem fișierul /etc/my.cnf și adăugăm în secțiunea [mysqld]:
log-bin = mysql-bin.log server-id = 1
Dăm un restart la MySQL:
shell# service mysqld restart
Următorul pas este să ne conectăm la consola MySQL și să creem un user cu drepturi pentru replicare:
shell# mysql -u root -p
Odată conectați la MySQL creem user-ul (user și parola se vor înlocui cu credențialele dorite) prin comenzile:
mysql> GRANT REPLICATION SLAVE ON *.* TO 'user'@'%' IDENTIFIED BY 'parola';
mysql> FLUSH PRIVILEGES;
Fiind în continuare conectați la MySQL va trebui să blocăm scrierea în bazele de date, să notăm poziția din log-urile binare, iar apoi să facem o salvare a bazelor de date pentru a le importa pe server-ul nou:
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS; - din tabelul care va fi afișat vom nota numele log-ului binar din coloana File și poziția din coloana Position
shell# mysqldump -u root -p --all-databases --master-data > dbdump.db - comanda se rulează din shell, nu din consola MySQL
mysql> UNLOCK TABLES; - cu această comandă deblocăm scrierea în bazele de date
mysql> quit;
După toate acestea, vom seta pentru replicare server-ul nou, numit în continuare server slave.
Începem prin a copia salvarea de date făcută mai devreme pe server-ul master (dbdump.db) și o importăm pe server-ul slave:
shell# mysql -u root -p < dbdump.db
Apoi deschidem fișierul /etc/my.cnf și adăugăm id-ul server-ului, precum și datele de conectare către server-ul master, creeate anterior:
server-id = 2 master-host = ip_server_master master-user = user_mysql_server_master master-password = parola_mysql_server_master master-connect-retry = 60
Dăm un restart la MySQL:
shell# service mysqld restart
Nu mai avem de făcut decât să îi spunem server-ului slave din ce poziție să înceapă sincronizarea datelor de pe server-ul master, poziție care o avem notată:
mysql> SLAVE STOP;
mysql> CHANGE MASTER TO MASTER_HOST='ip_master', MASTER_USER='user_mysql', MASTER_PASSWORD='parola_mysql', MASTER_LOG_FILE='nume_log', MASTER_LOG_POS=poziție_log;
mysql> START SLAVE;
mysql> quit;
De acum orice modificare se va face în bazele de date pe server-ul master, automat schimbările se vor transmite și pe server-ul slave.
Probabil acum vă întrebați cum vom face o replicare și a fișierelor de pe un server pe celălalt. Este mult mai simplu decât cu bazele de date. Vom folosi aplicația rsync cu ajutorul căreia vom sincroniza fișierele de pe server-ul master pe server-ul slave. De ce rsync? Pentru că fișierele sunt transferate rapid și sigur prin ssh iar copierea se face diferențial, astfel se copiaza doar modificările, nu toate datele. Pentru a face această sincronizare automat vom creea un cron job pe server-ul slave care să ruleze la fiecare minut:
shell# crontab -e
* * * * * /usr/bin/rsync --progress --stats --archive -z --compress --delete -t ip_server_master:/var/www/html/folder_site/ /var/www/html/folder_site/
Trebuie avut în vedere ca firewall-urile ambelor servere să fie configurate în așa fel încât să permită conexiunile la ssh, MySQL, Apache. Totodată server-ul master trebuie să permită conectarea prin ssh a server-ului slave fără a se mai cere parola de root.
Un tutorial cam lung și un pic complicat, dar sper să vă fie de folos. Succes!
Vremea acum
București, România | |
Vineri, 04 Oct 2024, ora 04:44 | |
13.6°C
Ceață
|
Temperatură resimțită: | 13.4°C |
Viteza vântului: | 11 km/h |
Soarele răsare la ora: | 04:17 |
Soarele apune la ora: | 15:51 |
vremea detaliată în orașul tău |
Info financiar
Curs valutar BNR | |||
actualizat Joi, 03 Oct 2024 | |||
EUR: | 4.9763 RON | -0.0001 | |
USD: | 4.5085 RON | +0.0133 | |
GBP: | 5.9133 RON | -0.0618 | |
CHF: | 5.2942 RON | -0.0145 | |
XAU: | 383.6722 RON | +0.2411 |
Convertor valutar | |
Din: | În: |
Rezultat: | 0 |
evoluție și grafice valute |