Kako sinhronizirati dva spletna strežnika/spletna mesta Apache z uporabo Rsync


V spletu je na voljo toliko vadnic za zrcaljenje ali izdelavo varnostne kopije vaših spletnih datotek z različnimi metodami, tukaj ustvarjam ta članek za nadaljnjo uporabo in tukaj bom uporabil zelo preprost in vsestranski ukaz Linuxa za ustvarjanje varnostno kopijo vašega spletnega mesta. Ta vadnica vam bo pomagala pri sinhronizaciji podatkov med obema spletnima strežnikoma z »Rsync«.

Namen izdelave zrcala vašega spletnega strežnika z Rsync je, če vaš glavni spletni strežnik odpove, lahko nadomestni strežnik prevzame in tako zmanjša čas izpada vašega spletnega mesta. Ta način ustvarjanja varnostne kopije spletnega strežnika je zelo dober in učinkovit za mala in srednje velika spletna podjetja.

Prednosti sinhronizacije spletnih strežnikov

Glavne prednosti ustvarjanja varnostne kopije spletnega strežnika z rsync so naslednje:

  1. Rsync sinhronizira samo tiste bajte in bloke podatkov, ki so se spremenili.
  2. Rsync lahko preveri in izbriše tiste datoteke in imenike na varnostnem strežniku, ki so bili izbrisani iz glavnega spletnega strežnika.
  3. Pri oddaljenem kopiranju podatkov skrbi za dovoljenja, lastništva in posebne atribute.
  4. Podpira tudi protokol SSH za šifriran prenos podatkov, tako da boste prepričani, da so vsi podatki na varnem.
  5. Rsync uporablja način stiskanja in dekompresije med prenosom podatkov, ki porabijo manj pasovne širine.

Kako sinhronizirati dva spletna strežnika Apache

Nadaljujmo z nastavitvijo rsync za ustvarjanje zrcala spletnega strežnika. Tukaj bom uporabil dva strežnika.

  1. Naslov IP: 192.168.0.100
  2. Ime gostitelja: spletni strežnik.example.com

  1. Naslov IP: 192.168.0.101
  2. Ime gostitelja: backup.example.com

V tem primeru se podatki spletnega strežnika webserver.example.com zrcalijo na backup.example.com. Za to moramo najprej namestiti Rsync na oba strežnika s pomočjo naslednjega ukaza.

 yum install rsync        [On Red Hat based systems]
 apt-get install rsync    [On Debian based systems]

Rsync lahko nastavimo s korenskim uporabnikom, vendar lahko iz varnostnih razlogov na glavnem spletnem strežniku ustvarite nepooblaščenega uporabnika, tj. Webserver.example.com, da zažene rsync.

 useradd tecmint
 passwd tecmint

Tu sem ustvaril uporabnika “tecmint” in mu dodal geslo.

Čas je, da preizkusite nastavitve rsync na varnostnem strežniku (tj. Backup.example.com) in za to vnesite naslednji ukaz.

 rsync -avzhe ssh [email :/var/www/ /var/www
[email 's password:

receiving incremental file list
sent 128 bytes  received 32.67K bytes  5.96K bytes/sec
total size is 12.78M  speedup is 389.70

Vidite lahko, da vaš rsync zdaj deluje popolnoma v redu in sinhronizira podatke. Za prenos sem uporabil “/ var/www”; lokacijo mape lahko spremenite glede na vaše potrebe.

Zdaj smo končali z nastavitvami rsync in zdaj je čas, da nastavimo cron za rsync. Ker bomo uporabljali rsync s protokolom SSH, bo ssh prosil za preverjanje pristnosti in če ne damo gesla za cron, ne bo delovalo. Za nemoteno delovanje crona moramo za rsync nastaviti ssh prijave brez gesla.

Tu v tem primeru to delam kot root, da ohranim tudi lastništvo datotek, to lahko storite tudi za nadomestne uporabnike.

Najprej bomo ustvarili javni in zasebni ključ z naslednjimi ukazi na strežniku za varnostne kopije (tj. Backup.example.com).

 ssh-keygen -t rsa -b 2048

Ko vnesete ta ukaz, ne navedite gesla in kliknite Enter za Empty passphrase, tako da rsync cron ne bo potreboval nobenega gesla za sinhronizacijo podatkov.

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
9a:33:a9:5d:f4:e1:41:26:57:d0:9a:68:5b:37:9c:23 [email 
The key's randomart image is:
+--[ RSA 2048]----+
|          .o.    |
|           ..    |
|        ..++ .   |
|        o=E *    |
|       .Sooo o   |
|       =.o o     |
|      * . o      |
|     o +         |
|    . .          |
+-----------------+

Zdaj je bil ustvarjen naš javni in zasebni ključ, ki ga bomo morali deliti z glavnim strežnikom, tako da bo glavni spletni strežnik prepoznal ta varnostni stroj in mu omogočil prijavo, ne da bi pri sinhronizaciji podatkov zahteval geslo.

 ssh-copy-id -i /root/.ssh/id_rsa.pub [email 

Zdaj se poskusite prijaviti v računalnik z “ssh‘ [email ‘“ in preverite .ssh/pooblaščene_ključke.

 [email 

Zdaj smo končali s ključi za skupno rabo. Če želite izvedeti več o poglobljenem geslu SSH brez prijave, si lahko preberete naš članek o njem.

  1. SSH prijava brez gesla v 5 preprostih korakih

Za to nastavimo cron. Če želite nastaviti cron, odprite datoteko crontab z naslednjim ukazom.

 crontab –e

Odprla se bo datoteka/etc/crontab za urejanje s privzetim urejevalnikom. Tukaj V tem primeru pišem cron, da ga zažene vsakih 5 minut za sinhronizacijo podatkov.

*/5        *        *        *        *   rsync -avzhe ssh [email :/var/www/ /var/www/

Zgornji ukaz cron in rsync preprosto sinhronizira “/ var/www /” z glavnega spletnega strežnika na rezervni strežnik v vsakih 5 minutah. Konfiguracijo ure in lokacije mape lahko spremenite glede na vaše potrebe. Če želite biti bolj kreativni in prilagoditi z ukazom Rsync in Cron, si lahko ogledate naše podrobnejše članke na:

  1. 10 ukazov Rsync za sinhronizacijo datotek/map v Linuxu
  2. 11 primerov razporejanja Cron v Linuxu